什么是调用链
一个业务功能可能需要多个服务协作才能实现,一个请求到达服务A,服务A需要依赖服务B,服务B又依赖服务C,甚至C仍需依赖其他服务,形成一个调用链条,即调用链。
微服务为什么要使用调用链
微服务是一个特别复杂的系统,微服务存在一下几个问题:
- 出现问题后,定位困难,需要对整个调用链路有个完善的监控
- 链路复杂,需要清晰的链路图谱反映服务之间的依赖、调用关系
- 整体系统性能及运行情况,需要明确的体现,才能根据实际情况调整资源
要监控哪些方面
- 图形化展示整个调用链路
- 系统的性能指标
- 健康状况
- 基础告警
技术解决方案优缺点
点评CAT | open Zipkin | Pinpoint | |
---|---|---|---|
调用链可视化 | 有 | 有 | 有 |
聚合报表 | 非常丰富 | 少 | 中 |
ServerMap | 简单依赖图 | 简单 | 好 |
颗粒度 | 侵入,代码级 | 侵入, 接口级 | 方法级 , 非侵入字节码增强 |
heartbeat支持 | 有 | 无 | 有 |
Metric支持 | 简单 | 无 | 无 |
告警支持 | 支持 | 无 | 支持 |
多语言支持 | Java/.net | 丰富 | 只有 Java |
界面中文支持 | 有 | 无 | 无 |
社区支持 | 内置文档,作者在国内 | 文档丰富,中文社区一般 | 文档一般,暂无中文 |
国内案例 | 携程、点评 | 京东、阿里内部定制不开源 | 唯品会定制改造 |
祖先 | eBay cal | Google Dapper | Google Dapper |
类似产品 | 无 | Uber jaeger , spring cloud sleuth | Apache Skywalking |
数据存储 | mysql,hdfs | ES,mysql,Cassandra,内存 | Hbase |