分布式链路追踪技术对比

分布式链路追踪技术对比精品文章 sharding jdbc 源码分析 Eureka 源码解析 rocketMq 源码深度解析 xxl job 分布式定时任务构建 sleuth zipkin 全链路监控系统深入理解 dubbo 实现原理方案选择本文最终选择了 zipkin sleuth 做二次开发 这样做灵活性比较大一点 有兴趣的可以进我博客看一下 我会将我二次开发过程当中遇到的问题发出来 搭建环境 sleu

精品文章

sharding-jdbc源码分析

Eureka源码解析

rocketMq源码深度解析

xxl-job分布式定时任务

构建sleuth+zipkin全链路监控系统

深入理解dubbo实现原理

方案选择

本文最终选择了zipkin+sleuth做二次开发,这样做灵活性比较大一点。 有兴趣的可以进我博客看一下,我会将我二次开发过程当中遇到的问题发出来。

搭建环境

sleuth+zipkin+kafka+elasticsearch搭建分布式链路追踪系统

二次开发方案

sleuth+zipkin+kafka+logstash链路追踪二次开发方案

常见开源产品

cat, zipkin, pinpoint , skywalking 

cat 

由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 。 集成方案是通过

代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等。   对代码的侵入性很大,集成成本较高。

风险较大。 

支持技术栈: 

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

zipkin

由Twitter团队开源, Zipkin是一个分布式的跟踪系统。它有助于收集数据需要解决潜在的问题在市微服架构的时机。它管理数据的收集和查找 . 

该产品结合spring-cloud-sleuth使用较为简单, 集成很方便。  但是功能较简单。 

支持技术栈: 

  • 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

性能分析

摘自:https://juejin.im/post/5a7a9e0af265da4e914b46f1

根据其他博客提供的性能测试报告如下

模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100%,这边与生产可能有差别。

pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合起来,一共有12种。下面看下汇总表:

分布式链路追踪技术对比

从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的影响较为明显

在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,

对CPU和memory的影响都差不多在10%之内。

比较

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 , 代码无侵入,集成非常简单 , 社区更加活跃。

对外提供有query接口,更加容易二次开发

完全无侵入, 仅需修改启动方式,界面完善,功能细致。

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

功能比较完善(zipkin + pinpoint)

缺点
  • 代码侵入性较强,需要埋点
  • 文档比较混乱,文档与发布版本的符合性较低,需要依赖点评私服 (或者需要把他私服上的jar手动下载下来,然后上传到我们的私服上去)。
  • 默认使用的是http请求向zipkin上报信息,耗性能。
  • 跟sleuth结合可以使用rabbitMQ的方式异步来做,增加了复杂度,需要引入rabbitMQ 。
  • 数据分析比较简单。
  • 不支持查询单个调用链, 对外表现的是整个应用的调用生态。
  • 二次开发难度较高
  • 3.2版本之前BUG较多 ,网上反映兼容性较差 . 3.2新版本的反映情况较少
  • 依赖较多。
文档 网上资料较少,仅官网提供的文档,比较乱 文档完善 文档完善 文档完善
开发者 大众点评 twitter naver 吴晟(华为开发者) ,目前已经加入Apache孵化器
使用公司 大众点评, 携程, 陆金所,同程旅游,猎聘网 twitter naver 华为软件开发云、天源迪科、当当网、京东金融

sharedCode源码交流群,欢迎喜欢阅读源码的朋友加群,添加下面的微信, 备注”加群“ 。 

分布式链路追踪技术对比

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198776.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:30
下一篇 2026年3月26日 下午2:30


相关推荐

  • vi 命令 使用方法

    vi 命令 使用方法

    2021年11月14日
    52
  • Jquery.DataTable使用

    Jquery.DataTable使用Jquery DataTable 插件使用 DataTable 插件是一款基于 jquery 的表格插件 其官网地址为 http datatables net 下面简单描述该插件的使用方法安装 DataTable 从官网下载最新版本的插件 再在页面中应用相应的 js 和 css 文件 DataTable 使用 DataTable 支持多种使用方法分别是基于静态 html 表格一个例子 tableid table id ex

    2026年3月18日
    2
  • 使用HttpClient4实现文件上传请求的发送,服务器端以MultipartFile形式接收(附依赖jar包地址)

    使用HttpClient4实现文件上传请求的发送,服务器端以MultipartFile形式接收(附依赖jar包地址)今天学习使用了HttpClient4.2向服务端发送上传文件的请求,由于服务器端以MultipartFile形式接收,查询资料后决定使用HttpClient4.2实现,以下是实现代码(仅作测试使用):publicvoidtesttaskPost()throwsException{HttpClienthttpclient=newDefaultHttpClien

    2022年7月22日
    20
  • C语言二分法查找

    C语言二分法查找二分查找也叫折半查找典型算法 算法 当数据量很大适宜采用该方法 采用二分法查找时 数据需是排好序的 基本思想 假设数据是按升序排序的 对于给定值 n 从序列的中间位置 mid 开始比较 如果当前位置 arr mid 值等于 n 则查找成功 若 n 小于当前位置值 arr mid 则在数列的前半段中查找 arr left mid 1 若 n 大于当前位置值 arr mid 则在数列的后半段中继续查找 arr left 1 right 直到找到为止 时间复杂度 O log n 解题思路 给定一个数组 ar

    2026年3月18日
    2
  • live555源代码概述「建议收藏」

    live555源代码概述「建议收藏」
    live555源代码概述2010年01月29日星期五13:03liveMedia项目(http://www.live555.com/)的源代码包括四个基本的库,各种测试代码以及MediaServer。四个基本的库分别是:UsageEnvironment&TaskScheduler,groupsock,liveMedia和BasicUsageEnvironment。 

    UsageEnvironment和TaskScheduler类用于事件的调度,实现异步读取事件的

    2022年7月16日
    23
  • jquery validate验证方法

    jquery validate验证方法

    2022年3月12日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号