新聞中心
3個開源分布式跟蹤系統(tǒng),都很不錯!
作者:云智時代 2018-09-29 08:44:24
開源
分布式 分布式跟蹤系統(tǒng)使用戶能夠通過分布在多個應(yīng)用程序,服務(wù)和數(shù)據(jù)庫以及代理等中介上的軟件系統(tǒng)來跟蹤請求。這樣可以更深入地了解軟件系統(tǒng)中發(fā)生的情況。這些系統(tǒng)生成圖形表示,顯示請求在每個步驟上花費了多少時間并列出每個已知步驟。

公司主營業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出松滋免費做網(wǎng)站回饋大家。
分布式跟蹤系統(tǒng)使用戶能夠通過分布在多個應(yīng)用程序,服務(wù)和數(shù)據(jù)庫以及代理等中介上的軟件系統(tǒng)來跟蹤請求。這樣可以更深入地了解軟件系統(tǒng)中發(fā)生的情況。這些系統(tǒng)生成圖形表示,顯示請求在每個步驟上花費了多少時間并列出每個已知步驟。
用戶可以確定系統(tǒng)在哪里遇到延遲或阻塞。當(dāng)請求開始失敗時,操作員和開發(fā)人員可以確切地看到問題的開始位置,而不是像二進制搜索樹那樣測試系統(tǒng)。這還可以揭示從部署到部署可能發(fā)生的性能變化。通過警告異常行為而不是讓客戶告訴你,***自動捕獲回歸。
跟蹤事件是如何工作的?每個請求都會獲得一個特殊的ID,通常會將其注入到標(biāo)頭中。此ID唯一標(biāo)識該事務(wù)。此事務(wù)通常稱為跟蹤。跟蹤是整個事務(wù)的整體抽象概念。每個跟蹤都由span組成。這些span是正在執(zhí)行的實際工作,如服務(wù)調(diào)用或數(shù)據(jù)庫請求。每個span也有一個唯一的ID。span可以創(chuàng)建稱為子span的后續(xù)span,并且子span可以具有多個父級。
OpenTracing API
OpenTracing是一種源自Zipkin的規(guī)范,旨在提供跨平臺兼容性。它提供了供應(yīng)商中立的API,用于向應(yīng)用程序添加跟蹤并將數(shù)據(jù)傳遞到分布式跟蹤系統(tǒng)。為OpenTracing規(guī)范編寫的庫可以與任何符合OpenTracing的系統(tǒng)一起使用。Zipkin,Jaeger和Appdash是采用開放標(biāo)準(zhǔn)的開源工具的例子,但即使是像Datadog和Instana這樣的專有工具也在采用它。隨著OpenTracing無處不在,這種情況有望繼續(xù)下去。
OpenCensus
有OpenTracing,但是OpenCensus呢?它是競爭標(biāo)準(zhǔn),完全不同的東西,還是互補的東西?
OpenTracing專注于建立開放的API和規(guī)范,而不是針對每種語言和跟蹤系統(tǒng)的開放實現(xiàn)。OpenCensus不僅提供規(guī)范,還提供語言實現(xiàn)和有線協(xié)議。它還包括通過包含通常在分布式跟蹤系統(tǒng)范圍之外的其他度量標(biāo)準(zhǔn)來進行跟蹤。
OpenCensus允許在運行應(yīng)用程序的主機上查看數(shù)據(jù),但它還具有可插拔的導(dǎo)出系統(tǒng),用于將數(shù)據(jù)導(dǎo)出到中央聚合器。
二者有重疊。一個不一定比另一個好,但重要的是要知道每個做什么和不做什么。OpenTracing主要是一個規(guī)范。OpenCensus為本地組件提供了一種整體方法,具有更多的觀點,但仍需要其他系統(tǒng)進行遠程聚合。
Zipkin
是最早的此類系統(tǒng)之一。它是由Twitter基于Google Dapper論文開發(fā)的,內(nèi)容涉及Google使用的內(nèi)部系統(tǒng)。Zipkin是使用Java編寫的,它可以使用Cassandra或ElasticSearch作為可擴展的后端。大多數(shù)公司應(yīng)該對其中一種選擇感到滿意。支持***的Java版本是Java 6.它還使用Thrift二進制通信協(xié)議,該協(xié)議在Twitter堆棧中很流行,并作為Apache項目托管。
該系統(tǒng)由reporters(客戶端),收集器(collectors),查詢服務(wù)和Web UI組成。Zipkin通過在事務(wù)上下文中僅傳輸跟蹤ID來通知接收者正在進行跟蹤,從而保證生產(chǎn)中的安全。然后將每個報告器中收集的數(shù)據(jù)異步傳輸?shù)绞占?。收集器將這些span存儲在數(shù)據(jù)庫中,并且Web UI以可使用的格式將該數(shù)據(jù)呈現(xiàn)給最終用戶。向收集器傳遞數(shù)據(jù)可以通過三種不同的方法進行:HTTP,Kafka和Scribe。
Zipkin與OpenTracing標(biāo)準(zhǔn)兼容,流行的Spring框架有一個名為Spring Cloud Sleuth的組件,它與Zipkin兼容。
Jaeger
Jaeger是Uber Technologies的一個新項目,CNCF已將其作為孵化項目采用。它是用Golang編寫的,因此你不必擔(dān)心在主機上安裝依賴項或者解釋器或語言虛擬機的任何開銷。與Zipkin類似,Jaeger也支持Cassandra和ElasticSearch作為可擴展的存儲后端。Jaeger還完全兼容OpenTracing標(biāo)準(zhǔn)。
Jaeger的架構(gòu)與Zipkin類似,包括客戶端(reporters),收集器,查詢服務(wù)和Web UI,但它在每個主機上都有一個本地聚合數(shù)據(jù)的代理。代理通過UDP連接接收數(shù)據(jù),并將其批處理并發(fā)送給收集器。收集器以Thrift協(xié)議的形式接收該數(shù)據(jù),并將該數(shù)據(jù)存儲在Cassandra或ElasticSearch中。查詢服務(wù)可以直接訪問數(shù)據(jù)存儲并將該信息提供給Web UI。
默認情況下,用戶不會從Jaeger客戶端獲取所有跟蹤。系統(tǒng)會對通過每個客戶端的0.1%(1/1000)跟蹤進行采樣。保留和傳輸所有跟蹤對于大多數(shù)系統(tǒng)來說有點壓力。但是,可以通過配置客戶端進行配置的代理來增加或減少這種情況。然而,這種抽樣并不是完全隨機的,它正在變得越來越好。Jaeger使用概率抽樣,試圖對是否應(yīng)該對新蹤跡進行抽樣進行有根據(jù)的猜測。自適應(yīng)采樣是其路線圖,它將通過添加額外的上下文來制定決策來改進采樣算法。
Appdash
Appdash是一個用Golang編寫的分布式跟蹤系統(tǒng),就像Jaeger一樣。它是由Sourcegraph基于Google的Dapper和Twitter的Zipkin創(chuàng)建的。與Jaeger和Zipkin類似,Appdash支持OpenTracing標(biāo)準(zhǔn)。
Appdash的架構(gòu)主要由三個部分組成:客戶端,本地收集器和遠程收集器。沒有很多文檔,所以這個描述來自測試系統(tǒng)和查看代碼。Appdash中的客戶端會添加到你的代碼中。 Appdash提供Python,Golang和Ruby實現(xiàn),但OpenTracing庫可以與Appdash的OpenTracing實現(xiàn)一起使用??蛻舳耸占痵pan并將它們發(fā)送到本地收集器。然后,本地收集器將數(shù)據(jù)發(fā)送到運行其自己的本地收集器的集中式Appdash服務(wù)器,該收集器是系統(tǒng)中所有其他節(jié)點的遠程收集器。
分享題目:3個開源分布式跟蹤系統(tǒng),都很不錯!
文章鏈接:http://m.5511xx.com/article/cdpphei.html


咨詢
建站咨詢
