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


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

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

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


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

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

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


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

----智能家居巨头 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模板的mavenPod执行完之后退出了 , 却没法获取到编译后的Jar包 。

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


推荐阅读