Service Mesh 在华为公有云的实践

演讲大纲:

  • 简介
  • service mesh 在华为内部的技术演进
  • 实现一个service mesh
  • 使用service mesh 快速构建微服务
  • 生态与拓展
展开查看详情

1.Service Mesh在华为公 有云的实践 ⽥田晓亮 华为架构师

2.⽥田晓亮 华为 架构师 8年软件⾏行业经验,曾就职于三星,2012年进⼊入云计算领域,对PaaS, DevOps,APM有深⼊入的研究和实践经验。⽅方案⽀支撑近千台VM中应⽤用部署管理监 控 2016年加⼊入华为担任架构师,负责微服务的Go语⾔言开发框架及Service Mesh设计 和落地,Go语⾔言微服务框架被华为5G核⼼心⺴⽹网络采⽤用,Service Mesh服务商⽤用上 线公有云

3.• 简介 • Service Mesh在华为内部的技术演进 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展

4.我们在构建微服务,⽽而构建微服务是困难 的

5.微服务架构模式引⼊入的问题

6. 路由规则 • 引流 • ⽀支持权重 • 根据消费者信息或请求特征进⾏行引流 cookie:version=0.1 80% Provider 1.2 Consumer 0.1 Provider 1.2 Consumer 0.2 cookie:version=0.2 20% Consumer 0.2 Provider 1.3 Provider 1.3

7.Chassis

8.语⾔言开发框架 Go-kit Go-micro

9.还有其他解题思路么? • 多语⾔言SDK⽀支持 • 学习曲线 • 绑定特定技术栈,不容易切换⽅方案 • ⽼老旧单体应⽤用

10.抽象 Chassis L7 SpringMVC,VertX,beego L6 Json, Protobuf, XML 这⾥里呢? L5 Http 1/2, grpc L4 TCP L3-1 IP/Data link/Physical

11.Service Mesh • ⼀一种基础设施层,服务间的通信通过 Application Service Mesh进⾏行 Application Service Mesh • 可靠地传输复杂⺴⽹网络拓扑中服务的请 求,将服务变成现代的云原⽣生服务 Transport Transport Network Network • ⼀一种⺴⽹网络代理的实现,通常与业务服 务部署在⼀一起,业务服务不感知 Physical Physical • ⼀一种TCP/IP之上的⺴⽹网络模型

12.为什么使⽤用Service Mesh • ⽆无需多种语⾔言的微服务框架开发 • 对业务代码0侵⼊入 • 不适合改造的单体应⽤用 • 开发出开的应⽤用既是云原⽣生的⼜又具有独⽴立性

13.没有银弹 • 新的故障点 • ⼀一定程度的性能降低 • 侵⼊入式框架有更强的定制和扩展能⼒力 • 部署复杂性

14.• 简介 • Service Mesh在华为内部的技术演进 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展

15.第⼀一代:基于Nginx的微服务代理 • 2013年,微服务开发平台中的组 件,公司内部某电信业务 • 400多个微服务,800左右实例, 200多个数据中⼼心

16.Sidecar模式 • 基于容器的分布式系统设计模式 • 容器可以共享存储与⺴⽹网络的能⼒力 应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷

17.Sidecar优势 • 以容器作为基础打包单元,可以分给不同的团队进⾏行开发测试 • 可重⽤用 • 以容器作为错误边界,使服务能够正确推出 • 独⽴立回滚与更新

18.第⼆二代:HSA SideCar • 2016年,基于Java 微服务 框架开发 • 提供SOAP协议转换 • 与微服务部署在⼀一个Pod • 占⽤用资源很⾼高

19. Mesher • Service Mesh的⼀一种实现 • 基于⾃自研的Go语⾔言微服务框架(即将开源)开发 • 使⽤用CSE注册中⼼心与配置中⼼心 • 以Sidecar的⽅方式部署在微服务所运⾏行的环境中,也可以 PerHost模式运⾏行 • ⽀支持多种部署⽅方式 • 占⽤用资源⼩小(闲置10多M,并发运⾏行时30多M)

20.• 简介 • Service Mesh在华为内部的技术演进 • 实现⼀一个Service Mesh • 使⽤用Service Mesh快速构建微服务 • ⽣生态与扩展 • 与PaaS平台结合

21.整体架构 CSE as control plane Monitoring Service Service Service Service Zipkin Service center Mesher Mesher Mesher Mesher Huawei APM Config center Prometheus Service Service Service Service Governance UX Grafana Mesher Mesher Mesher Mesher Infrastructure Physical Kubernetes VM FusionSphere ServiceStage

22.Design Goal • 尽可能提供定制化 • 减少对业务影响 • ⾼高性能 • 使服务可视化 • 使服务更具弹性

23.Data Plane 即Mesher组件本⾝身,对所有请求进⾏行处 ServiceC ServiceD 理 Mesher Mesher • 注册发现服务 • 执⾏行路由策略 ServiceA ServiceB • 负载均衡 Mesher Mesher • 透明TLS传输 • ⽣生成监控数据

24.Control Plane Service Center Scheduler 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 Governance UX Mesher Mesher Mesher • 注册中⼼心 Mesher Config Center LB • 下发配置 RouteRule • 对接监控服务 Circuit Breaker • 调度引擎 Rate Limiting

25.调⽤用场景1 ServiceA ServiceB http://127.0.0.1:30101 http://127.0.0.1:8080 https://10.100.2.3:30101 Mesher Mesher • 透明TLS传输能⼒力,⽤用户可托管⾃自⼰己的证书 • 提供者可获得服务端限流能⼒力和处理链功能

26.调⽤用场景2 ServiceA ServiceB SDK Mesher ServiceC • 消费者与Mesher⼀一起部署 • 提供者为Java或者Go语⾔言微服务框架开发 • 提供者为普通的业务应⽤用

27.调⽤用场景3 ServiceC ServiceB ServiceA SDK Mesher • 提供者都与Mesher部署 • 消费者为Java或者Go语⾔言微服务框架开发 • 消费者不使⽤用框架

28. 接受本地请求 Order Mesher Destination Resolver Order http://order/list Transport Handler Chain SockShop Web Mesher Http Server Route Rule Rate limiting Circuit Load balancing Tracing Transport Source Resolver Order Mesher Archiaus-go Registry Log Metric Collector Config center Service center Huawei APM 可定制 固定组件

29.接受远程请求 SockShop Web Transport Handler Chain http://10.100.2.13:30101/list Mesher Source Resolver Order Http Server Tracing Rate limiting Local selector Transport Archiaus-go Registry Log Metric Collector Config center Service center Huawei APM 可定制 固定组件