热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

智能家居巨头Aqara基于KubeSphere打造物联网微服务平台

背景

从传统运维到容器化的 Docker Swarm 编排,从 Docker Swarm 转向 Kubernetes,然后在 Kubernetes 运行 SpringCloud 微服务全家桶,到最终拥抱 KubeSphere,并基于 KubeSphere 打造绿米联创自己的物联网微服务平台,绿米联创已在生产环境中稳定运行 KubeSphere 和 Kubernetes 半年多时间,积累了丰富的微服务应用开发以及应用平台运维的经验。本文由深圳绿米联创科技有限公司的运维工程师魏恒生与徐洋冰投稿,图片素材来自 Aqara 官网(https://www.aqara.com/)。

Aqara 简介

深圳绿米联创科技有限公司(简称“绿米联创”,官网 https://www.aqara.com/)成立于 2009 年,总部位于深圳,覆盖超低功耗无线传感器、Zigbee 无线网络技术、智能家居网关边缘计算技术、算法与 AI、平台开放与接入能力等方面。2016年,深圳绿米联创科技有限公司推出了“全屋智能”理念的自有品牌 Aqara(Aqara 源自拉丁语 acutula,意为聪明,ARA 是回家的意思,Aqara 将两者结合意味着家庭越来越智能化)。Aqara 致力于通过一系列智能家居产品技术以及服务商模式,为用户构建更加智慧的生活。Aqara 旗下产品包括温度、湿度、门窗、人体、水浸、烟雾、燃气、光照和睡眠等各类传感器,以及智能开关、插座、窗帘电机、空调控制器、调光器、门锁等各类智能控制器,目前同时支持行业应用的自动化控制与大数据分析平台。

Aqara 秉持着“引领物联技术,服务千家万户”的愿景,坚持“持之以恒追求用户体验 坚持不懈创造用户体验”的使命,在智能家居行业不断创新,最终成为行业领军品牌。

从传统运维迈向容器技术

一入运维深似海,魏恒军作为一名多年工作经验的资深运维工程师,从最初的扛机器上机房,在工作中生疏的操作着网线钳,麻木地安装着操作系统,费力地部署应用程序和调试着应用服务,以及在那黑夜因一连串告警惊醒,永远感觉自己是个伟大消防员。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

Data Center(图片来自 Unsplash)

技术的快速迭代更新,迎来了微服务,迎来了虚拟化技术,也迎来了容器化与云原生技术。运维也从最初的人肉运维发展到脚本运维,再到平台运维,最后到现在的容器运维。本人运维过的机器,不知不觉也从个人维护几十台到现在的近千台服务器,传统的应用部署方式,每次迭代一次,都需要花费大量的时间去准备配置文件、操作注意事项、数据库等等,然后再经过一群人层层审批,再发到线上,这期间已经过了半个月,在这个互联网比速度的时代,显然这种传统方式劣势非常明显,而容器应时势而生。

使用 Docker Swarm 搭建容器编排系统

传统部署应用方式,资源利用率非常低,时长让老板们本狠狠地咬牙切齿。在这种情况下,本人在 2017 年开始接触容器,尝试着在公司上开发与测试环境。当时直接给公司开发、测试环境的资源利用率提高了 50%。到 2018 年,开始在生产环境用 Docker Swarm 排编容器,更显著提高了资源的利用率。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

从命令行到脚本化,最后到平台化,一路走来步步艰辛。当刚开始加入绿米大家庭,发现绿米运维还处在原始野人阶段,回顾四周,我只能屡起袖子顶着压力分析情况,发现绿米的微服务架构 80% 以上都是偏内存型服务,资源利用率非常低,尤其是 CPU、磁盘存储,十分让人懊恼。且迭代速度也不尽人意。静心思静,决定大改这种状况。从持续集成开始、Jenkins、Harbor 搭建,到测试环境 Docker Swarm 排编。这大大改善了测试环境的交付速度以及交付质量,但慢慢发现,业务量曾涨速度太快,Docker Swarm 排编劣势明显:

  • 跨平台支持效果差;

  • 业务量访问高峰期的时候,内部 Service 通信的时候就会出现超时的问题

从 Docker Swarm 全面转向 Kubernetes

三架马车时代已是过去式,Kubernetes 击败 Docker Swarm 和 Mesos 成为容器编排领域的事实标准。因此,我们的业务架构从 Docker Swarm 全面转向 Kubernetes。选择 Kubernetes 几年前就在心里扎根,尤其是近来需要运维近千台机器的时候,一个运维友好与统一的容器云平台成为了我们基于 kubernetes 大规模落地云原生微服务应用的刚需。 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

开源容器平台选型:拥抱 KubeSphere

但是对于原生安装与运维 Kubernetes 还是借助第三方开源方案,我们经过反复的琢磨,最终选择了使用第三方开源项目。看来看去 Rancher 和 KubeSphere 成了考虑的选型。

KubeSphere 是由青云 QingCloud 发起并联合多个企业共同参与开发的开源项目。对比 Rancher 和 KubeSphere,后者不仅有清爽的操作界面,向导式的资源创建方式,完全以应用为中心,更倾向于 Kubernetes 集群资源的管理,提供优雅的 API 接口,并且在 Kubernetes 之上集成与包装了我们运维开发常用的功能组件,例如 Jenkins、Harbor、Promethues、Apache SkyWalking,还支持在任何基础设施环境部署,所以我们毫不犹豫的选择了 KubeSphere 容器平台。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

KubeSphere 跨多云平台的兼容、以及支持多插件的选择,在使用过程中加深了我们对 Kubernetes 各个模块的理解、推进了我们对生产环境落地 Kubernetes 容器编排的步伐。并且,KubeSphere 解放了我们运维日常面临的重复的工作,减低了应用的整体维护成本。是运维的一把利器,是互联网公司的一道福音。 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

绿米物联网微服务平台部署架构

目前公司主要是在腾讯云上用 7 台服务器来构建集群,集群机器的配置规格如下。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

目前所有的无状态的服务都运行在 KubeSphere,有状态的数据存储类服务,我们使用云上的 Redis、HBase、Flink、Elasticsearch、MySQL 等集群服务。

截止目前为止已经运行半年多且无大问题出现,这推动我们计划近期把公司开发、测试、生产环境中所有的有状态和无状态服务全部迁移到 KubeSphere 上去。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

绿米物联网微服务平台设计架构

首先可以看看绿米物联网的业务架构图,目前绿米海外地区的服务,基本上全部都运行在 KubeSphere 之上,包括 Gateway 微服务路由调度、Push、Send 推送、iftt 定时等等。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台 由于我们的业务以 Java 为主,因此绿米物联网微服务平台是基于 SpringCloud 框架进行微服务化,使用 Apollo 分布式配置中心管理配置,Eureka 注册中心服务注册与发现。

智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台 结合 Ribbon、Feign 实现微服务负载均衡以及服务调用。同时,我们使用 Hystrix 线程池实现隔离、熔断以及降级、sentinel 限流,而 springcloud-gateway 网关路由则用来实现路由调度,日志使用的是经典的 ELK 组合,APM 使用 SkyWalking 作为 Java 微服务分布式系统的应用程序性能监视工具。 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

如上图所示,IaaS 我们使用的是腾讯云,Platform (平台层)主要是物联网业务平台的微服务,Platform 层的绝大多数应用都运行在 KubeSphere 容器平台之上,所有子设备通过 Zigbee 协议 连接 Hub 设备,即智能网关、智能插座网关、摄像头等,Hub 设备通过 RPC 协议与绿米智能家居的微服务平台通信,微服务平台为 App、SaaS 等应用提供数据,反向应用通过一系列安全鉴权、认证来调用绿米微服务平台,实现控制智能家居设备。服务层拥有链路追踪、基础监控、CI/CD 等插件。

KubeSphere 让我们对 Kubernetes 的入门变得更简单、加快推进生产环境 Kubernetes 的上线,对业务迭代有明显的效率提高,并且能够让研发更快地随意切换部署验证各个应用的功能模块。

截止目前为止,这一套物联网微服务平台已经在我们绿米联创的生产运行半年多且无大问题出现,因此,我们计划在近期把公司开发、测试、生产环境中所有的有状态和无状态服务全部迁移到 KubeSphere 上去。

问答

Q:使用过程有没有遇到什么问题?

A: 有的,比如 DevOps 流水线解决 War/Jar 包发布问题。DevOps 流水线既要解决打包镜像到镜像仓库,同时要兼容老业务 war 包通过 Ansible 分发的部署方式,起初一直没有解决方案。

经过一番研究后,我理解整个 DevOps 的流程是 jenkins-agent 拉取对应模板的 Pod,跑完 Pipline 的各个流程,但问题又来了,Java 模板的 maven Pod 执行完之后退出了,却没法获取到编译后的 Jar 包。

最终我们发现,可以登录 Jenkins 服务端,选择 Manage Jenkins => Configure System,找到对应的模板,如截图所示操作,在 Pipline 里面指定 mav package -Dpath=${target_path},方可解决上述解决问题!

Q:什么样的应用开发平台,才能承载智能家居的未来?

A:完善的审计、监控告警,权限分发,并且能自定义优雅的资源扩缩容策略,优雅的插拔式插件个性化定制,平台自身的常规问题自查策略,以及清晰明了的日志,好在这一切都在 KubeSphere 容器平台支持了。

Q:KubeSphere 哪些功能或设计还需要改进?

A:建议如下:

  • 界面语言切换太隐蔽;
  • Granfana 模板集成灵活度可以再多一点;
  • 对 Kubernetes 节点扩容可以变得更简单一点、最好支持界面化节点扩容。
  • 创建 pipeline 支持 copy from;
  • 运行 pipeline 支持多选批量;
  • api文档最好有些 example,现在的 Swagger 很多接口必选参数写的看不明白,可读性不太好

后记

非常感谢绿米联创的两位用户带来的物联网微服务平台在智能家居行业的落地实践分享!从传统运维到容器化的 Docker Swarm 编排,从 Docker Swarm 转向 Kubernetes,然后在 Kubernetes 运行 SpringCloud 微服务全家桶,到最终拥抱 KubeSphere,并基于 KubeSphere 打造绿米联创自己的物联网微服务平台,这也是国内一部分企业的应用微服务平台的演进过程。

如果大家对绿米联创的物联网微服务平台的落地实践的详细实现非常感兴趣,希望进一步了解以及跟两位工程师交流,欢迎大家加入 KubeSphere 开源社区交流群。我们后续会根据大家的需要邀请两位工程师为大家做一次线上的技术直播分享。另外,如果您希望分享 KubeSphere 和 Kubernetes 在您企业环境的落地实践,我们也非常欢迎您投稿!

更多内容可以访问 www.qingcloud.com


推荐阅读
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • vivo Y5s配备了联发科Helio P65八核处理器,这款处理器采用12纳米工艺制造,具备两颗高性能Cortex-A75核心和六颗高效能Cortex-A55核心。此外,它还集成了先进的图像处理单元和语音唤醒功能,为用户提供卓越的性能体验。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
author-avatar
混迹潘_442
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有