分布式链路追踪技术对比
发布日期:2021-06-30 17:39:08 浏览次数:2 分类:技术文章

本文共 2987 字,大约阅读时间需要 9 分钟。

常见开源产品

cat, zipkin, pinpoint , skywalking 

cat 

CAT(Central Application Tracking)基于Java开发的实时监控平台,主要包括移动端监控,应用侧监控,核心网络层监控,系统层监控等。CAT是一个提供实时监控报警,应用性能分析诊断的工具。

由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 。 集成方案是通过代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等。   对代码的侵入性很大,集成成本较高,风险较大。 

整体架构:

                        

特点:

  • 异步化传输数据,不太影响正常业务
  • 实时监控
  • 轻量,部署简单
  • 嵌入简单
  • 有问题跟踪报表
  • 消息树形化
  • 日志不落地本地磁盘,较少IO,但很消耗网络资源
  • 监控消息,按照分业务传输数据,如业务场景,时间等要求传输数据
  • 有报警机制
  • 可能复杂的消息存储和消息ID查询看起来麻烦,需要建立查询索引(目前不考虑这个东东)
  • 消息队列异步化发送
  • 开源(这个最重要)

 

支持技术栈: 

  • dubbo
  • spring mvc ,spring aop ,springmvc-url
  • spring boot
  • mybatis
  • log4j , logback
  • playframework
  • http请求

详见:

zipkin

由Twitter团队开源, Zipkin是一个分布式的跟踪系统。它有助于收集数据需要解决潜在的问题在市微服架构的时机。它管理数据的收集和查找 . 该产品结合spring-cloud-sleuth使用较为简单, 集成很方便。  但是功能较简单。 

整体架构:

                           

Transport是zipkin对外提供的接口,目前有HTTP、Kafka、Scribe三种。

  • HTTP:采用json格式,接口定义见https://github.com/openzipkin/zipkin-api
  • Kafka:分布式发布订阅消息系统
  • Scribe:Facebook的日志收集系统https://github.com/facebook/scribe

支持技术栈: 

  • spring cloud

      以上是结合spring-cloud-sleuth支持的技术栈

详见:

 

pinpoint

由韩国团队naver团队开源,针对大规模分布式系统用链路监控,使用java写的工具。灵感来自短小精悍,帮助分析系统的总

体结构和内部组件如何被调用在分布式应用提供了一个很好的解决方案。使用java探针字节码增加技术,实现对整个应用的监控 ,对应用零侵入。

整体架构:

               

 

支持技术栈: 

 

  • Tomcat 6+, Jetty 8/9, JBoss 6, Resin 4, Websphere 6+, Vertx 3.3+
  • Spring, Spring Boot (Embedded Tomcat, Jetty)
  • HTTP Client 3.x/4.x, HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
  • Thrift, Dubbo
  • mysql, oracle, mssql, cubrid,PostgreSQL, maria
  • arcus, memcached, redis, cassandra
  • MyBatis
  • DBCP, DBCP2, HIKARICP
  • gson, Jackson, Json Lib
  • log4j, Logback

详见:

skywalking 

2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。 针对分布式系统的应用性能监控系统,特别针对微服务、cloud native和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统。使用java探针字节码增加技术,实现对整个应用的监控 ,对应用零侵入。

整体架构:

                     

支持技术栈

 

  • Tomcat7+ , resin3+, jetty
  • spring boot ,spring mvc
  • strtuts2
  • spring RestTemplete  ,spring-cloud-feign
  • okhttp , httpClient
  • msyql ,oracle , H2 , sharding-jdbc,PostgreSQL
  • dubbo,dubbox ,motan, gRpc ,
  • rocketMq , kafla
  • redis, mongoDB,memcached ,
  • elastic-job , Netflix Eureka , Hystric

详见:

 

比较

  cat zipkin pinpoint skywalking 
依赖
  • Java 6,7,8
  • Maven 3.2.3+
  • mysql5.6
  • Linux 2.6以及之上(2.6内核才可以支持epoll)
  • Java 6,7,8
  • Maven3.2+
  • rabbitMQ
  • Java 6,7,8
  • maven3+
  • Hbase0.94+
  • Java 6,7,8
  • maven3.0+
  • nodejs
  • zookeeper
  • elasticsearch
实现方式 代码埋点(拦截器,注解,过滤器等) 拦截请求,发送(HTTP,mq)数据至zipkin服务 java探针,字节码增强 java探针,字节码增强
存储选择 mysql , hdfs in-memory , mysql , Cassandra , Elasticsearch HBase elasticsearch , H2
通信方式 http , MQ thrift GRPC
MQ监控 不支持 不支持 不支持 支持(RocketMQ,kafka)
全局调用统计 支持 不支持 支持 支持
trace查询 不支持 支持 不支持 支持
报警 支持 不支持 支持 支持
JVM监控 不支持 不支持 支持 支持
star数 4.5K 7.9K 5.6K 2.8K
优点 功能完善。 spring-cloud-sleuth可以很好的集成zipkin , 代码无侵入,集成非常简单 , 社区更加活跃。 完全无侵入, 仅需修改启动方式,界面完善,功能细致。

完全无侵入,界面完善,支持应用拓扑图及单个调用链查询。

功能比较完善(zipkin + pinpoint)

缺点
  • 代码侵入性较强,需要埋点
  • 文档比较混乱,文档与发布版本的符合性较低,需要依赖点评私服 (或者需要把他私服上的jar手动下载下来,然后上传到我们的私服上去)。

 

  • 默认使用的是http请求向zipkin上报信息,耗性能。
  • 跟sleuth结合可以使用rabbitMQ的方式异步来做,增加了复杂度,需要引入rabbitMQ 。

 

不支持查询单个调用链, 对外表现的是整个应用的调用生态。
  • 3.2版本之前BUG较多 ,网上反映兼容性较差 . 3.2新版本的反映情况较少
  • 依赖较多。
文档 网上资料较少,仅官网提供的文档,比较乱 文档完善 文档完善 文档完善
开发者 大众点评 twitter naver 吴晟(华为开发者) ,目前已经加入Apache孵化器
使用公司 大众点评, 携程, 陆金所,同程旅游,猎聘网 twitter naver 华为软件开发云、天源迪科、当当网、京东金融

转载地址:https://lemonstone.blog.csdn.net/article/details/85241034 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:消息中间件kafka与activeMQ、rabbitMQ、zeroMQ、rocketMQ的比较
下一篇:静态代码检查工具简介

发表评论

最新留言

很好
[***.229.124.182]2024年04月11日 12时38分05秒