背景:从传统运维到容器化的 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 秉持着“引领物联技术,服务千家万户”的愿景,坚持“持之以恒追求用户体验 坚持不懈创造用户体验”的使命,在智能家居行业不断创新,最终成为行业领军品牌。从传统运维迈向容器技术一入运维深似海,魏恒军作为一名多年工作经验的资深运维工程师,从最初的扛机器上机房,在工作中生疏的操作着网线钳,麻木地安装着操作系统,费力地部署应用程序和调试着应用服务,以及在那黑夜因一连串告警惊醒,永远感觉自己是个伟大消防员。Data Center(图片来自 Unsplash)技术的快速迭代更新,迎来了微服务,迎来了虚拟化技术,也迎来了容器化与云原生技术。运维也从最初的人肉运维发展到脚本运维,再到平台运维,最后到现在的容器运维。本人运维过的机器,不知不觉也从个人维护几十台到现在的近千台服务器,传统的应用部署方式,每次迭代一次,都需要花费大量的时间去准备配置文件、操作注意事项、数据库等等,然后再经过一群人层层审批,再发到线上,这期间已经过了半个月,在这个互联网比速度的时代,显然这种传统方式劣势非常明显,而容器应时势而生。使用 Docker Swarm 搭建容器编排系统传统部署应用方式,资源利用率非常低,时长让老板们本狠狠地咬牙切齿。在这种情况下,本人在 2017 年开始接触容器,尝试着在公司上开发与测试环境。当时直接给公司开发、测试环境的资源利用率提高了 50%。到 2018 年,开始在生产环境用 Docker Swarm 排编容器,更显著提高了资源的利用率。从命令行到脚本化,最后到平台化,一路走来步步艰辛。当刚开始加入绿米大家庭,发现绿米运维还处在原始野人阶段,回顾四周,我只能屡起袖子顶着压力分析情况,发现绿米的微服务架构 80% 以上都是偏内存型服务,资源利用率非常低,尤其是 CPU、磁盘存储,十分让人懊恼。且迭代速度也不尽人意。静心思静,决定大改这种状况。从持续集成开始、Jenkins、Harbor 搭建,到测试环境 Docker Swarm 排编。这大大改善了测试环境的交付速度以及交付质量,但慢慢发现,业务量曾涨速度太快,Docker Swarm 排编劣势明显:

  • 跨平台支持效果差;

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

从 Docker Swarm 全面转向 Kubernetes三架马车时代已是过去式,Kubernetes 击败 Docker Swarm 和 Mesos 成为容器编排领域的事实标准。因此,我们的业务架构从 Docker Swarm 全面转向 Kubernetes。选择 Kubernetes 几年前就在心里扎根,尤其是近来需要运维近千台机器的时候,一个运维友好与统一的容器云平台成为了我们基于 kubernetes 大规模落地云原生微服务应用的刚需。开源容器平台选型:拥抱 KubeSphere但是对于原生安装与运维 Kubernetes 还是借助第三方开源方案,我们经过反复的琢磨,最终选择了使用第三方开源项目。看来看去 Rancher 和 KubeSphere 成了考虑的选型。KubeSphere 是由青云 QingCloud 发起并联合多个企业共同参与开发的开源项目。对比 Rancher 和 KubeSphere,后者不仅有清爽的操作界面,向导式的资源创建方式,完全以应用为中心,更倾向于 Kubernetes 集群资源的管理,提供优雅的 API 接口,并且在 Kubernetes 之上集成与包装了我们运维开发常用的功能组件,例如 Jenkins、Harbor、Promethues、Apache SkyWalking,还支持在任何基础设施环境部署,所以我们毫不犹豫的选择了 KubeSphere 容器平台。KubeSphere 跨多云平台的兼容、以及支持多插件的选择,在使用过程中加深了我们对 Kubernetes 各个模块的理解、推进了我们对生产环境落地 Kubernetes 容器编排的步伐。并且,KubeSphere 解放了我们运维日常面临的重复的工作,减低了应用的整体维护成本。是运维的一把利器,是互联网公司的一道福音。绿米物联网微服务平台部署架构目前公司主要是在腾讯云上用 7 台服务器来构建集群,集群机器的配置规格如下。目前所有的无状态的服务都运行在 KubeSphere,有状态的数据存储类服务,我们使用云上的 Redis、HBase、Flink、Elasticsearch、MySQL 等集群服务。截止目前为止已经运行半年多且无大问题出现,这推动我们计划近期把公司开发、测试、生产环境中所有的有状态和无状态服务全部迁移到 KubeSphere 上去。绿米物联网微服务平台设计架构首先可以看看绿米物联网的业务架构图,目前绿米海外地区的服务,基本上全部都运行在 KubeSphere 之上,包括 Gateway 微服务路由调度、Push、Send 推送、iftt 定时等等。由于我们的业务以 Java 为主,因此绿米物联网微服务平台是基于 SpringCloud 框架进行微服务化,使用 Apollo 分布式配置中心管理配置,Eureka 注册中心服务注册与发现。结合 Ribbon、Feign 实现微服务负载均衡以及服务调用。同时,我们使用 Hystrix 线程池实现隔离、熔断以及降级、sentinel 限流,而 springcloud-gateway 网关路由则用来实现路由调度,日志使用的是经典的 ELK 组合,APM 使用 SkyWalking 作为 Java 微服务分布式系统的应用程序性能监视工具。如上图所示,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 很多接口必选参数写的看不明白,可读性不太好。About KubeSphereKubeSphere (https://kubesphere.com.cn)是在 Kubernetes 之上构建的以应用为中心的开源容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 已被 Aqara 智能家居、本来生活、新浪、云智汇、微众银行、VNG Corporation、Radore 等海内外数千家企业采用。KubeSphere 提供了运维友好的向导式操作界面和丰富的企业级功能,包括 Kubernetes 资源管理、DevOps (CI/CD)、应用生命周期管理、微服务治理 (Service Mesh)、多租户管理、监控日志、告警通知、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。

微服务编排 conductor_智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台相关推荐

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

    背景 从传统运维到容器化的 Docker Swarm 编排,从 Docker Swarm 转向 Kubernetes,然后在 Kubernetes 运行 SpringCloud 微服务全家桶,到最终拥 ...

  2. 视频教程-5G物联网云平台智能家居项目30天搞定-物联网技术

    5G物联网云平台智能家居项目30天搞定 我叫连志安,现任职广东长虹技术研究所(国企).之前在康佳集团(国企).CVTE(上市公司)等公司任职.负责过Android TV.智能网关.路由器.智能家居.安 ...

  3. wifi协议_物联网网关智能家居工业4G路由器通用的物联网WiFi模块 MQTT/TCP协议 Linux嵌入式...

    物联网网关智能家居/工业4G路由器通用的物联网WiFi模块 MT7688 支持两种运作模式:IoT gateway 模式与 IoT device 模式. 在 IoT gateway 模式中,可透过 P ...

  4. 基于智能家居控制器的智能家居智能化控制:基于强化学习技术

    文章目录 <基于智能家居控制器的智能家居智能化控制:基于强化学习技术> <基于智能家居控制器的智能家居智能化控制:基于强化学习技术> 引言 1.1. 背景介绍 随着科技的发展, ...

  5. 华为鸿蒙和美的,美的与华为鸿蒙合作,为智能家居领域带来更深度的场景与服务...

    描述 物联网时代下,智能家居已成为大势所趋.近日华为全屋智能及智慧屏旗舰新品发布会,让消费者和行业的目光再次聚焦到智能家居领域.此次发布会的重头戏,莫过于鸿蒙操作系统在智能家居领域的应用和落地. 4月 ...

  6. java接口服务编排_GOKU API Gateway CE V3.1.0 发布:新增服务编排、配置版本管理等...

    Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang 开发的微服务网关,能够实现高性能 HTTP API 转发.服务编排.多租户管理.API 访问权限控制等目的,拥 ...

  7. DIY智能家居设备:基于esp32和阿里云云智能APP完成智能灯泡的开发

    esp32 开发 一. 芯片介绍 ESP32 是一套 Wi-Fi (2.4 GHz) 和蓝牙 (4.2) 双模解决方案,集成了高性能的 CPU 内核.超低功耗协处理器和丰富的外设.ESP32 采用 4 ...

  8. 开源 | 智能家居场景,基于 AriKiss 配网的微信小程序

    一次偶然的机会,群里某开发者问我为什么他的微信配网出问题了,我跟着回复了些问题,发现并不是那么简单,于是乎帮这位朋友适配了下并成功了,决定在全网首个开源可实现Airkiss配网的微信小程序. 获取源码 ...

  9. android 智能家居 设计 实现,基于Android系统的智能家居APP设计与实现.doc

    PAGE 22 PAGE 21 基于Android的智能家居APP的设计与实现 华北电力大学硕士学位论文 摘 要 - PAGE VI - PAGE I 摘 要 随着科学技术的不断发展,人们生活水平也逐 ...

最新文章

  1. oracle12 java_java – 无法使用12c jar创建Eclipse数据源到Oracle 12c.不过11g的作品
  2. python七夕快乐_python编写简单抽奖系统
  3. [转]Apache Commons IO入门教程
  4. minAreaRect函数
  5. Scrapy Django项目
  6. 毕业后两三月的本科毕业生,他们都怎么样了
  7. 网站开发技巧参考大全 event js
  8. grideh SelectedRows Bookmark
  9. linux cd是什么目录,linux cd是什么意思?
  10. rocketmq错误迁移导致问题排查
  11. BZOJ 5442: [Ceoi2018]Global warming
  12. 互联网巨头“赢家通吃”,会产生哪些严重后果?
  13. 文件及文件夹 压缩 下载
  14. iPad/Iphone抓包
  15. 选择灰盒安全测试工具,看准以下几点
  16. jenkin swindows启动_windows启动过程
  17. Ubuntu18.04安装libsdl1.2-dev(亲测可行)
  18. 蓝牙ibeacon技术实现低成本、高精度室内定位
  19. GCC背景强大? 探寻linux系统下GCC编译器的背后故事!
  20. Oracle学习——表空间管理(二)

热门文章

  1. 单元测试框架和覆盖率统计原理简析
  2. unity项目是啥_黑曜石的“永恒项目”是使用Unity的最新Kickstarter项目
  3. 计算机网络 在线实验室,计算机网络在计算机实验室的应用研究
  4. ipad和android手机号码,如何用iPad播放Android手机上的视频
  5. 辩护律师和会见律师_我是律师 现在我是一名数据工程师。 这是我的故事。
  6. 戴尔r410服务器系统安装教程,DELL R410服务器安装esxi虚拟机系统
  7. 用AD设计PCB时,原理图是从别的工程中复制过来的,在工程原理图 Compile时会出现 Unique ID 重复的错错...
  8. MySQL Workbench 安装及使用
  9. 硬币翻转问题(一个比较简单的题)
  10. UNIX的段错误和总线错误和Windows的保护性异常