目录
1. 简介
微服务的调用链监控是解决微服务的复杂性带来的一系列问题的强有效手段之一,从一下几个方面来先理解微服务调用链监控相关:
- 简介
- 什么是调用链
- 为什么要监控调用链
- 要监控哪些方面
- 调用链监控原理是什么
5.1 监控原理图 - 有什么技术解决方案
6.1 解决方案
6.2 对比 - 监控技术选型如何选择
2. 什么是调用链
一个业务功能可能需要多个服务协作才能实现,一个请求到达服务A,服务A需要依赖服务B,服务B又依赖服务C,甚至C仍需依赖其他服务,形成一个调用链条,即调用链。
3. 为什么要监控调用链
上图传递了一个信息,就是微服务的复杂性
- 出现问题后,定位困难,需要对整个调用链路有个完善的监控
- 链路复杂,需要清晰的链路图谱反映服务之间的依赖、调用关系
- 整体系统性能及运行情况,需要明确的体现,才能根据实际情况调整资源
4. 要监控哪些方面
- 图形化展示整个调用链路
- 系统的性能指标
- 健康状况
- 基础告警
5. 调用链监控原理是什么
5.1 监控原理图
- RootSpan会生成一个Trace id以及parent span id
- Trace id是整个调用链的监控跟踪ID
- span是服务中一次请求以及对应响应这个span的id
类比于Chrome加载网页时,加载各种资源消耗时间:
6. 有什么技术解决方案
6.1 解决方案
- CAT (Central Application Tracking):由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面的监控服务和决策支持。
- Zipkin:分布式跟踪系统;它可以帮助收集时间数据,解决在microservice架构下的延迟问题;它管理这些数据的收集和查找;Zipkin的设计是基于谷歌的Google Dapper论文。
- Pinpoint:Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java. http://naver.github.io/pinpoint/
6.2 对比
维度 | CAT | Zipkin | PinPoint |
---|---|---|---|
调用链可视化 | 有 | 有 | 有 |
报表 | 非常丰富 | 少 | 中 |
ServerMap | 简单依赖图 | 简单 | 好 |
埋点方式 | 侵入 | 侵入 | 入侵入,字节码增强 |
Heartbeat支持 | 有 | 无 | 有 |
Metric支持 | 有 | 无 | 无 |
Java .Net客户端 | 有 | 有 | 只有Java |
Dashboard支持中文 | 好 | 无 | 无 |
社区支持 | 好,文档丰富 | 好,文档一般,暂无中文 | 一般,文档缺,无中文 |
国内案例 | 携程、点评、陆金所、猎聘网 | 京东、阿里不开源 | 暂无 |
源头祖先 | eBay CAL(Centrialized Application Logging) | Google Dapper | Google Dapper |
7. 监控技术选型如何选择
未实际应用,仅列出自己的选择标准:CAT
- 文档:CAT
- 社区活跃度:CAT
- 中文支持:CAT
- 调用链可视化:都具备
- 心跳链接:CAT、PinPoint
- Metric:CAT
- 报表:都有