开源分布式链路追踪对比
在分布式事务中,我们还会遇到如下问题。某个核心服务故障,导致大量报警,如何快速确定哪个服务出现问题?某个核心服务故障,导致大量报错,如何快速确定哪个服务出了问题?应用程序有性能瓶颈,怎样确定瓶颈在哪?App 请求响应延迟高,怎样确定是由哪些服务导致?线上发布了服务,怎么知道它一切正常?在分布式事务中,应用的相互调用情况很多。我们要解决上述的问题,比较好的方法是构建分布式请求追踪系统。
调用链跟踪:一次请求调用过程的展示,以图形化方式输出各个微服务端集群之间的调用关系,并记录整个过程的消耗时间,协助开发人员分析整个系统的瓶颈点与热点,从而优化系统。调用链路径分析:对多条调用链进行分析,整理成集群之间的调用关系,计算出整条链路的关键节点,直接依赖、间接依赖、依赖强度等。调用来源分析:针对某一特定的集群,整理出其他集群对其的调用情况,防止错误调用的发生。调用量统计:实时统计各个集群的调用次数、QPS、平均耗时、最大耗时等信息,开发人员可以根据相关的信息进行容量规划。监控请求调用量:开发人员通过自动以正则表达式,对匹配该正则的 URL 的请求进行实时监控,包括调用次数、QPS、平均耗时、最大耗时、最小耗时。
开源的分布式追踪方案有 Twitter Zipkin、Apache SkyWalking、Pinpoint。三种开源分布式追踪系统的对比如下:
Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。在服务运行的过程中会产生很多链路信息,产生数据的地方可以称之为 Reporter。将链路信息通过多种传输方式如 HTTP,RPC,kafka 消息队列等发送到 Zipkin 的采集器,Zipkin 处理后最终将链路信息保存到存储器中。运维人员通过 UI 界面调用接口即可查询调用链信息。
Pinpoint 是基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI 功能强大,接入端无代码侵入。
SkyWalking 是基于字节码注入的调用链分析和应用监控分析工具。特点是支持多种插件,UI 功能较强,接入端无代码侵入。目前已加入 Apache 孵化器。目前国内分布式追踪系统案例中,SkyWalking 使用较为广泛。SkyWalking 是可观察性分析平台和应用程序性能管理系统,它具有如下特点。跟踪、指标和日志记录一体解决方案。支持 Java、.Net Core、PHP、Node.js、Go、Lua、C++代理。支持 Istio + Envoy Service Mesh。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/6786987d55a77b863e6760375】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论