分布式调用链对比(pinpoint、skywalking、jaeger、zipkin等)

1. APM简述

APM (Application Performance Management)是对企业的应用系统进行实时监控,它是用于实现对应用程序性能管理和故障管理的系统化的解决方案。

2.APM主要解决的问题:

  1. 集中式度量系统
  2. 分布式全链接追踪系统
  3. 集中式日志系统(elk)

......

3.分布式调用追踪(APM)一览

  1. Google的Drapper--未开源,最早的APM
  2. 阿里-鹰眼--未开源
  3. 大众点评------CAT--跨服务的跟踪功能与点评内部的RPC框架集成,这部分未开源且项目在2014.1已经停止维护。服务粒度的监控,通过代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等,对代码的侵入性较大,集成成本较高。
  4. Hydra-京东: 与dubbo框架集成,对于服务级别的跟踪统计,现有业务可以无缝接入。对于细粒度的兴趣点,需要业务人员手动添加。开源项目已于2013年6月停止维护
  5. PinPoint-naver,字节码探针技术,代码无侵入,体系完善不易修改,支持java,技术栈支持dubbo。其他语言社区支援中
  6. zipkin------java方便集成于springcloud,社区支持的插件也包括dubbo、rabbit、mysql、httpclient等(https://github.com/openzipkin/brave/tree/master/instrumentation),同时支持php、go、js等语言客户端,界面功能较为简单,本身无告警功能,可能需要二次开发。代码入侵度小。
  7. uber-jaeger, Jaeger支持java/c++/go/node/php,在界面上较为完善(对比zipkin),但是也无告警功能。代码入侵度小。dubbo目前无插件支持,可二次开发。
  8. skywalking ------华为,类似于PinPoint,目前还在apache孵化中,网上吞吐量对比中强于pinpoint,实际未验证。本身支持dubbo

4.方案对比

|---------------|-----------|-----------------------------------------------------------------------------------|-----------------------|-----------------------------------------------------------------------------------------------|
| | pinpoint | zipkin | jaeger | skywalking |
| OpenTracing兼容 | 否 | 是 | 是 | 是 |
| 客户端支持语言 | java、php | java,c#,go,php等 | java,c#,go,php等 | Java, .NET Core, NodeJS and PHP |
| 存储 | hbase | ES,mysql,Cassandra,内存 | ES,kafka,Cassandra,内存 | ES,H2,mysql,TIDB,sharding sphere |
| 传输协议支持 | thrift | http、MQ | udp/http | gRPC |
| ui丰富程度 | 高 | 低 | 中 | 中 |
| 实现方式-代码侵入性 | 字节码注入,无侵入 | 拦截请求,侵入 | 拦截请求,侵入 | 字节码注入,无侵入 |
| 扩展性 | 低 | 高 | 高 | 中 |
| trace查询 | 不支持 | 支持 | 支持 | 支持 |
| 告警支持 | 支持 | 不支持 | 不支持 | 支持 |
| jvm监控 | 支持 | 不支持 | 不支持 | 支持 |
| 性能损失 | 高 | 中 | 中 | 低 |

5.各方案参考链接

1.pinpoint-naver

github: GitHub - pinpoint-apm/pinpoint: APM, (Application Performance Management) tool for large-scale distributed systems.

docker快速体验:GitHub - pinpoint-apm/pinpoint-docker: Official Dockerized components of the Pinpoint

2.zipkin-推特:

github: GitHub - openzipkin/zipkin: Zipkin is a distributed tracing system

页面详解:sleuth+zipkin ui界面详解(二)_sharedCode源码交流-CSDN博客_zipkin 界面

zipkin于php对接:https://www.colabug.com/1872361.html

3.jaeger-uber

部分参考资料:

jaeger简介,部署,入门实践 Uber jaeger--一个基于Go的分布式追踪系统 - 北极之北的个人空间 - OSCHINA - 中文开源技术交流社区

jaeger------java实现 https://my.oschina.net/u/1789379/blog/1551421

Uber分布式追踪系统Jaeger使用介绍和案例(PHP Hprose Go 跨语言调用)

https://segmentfault.com/a/1190000011636957

全链路监控Jaeger搭建实战 全链路监控Jaeger搭建实战 - 简书

jaeger官网快速开始 Getting started --- Jaeger documentation

4.skywalking(推荐)

github: GitHub - apache/skywalking: APM, Application Performance Monitoring System

SkyWalking 分布式追踪系统 SkyWalking 分布式追踪系统 - 简书

Apache SkyWalking 5.0中文版图文详解使用手册

http://skywalking.apache.org/zh/blog/2018-12-18-Apache-SkyWalking-5-0-UserGuide.html

skywalking学习笔记 skywalking学习笔记 - 掘金

6.参考资料

相关推荐
lauo19 小时前
FDE的终极形态:从“一个人”到“一个网络”
人工智能·分布式
雾隐隐o1 天前
Kafka 集群搭建:从核心概念到多节点部署
分布式·kafka
IT大白鼠2 天前
MySQL 分布式集群系列 · 第八篇(收官)——NDB 集群面试高频题 +架构总结与未来演进
分布式·mysql·面试
IT大白鼠2 天前
MySQL 分布式集群系列 · 第七篇——生产调优实战:NDB 性能、内存、高可用全方位优化
数据库·分布式·mysql
無a伟2 天前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
stark张宇2 天前
从 Paxos 到 Raft:一文讲透分布式一致性与复制状态机
分布式·后端
kaoa0002 天前
Linux入门攻坚——89、Hadoop-1-架构及概念
大数据·linux·hadoop·分布式
海宇大数据2 天前
分布式网格实战:基于海宇柠檬查出险-登记证构建自动化车辆合规网关
运维·人工智能·分布式·自动化
無a伟2 天前
RabbitMq高级特性:消息确认,持久化,重试机制
java·分布式·rabbitmq
HanhahnaH2 天前
Spark 任务如何实现幂等?
大数据·分布式·spark