从0到1基于Kitex+Istio 的微服务系统建设
如果无法正常显示,请先停止浏览器的去广告插件。
1. 从0到1基于Kitex+Istio
的微服务系统建设
Construct - Jason
2024/05/25
2. 分享人 - Jason
Construct
Jason
3. AGENDA
议题
01. 从0到1的微服务系统
02. 可复用性 & 自动化流程
03. 流量管理以及泳道系统
04. Mesh可观测性
05. 为什么选择CloudWeGo
4. 01
从0到1的微服务系统
背景、约束和应对策略,选型&架构图
5. 服务端架构的发展
6. 背景&约束&选型
存量系统的衔接和处理
gRPC vs Kitex
Service Mesh
7. Kitex + Istio
Kitex 如何在 Istio 落地?
1. Kitex Server side:
2. Kitex Client side:
8. Architecture
1. 新老系统的连接
2. 定时任务 CronJob
3. Namespace
9. 02
可复用性 & 自动化流程
Reference impl., Common lib, Pipeline, Registry
10. 可复用性
1. Reference Implementation
2. CloudWeGo 脚手架工具(推荐)
3. Common lib
11. 可复用性
4. Kitex 官方插件
12. Pipeline
代码合并后,流水线自动触发, CI/CD极大提升了研发效率。
13. Pipeline - Code Check
MR合并前卡点:nilaway code check 流水线;约降低panic率 90%
14. 03
流量管理以及泳道系统
Traffic Management, SwimeLane
15. Istio
16. 流量管理
1. VirtualService
2. DestinationRule
17. Kitex 在 Istio 下的服务发现
1. Kitex 本身支持多种服务发现机制
Service Discovery | CloudWeGo
2. 方案:依赖 Istio,并最终依赖 k8s;解耦。
可以根据具体情况灵活决策,Kitex 支持度较高。
18. 流量管理-Circuit Breaker
Kitex 服务熔断限流,统一由 Istio 接管
19. Kitex-Circuit Breaker[可选]
20. 泳道系统
1. 微服务下,开发同学只需
要关心正在开发的微服务,并
不需要把微服务集群起起来。
2. test 环境或者 ppe环境,
需要做对应的流量控制:通过
http header 的形式,对流量
进行打标染色
3.在流量调度层面,只会把染
色的流量调度到染色的微服务,
所以线上用户不会受到影响
21. Kitex传递泳道上下文
HTTP Header:
Kitex Context:
Istio VirtualService:
22. 04
Mesh可观测性
Tracing & pyroscope & prometheus & grafana
23. Tracing
1. What is tracing?
相当于给请求做了个 CT scan;
可以知道请求链路上的所有信息:
耗时,执行顺序,具体方法等
24. Jaeger & OpenTelemetry
Jaeger is a distributed tracing platform released as open source by Uber Technologies.
OpenTelemetry 是一套 API、SDK 和工具的集合, 是一个开放标准
和工具集。使用它来对软件进行插桩、生成、收集和导出遥测数据(指
标、日志和追踪),以帮助您分析软件的性能和行为。
25. Kitex with Jaeger & OpenTelemetry
基于 Jaeger 和 OpenTelemetry 初始化 trace
26. Kitex with Jaeger & OpenTelemetry
下游 Kitex Server 通过定制 middleware,解析 trace 信息并传递
27. Kitex & OpenTelemetry[备选]
28. Kitex & Pyroscope - Profiling
29. Kitex & Pyroscope - Profiling
30. Prometheus & Grafana
Istio 对 Prometheus 有很好的官方支持,详情参考:Istio / Prometheus。因此,可以在全局维度,进行监控大盘的
制定;后续新微服务增加自动继承。
31. Istio-level 全局通用报警
32. Kitex & Prometheus[备选]
33. 05
为什么选择 CloudWeGo
34. 为什么选择 CloudWeGo
1. 高并发性能出色: 2倍
2. 高可用:>99.999%
3. 稳定:作为框架,稳定到几乎感觉不到它的存在。
4. 有力的官方支持:工作时间内承诺会在1-2小时内跟进处理
5. 社区繁荣: 全球 16 万+用户关注,以及 2 万+ GitHub star
35. THANKS