链路追踪--选型/对比/工具/方案/分布式
Posted IT利刃出鞘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链路追踪--选型/对比/工具/方案/分布式相关的知识,希望对你有一定的参考价值。
简介
说明
链路追踪工具一般要有如下功能:
- 心跳检测(确定应用是否还在运行)
- 记录请求的执行流程、执行时间
- 资源监控(CPU、内存、带宽、磁盘)
- 告警功能(监控执行时间、成功率等通过邮件、钉钉、短信、微信等进行通知)
- 可视化页面
本文主要对比全链路追踪中常使用的Zipkin、Pinpoint、SkyWalking和CAT。
对比(总览)
框架 | Jaeger | zipkin | CAT | Elastic APM | ||
Github Star (2021-09-11) | 14.2k+ | 14.7K+ | 17.7k+ | 15.9k+ | 11.7k+ | 926+ |
Github contributors | 191 | 146 | 313 | 77 | 99 | 53 |
作者 | CNCF、Uber | Apache、Twitter | Apache | 美团 | NAVER | Elastic |
代码侵入性 | 中 | 高 | 低 | 高 | 低 | 很低 |
UI | 很差 | 很差 | 很好 | 较差 | 很好 | 很差 |
traceId查询 | 不支持 | 支持 | 不支持 | 不支持 | ||
性能损失 | 中 | 中 | 低 | 高 | ||
监控报警 | 无,需结合其它工具实现 | 无,需结合其它工具实现 | 支持 | 支持 | 支持 | 支持 |
存储类型 | Memory, Cassandra, Elasticsearch, Kafka | Memory, Cassandra, ElasticSearch and mysql | Memory(H2)、 ElasticSearch, MySQL、 TiDB、 infulxdb | HDFS | HBase | Elasticsearch |
OpenTracing兼容 | 是 | 是 | 是 | 否 | 否 | 不完善 |
颗粒度 | 接口级 | 方法级。 (更详细),方法中所有远程调用都展示:如数据库、redis | 代码级 | 方法级。 (更详细) | ||
实现方式 | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | 代码埋点(拦截器,注解,过滤器等) | Java探针,字节码增强 | ||
接入方式 | 基于linkerd或者sleuth方式,引入配置即可 | javaagent字节码 | 代码侵入 | javaagent字节码 | ||
agent到collector的协议 | http,MQ | gRPC | http/tcp | thrift |
性能对比
Pinpoint采集信息太过详细,所以,它对性能的损耗最大。而skywalking默认策略比较保守,对性能损耗很小。
以上是关于链路追踪--选型/对比/工具/方案/分布式的主要内容,如果未能解决你的问题,请参考以下文章
链路追踪之选型ZipkinPinpointSkyWalkingCAT