IoT微服务容器化之旅

2020-02-23 141浏览

  • 1. IoT微服务容器化之旅 黄川 2019-12-28
  • 2. 目录 1 公司简介 2 K8S核心概念 3 业务迁移实践 4 未来
  • 3. 1 公司简介
  • 4. G7 & 大数据 全球最大 物流车队综合服务平台 G7基于行业独有的物联网技术平台,向大型 130 万+ 7 万+ 25 万+ 车辆 客户 日均运输线路 7.8 千万+ 1 .3亿公里+ 6.8T+ / 天 日均事件 日均里程 日均数据量 21 亿+ 40个百分点 1.2万+ 平台月结算金额 事故赔付率下降 油气站点数 物流企业和数以万计的车队提供车队综合管 理与服务解决方案,覆盖安全、结算、金融、 智能装备等车队运营全流程。 43 亿+ 累计发放贷款数
  • 5. API 日调用量 6200 万 G7S 管车 APP 小雪平台
  • 6.
  • 7. 2 K8S核心概念
  • 8. 物理机时代 虚拟机时代
  • 9. Service对外服务网络模型 同一组pod,对外提供服务的流量入口,提供服务注册发现、负载均衡的能力 ClusterIP (ipvs) pod NodePort (kube-proxy) pod pod pod SLB NodePort (kube-proxy) pod pod NodePort (kube-proxy) pod pod
  • 10. 网络模型 虚拟机、容器网络直接互通, 提升网络性能 解决非K8S微服务体系中的注册 机制中节点注册信息问题 Router 注册路由 VSwitch VSwitch calicoif vm1 vm2 RDS1 calicoif pod1 vm1 eth0 calicoif pod2 calicoif pod3
  • 11. 3 业务迁移实践
  • 12. 设备终端接入云平台 云平台 MQ MQ/HTTP/RPC 大多基于TCP/UDP协议,由设备厂商自定义 接入平台 终端到云平台协议进行解析 TCP/UDP 云平台下发消息
  • 13. 分支模型 分支 自动部署 类型 develop 是 持久 release/x.x.x 是 临时 master 否 持久 hotfix/x.x.x 是 临时
  • 14. Project
  • 15. GitLab-CI示例 stages: - test - build - ship - deploy cache: untracked: true key: ${CI_BUILD_REF}_${CI_BUILD_REF_NAME} job_master_build: stage: build image: ${G7PAY_DOCKER_REGISTRY}/${BUILDER_GOLANG} environment: name: test script: - project run build only: - master job_master_deploy: stage: deploy image: ${G7PAY_DOCKER_REGISTRY}/${BUILDER_RANCHER} environment: name: test script: - project deploy --env ${CI_ENVIRONMENT_NAME} only: - master
  • 16. 容器中的微服务 Spring Cloud Eureka Container Container sidecar ServiceB(PHP) ServiceA(Java)
  • 17. 容器化JVM参数 内存实际大小 = 堆内存 + 线程数 * 线程栈大小 + 永久代 + 堆外内存 2G + 1000 * 256K + 256M + (~2G) = 2.5G~4.5G JVM 对容器的支持: JDK8 u131+/jdk9 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap JDK11 -XX:+UseContainerSupport
  • 18. 开发规范
  • 19. 单元测试规范
  • 20. 日志 等级 说明 debug 程序开发调试 info 记录一些日志信息 统一日志采集 notice 需要注意(应用访问日志) 应用保障日志通过stdout、stderr输出 warning 警告(有可能出现程序故 障) 统一日志采集配置模板 error 致命错误(程序已经无法 正常运行) critical 危险的错误(影响关键业 务) alert 必须报警(报警) emergency 紧急处理 (报警必须及时 处理)
  • 21. 监控 业务监控 日志监控 应用性能监控 Prometheus、 ELK 天枢(Cat) Pod Kubernetes Node(VM/物理机) Prometheus
  • 22. 应用性能监控
  • 23. 平台服务架构 油感设备 视频设备 协议解析中心 消息交互中心 升级部署中心 消息转发中心 里程数据 打卡数据 便携设备 ADAS G7盒子 Eaconn IOT容器化接入平台 油耗数据 EMS Rancher容器管理平台 FMS 天眼设备 TQ设备 清研设备 其他设备 轨迹数据 ....
  • 24. 容器接入原则 • 基础镜像统一由运维提供,采用多阶段构建减少镜像大小 • 按照产品划分命名空间,命名空间指定配额限制 • 产品下具体应用放入对应命名空间 • 应用配置具体的request、limit进行资源限制,保障集群服务可用性 • 应用推荐配置liveness、readness用于保障服务流量可用性 • 每个产品使用独立 slb、独立ingress controller,保障产品流量之间隔离
  • 25. 镜像多阶段构建
  • 26. 避免混用SLB SLB 192.168.20.101 xxx.huoyunren.com/app2 xxx.huoyunren.com/app1 K8S APP2 APP1 POD POD ECS1 ECS2
  • 27. 4 未来
  • 28. 1、完成对Rancher容器平台到K8S的迁移 2、更完善的CI/CD工具 3、完善以应用维度的监控系统,应用健康状况 4、支持更多样化的日志采集、统一日志规范、及完善的链路跟踪体系
  • 29. The End