常見開源產(chǎn)品及演進過程
CAL
eBay早在2002年的時候,就開發(fā)了一套叫做CAL(Centralized Application Logging)的鏈路追蹤系統(tǒng),在eBay內部堪稱架構神器。不過沒有開源。
Dapper
Google在與eBay差不多的時間,也開發(fā)了一套鏈路追蹤系統(tǒng),叫Dapper,在Google內部運行了很長時間,一直沒有開源。不過在2010年的時候,Google發(fā)布了一篇劃時代的論文,來介紹Dapper的原理。Dapper論文成了后面眾多鏈路追蹤系統(tǒng)的理論基礎。
下面是Dapper論文的英文原版和中文翻譯版:
Dapper 英文版
Dapper 中文翻譯版
CAT
在eBay工作了十多年的吳其敏加入大眾點評成為首席架構師。吳其敏以eBay的CAL為模板,在2011年底,開始研發(fā)名為CAT(Central Application Tracking)的鏈路追蹤系統(tǒng)。CAT在2014年開始開源,已經(jīng)被眾多知名公司使用。
下面是美團官方技術博客對CAT的介紹:
美團官方技術博客 - 深度剖析開源分布式監(jiān)控CAT
下面是CAT Github地址:
CAT - Github
下面是CAT UI示例:
Zipkin
Twitter在2012年開源了Zipkin。不過Zipkin最早是用scala實現(xiàn)的,比較小眾。后來由社區(qū)用java重寫為OpenZipkin,才開始流行起來。Zipkin可以認為是Dapper論文的工程實踐。
下面是Zipkin的官網(wǎng)和Github地址:
Zipkin官網(wǎng)
Zipkin - Github
下面是Zipkin Tracing UI示例:
Pinpoint
Pinpoint是一家名叫Naver的韓國公司的產(chǎn)品。Naver是韓國當前最大的互聯(lián)網(wǎng)服務公司。Pinpoint的創(chuàng)新點在于使用了字節(jié)碼注入技術,埋點是無侵入的。
下面是Pinpoint在Github的地址:
Pinpoint - Github
下面是Pinpoint Tracing UI示例:
Skywalking
2015年,前OneAPM成員吳晟借鑒Pinpoint的思想,開發(fā)并開源了Skywalking,并在2017年時進入Apache孵化器。在Apache背書的情況下,Skywalking近幾年在國內發(fā)展迅速。
同Pinpoint一樣,Skywalking也使用了字節(jié)碼注入技術,埋點也是無侵入的。
下面是Skywalking Github地址:
Github - Skywalking
下面是Skywalking一個體驗版服務:
Skywalking - Demo
下面是Skywalking Tracing UI示例:
Jaeger
2016年,Uber受Dapper和OpenZipkin啟發(fā),用Go語言開發(fā)了鏈路追蹤系統(tǒng)Jaeger。可以認為Jaeger是Zipkin的golang版。
下面是Jaeger官網(wǎng)和Github地址:
Jaeger官網(wǎng)
Github - Jaeger
下面是Jaeger Tracing UI示例:
小結
CAT可以說是與CAL同根同源。而Zipkin、Pinpoint、Skywalking、Jaeger均是參考Dapper論文發(fā)展而來,因此,上述產(chǎn)品可大致按下圖劃分:
另外,鏈路追蹤和APM可以說是密不可分,也越來越多的開源產(chǎn)品不僅局限于提供Tacing的功能。上述開源產(chǎn)品中,有很多產(chǎn)品本質上是個APM,Tracing只是其眾多功能中的一部分:
后續(xù)會對比上述幾個開源產(chǎn)品的異同,做為在技術選型時作為參考。