在《分布式跟踪 | 微服务的护卫舰》一文中,我们聊了为什么微服务需要分布式跟踪系统,在了解了分布式跟踪的重要性后,随之而来的问题是如何搭建分布式跟踪系统?在软件界,最不缺的就是轮子,在谷歌发布了Dapper论文后,无论是商业化还是开源界都根据该论文研发出了众多分布式跟踪系统的实现,真正难的是如何在众多轮子中选出最适合自己的一个。
分布式跟踪选型
从理论上来说,像分布式跟踪这种非核心的系统,能从市面上购买到符合需求的产品则尽量避免自己研发,但由于商业方案涉及到很多商务上的事情,已经远远超出了技术的范畴,不在这里展开讨论。道路千万条,开源第一条,本文主要从技术的角度聊聊对分布式跟踪系统开源方案的选择。
对于已经使用ELK方案的应用来说,他们会惊喜地发现Elastic家族里面多了一位新成员——Elastic APM,它支持了APM的主要功能,其中包括分布式跟踪。APM服务器、代理、Kibana的APM仪表盘都是开源版所支持的,但APM UI、分布式跟踪和告警只有基础版以上才支持。对于上云的应用来说,他们的一个选择是使用云供应商提供的APM方案,例如Azure Applicaiton Insight。这两个方案可以说是APM界的后起之秀,支持分布式跟踪的历史比较短,所以带来的一个弊端是对各种开源组件的支持还比较匮乏,而且也缺乏参考案例。
所以当人们谈论开源分布式跟踪方案的时候,基本离不开SkyWalking,Pinpoint,大众点评CAT,Jaeger和Zipkin。下图列举了几个方案之间的差异:
从功能上看,左边的三个方案(SkyWalking,Pinpoint和CAT)可以归类为APM,它们不止是一个分布式跟踪的解决方案,还提供了丰富的APM功能;而Jaeger和Zipkin更专注在分布式跟踪上面,没有APM其他功能。大众点评