Spring Cloud:APM工具Zipkin+Sleuth、pinpoint、SkyWalking、CAT

简介

  • Zipkin

由Twitter公司开源,开放源代码分布式的跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题,包括:数据的收集、存储、查找和展现。

  • Pinpoint

pinpoint是韩国人开源的 APM (Application Performance Management/应用性能管理)工具 - Pinpoint。它基于google Dapper开发,目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统提供解决方案。pinpoint能够对基于java的大规模分布式系统和应用做调用链的跟踪。pinpoint提供了一个web页面展示分布式系统的拓扑图以及系统这各个组件之间关系。pinpoint 有3个主要组件组成:日志收集器[Collector]、控制台[Web]、代理[Agent],采用HBase进行存储。

Supported Modules

  • JDK 6+
  • Tomcat 6/7/8/9Jetty 8/9JBoss EAP 6/7Resin 4Websphere 6/7/8Vertx 3.3/3.4/3.5Weblogic 10/11g/12cUndertow
  • Spring, Spring Boot (Embedded Tomcat, Jetty, Undertow), Spring asynchronous communication
  • Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient, Akka-http, Apache CXF
  • Thrift Client, Thrift Service, DUBBO PROVIDER, DUBBO CONSUMER, GRPC
  • ActiveMQ, RabbitMQ, Kafka
  • MySQL, Oracle, MSSQL(jtds), CUBRID, POSTGRESQL, MARIA
  • Arcus, Memcached, Redis(JedisLettuce), CASSANDRA, MongoDB, Hbase, Elasticsearch
  • iBATIS, MyBatis
  • DBCP, DBCP2, HIKARICP, DRUID
  • gson, Jackson, Json Lib, Fastjson
  • log4j, Logback, log4j2
  • SkyWalking(个人推荐)

国产的优秀APM组件,2015年由个人吴晟(华为开发者)开源 ,2017年加入Apache孵化器;是一个对JAVA分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统。使用java探针字节码增加技术,实现对整个应用的监控 ;对应用零侵入。针对分布式系统的应用性能监控系统,特别针对微服务、cloud native和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统;

Supported Modules:最全的支持

  • CAT

CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

  • Spring Cloud Sleuth

Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。

特性

 Zipkin+SleuthPinpointSkyWalkingCAT
开发者Twitter韩国Apache美团
实现方式拦截请求,发送(HTTP,mq)数据至zipkin服务java探针,字节码增强java探针,字节码增强,配置文件代码埋点(拦截器,注解,过滤器等)
接入方式基于linkerd或者sleuth方式,引入配置即可javaagent字节码javaagent字节码代码侵入
agent到collector的协议http,MQthrift,DUBBO,gRPCgRPChttp/tcp
OpenTracing支持x支持x
颗粒度接口级方法方法代码级
全局调用统计x支持支持支持
traceid查询支持x支持x
虚拟机监控xxJVM、CLR支持
健壮度UI面板
数据存储es,mysql,Cassandra,memHbaseES,H2,mysql,influxdbmysql,hdfs
社区star(2020.5)12.9K

10.3K

13.4K13.3K
当前版本2.21.52.0.48.0.13.0.0
集群支持单点 单点、zk、k8s、consul、etcd 

性能

  • 环境

1核2g服务器

ek服务输出+返回字符串。

@RestController
@RequestMapping(value = "ek/", produces = "application/json; charset=utf-8")
public class HiController {
    private static final Logger logger = LoggerFactory.getLogger(HiController.class);
    @Autowired
    private DoFeignService doFeignService;

    @RequestMapping("hi/{name}")
    public String hi(@PathVariable int name) throws Exception {
       System.out.println(name+" ok "); 
       return name+" ok ";
    }
}
  • wrk压测命令: 
wrk  --latency -t5 -c300 -d30s http://10.244.0.1:8092/ek/hi/0
  • 压测结果
-无apmSkyWalkingzipkin(100%)zipkin(100/s)
rps
43529.36
41430.91
35509.00
43016.07
  •  SkyWalking:影响性能在5%左右
  •  zipkin:根据采集样本数浮动,影响范围0-20%左右。

参考:

别家之言:

他们都提供了分布式服务跟踪的能力,pinpoint以及skywalking不仅仅提供了分布式服务跟踪的能力,
还提供了其他性能监控,是一个APM解决方案。zipkin主要是分布式服务跟踪,同时与SpringCloud进行有效的集成。
个人觉得pinpoint以及skywalking部署相对麻烦一些。

江湖上都推荐pingpoint,zipkin的监控易于搭建,但是监控的东西很简单

pinpoint偏向于中等的分布式规模,拓扑和关系不会做的很深,会限制深度。优势是做的时间比较长,理论上稳定一些。缺点是hbase本身就是一个重度运维中间件,要考虑自身情况

skywalking会倾向于微服务的分布式系统,为自研的探针提供了完善的接入支持,我们目前就在给当当做这个接入当时的支持。同时我们会着重比如服务的依赖关系,服务的统计指标。我们对于应用,只需要配置应用id,不需要实例id,对容器环境毕竟k8,linkerd友好

zipkin强在生态和范围,国外的绝大多数组件都提供了集成方案,只需要少量修改代码或者配置就可以。比如linkerd原生就支持zipkin

部署上如果你容量不大,pinpoint负担最大,因为hbase,zipkin和skywalking差不多。存储都可以用es

另外,zipkin和skywalking属于opentracing规范体系下,可以共享相同的手动埋点api,skywalking针对非rpc埋点,甚至只需要标注就可以,零开发成本。而pinpoint是必须学习开发插件的。

不算自己的东西,相对pinpoint,我肯定会喜欢zipkin。我能说不喜欢棒子和他们不靠谱的社区行为么…
还是feign的作者。opentracing起草者之一。

个人理解:

  • 使用场景:pinpoint虽然功能强大,但是对国内流行的技术支持不够,比如es、rocketmq、Redisson等,这方便国产的SkyWalking都提供了很好的支持。
  • 性能:pinpoint因为监控力度更细导致对服务性能影响更大。

具体选型还是要根据具体需求来定。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lizz666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值