从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