Spring Cloud Sleuth 整合Zipkin携悯、RabbitMQ 和 (Mysql或Elasticsearch)

Sleuth官網(wǎng)地址? ?http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_sleuth

? ? ? ? 微服務(wù)之間是通過輕量級的通訊協(xié)議進(jìn)行通信祭芦,而網(wǎng)絡(luò)常常也相對脆弱、網(wǎng)絡(luò)資源也相當(dāng)有限憔鬼。 如果我們能夠跟蹤每一個請求龟劲,了解請 求經(jīng)過哪些微服務(wù)、請求的耗時轴或、網(wǎng)絡(luò)延遲昌跌、業(yè)務(wù)邏輯耗時這些指標(biāo),這樣我們就能夠更好的分析系統(tǒng)的瓶頸照雁、針對的解決系統(tǒng)問題蚕愤。因此、我們微服務(wù)體系中加上跟蹤還是很有必要的饺蚊。

RabbitMQ用于的微服務(wù)和Zipkin服務(wù)端的通信(取代微服務(wù)和Zipkin服務(wù)端通過http通信萍诱,實現(xiàn)了微服務(wù)和Zipkin服務(wù)端的解耦,微服務(wù)不需要知道Zipkin服務(wù)端的網(wǎng)絡(luò)地址污呼,一些情況下微服務(wù)可能和Zipkin服務(wù)端網(wǎng)絡(luò)不通(Zipkin服務(wù)端宕機(jī))裕坊,使用http通信收集方式將無法工作)

Zipkin提供了一個很友好的界面、利于分析追蹤數(shù)據(jù)(沒有嘗試過使用elk分析追蹤數(shù)據(jù)(不再需要zipkin服務(wù)端燕酷,直接分析日志數(shù)據(jù)))籍凝。

Mysql或Elasticsearch實現(xiàn)了追蹤數(shù)據(jù)的持久化(Zipkin默認(rèn)是將追蹤數(shù)據(jù)存在內(nèi)存中,如服務(wù)端重啟或宕機(jī)苗缩,會導(dǎo)致歷史數(shù)據(jù)丟失饵蒂,所以追蹤數(shù)據(jù)持久化很有必要).

Spring Cloud Sleuth 提供了一套分布式跟蹤解決方案,先了解一下它的術(shù)語:

Span:基本工作單元挤渐,例如苹享,在一個新建的span中發(fā)送一個RPC等同于發(fā)送一個回應(yīng)請求給RPC,span通過一個64位ID唯一標(biāo)識,trace以另一個64位ID表示得问,span還有其他數(shù)據(jù)信息囤攀,比如摘要、時間戳事件宫纬、關(guān)鍵值注釋(tags)焚挠、span的ID、以及進(jìn)度ID(通常是IP地址)

span在不斷的啟動和停止漓骚,同時記錄了時間信息蝌衔,當(dāng)你創(chuàng)建了一個span,你必須在未來的某個時刻停止它蝌蹂。

Trace:一系列spans組成的一個樹狀結(jié)構(gòu)噩斟,例如,如果你正在跑一個分布式大數(shù)據(jù)工程孤个,你可能需要創(chuàng)建一個trace剃允。

Annotation:用來及時記錄一個事件的存在,一些核心annotations用來定義一個請求的開始和結(jié)束

cs ? - Client Sent -客戶端發(fā)起一個請求齐鲤,這個annotion描述了這個span的開始

sr ? - Server Received -服務(wù)端獲得請求并準(zhǔn)備開始處理它斥废,如果將其sr減去cs時間戳便可得到網(wǎng)絡(luò)延遲

ss ?- Server Sent -注解表明請求處理的完成(當(dāng)請求返回客戶端),如果ss減去sr時間戳便可得到服務(wù)端需要的處理請求時間

cr ?- Client Received -表明span的結(jié)束给郊,客戶端成功接收到服務(wù)端的回復(fù)牡肉,如果cr減去cs時間戳便可得到客戶端從服務(wù)端獲取回復(fù)的所有所需時間

將Span和Trace在一個系統(tǒng)中使用Zipkin注解的過程圖形化:



原有微服務(wù)整合Spring Cloud Sleuth Zipkin 和 RabbitMQ

對原有微服務(wù)只要加依賴和配置就可以了

1. ?在需要跟蹤的微服務(wù)pom中添加如下依賴:

sleuth、zipkin淆九、rabbitmq依賴

2. ?在其配置文件中加入rabbitmq和sleuth的配置:

rabbitmq和sleuth配置

spring.sleuth.sampler.percentage:指定需要取樣的請求百分比统锤,默認(rèn)值是0.1,分布式系統(tǒng)中吩屹,數(shù)據(jù)量也許會應(yīng)該大跪另。所以,可以根據(jù)各自的項目情況煤搜,設(shè)置合適的采樣非常重要免绿。這里因為是開發(fā)階段,我把采樣設(shè)置成了1.0擦盾,即100%嘲驾。

如果不使用中間件(rabbitmq),還需要配置一個參數(shù)指定Zipkin服務(wù)器地址(默認(rèn)訪問http://localhost:9411)

spring.zipkin.base-url:http://192.168.1.178:9411

這里配置的地址需改成自己設(shè)置的Zipkin地址迹卢。


Zipkin服務(wù)端:

1. 創(chuàng)建一個artifactId為zipkin-service 的Maven工程辽故,并為項目添加如下pom依賴:

包括了zipkin、rabbitmq腐碱、elasticsearch的依賴
mysql數(shù)據(jù)庫連接依賴

如果使用mysql做數(shù)據(jù)的持久化的話誊垢,這兩個依賴不能少掉弛。

2. 編寫配置文件,在application.yml中添加如下內(nèi)容:

mysql喂走、zipkin殃饿、elasticsearch配置

zipkin.storage.type配置持久化類型,這里配置了elasticsearch芋肠,如果要使用mysql的話乎芳,需改為mysql

3. 編寫啟動類,使用@EnableZipkinStreamServer注解帖池,生命一個Zipkin Server奈惑。

spring boot啟動類

我這里加了@EnableDiscoveryClient注解,把 zipkin-service也當(dāng)成微服務(wù)注冊


4. Zipkin界面介紹

trace列表

可以根據(jù)時間睡汹、微服務(wù)肴甸、請求類型等刷選trace列表

trace詳情
span詳情
微服務(wù)之間依賴關(guān)系

可視化界面有利于我們分析為服務(wù)之間的依賴關(guān)系,可以選擇時間來刷選


5. elasticsearch

elasticsearch持久化的數(shù)據(jù)

elasticsearch的安裝部署這里就不說了


6. mysql

自動生成的三張表

Zipkin的jar包中有個mysql.sql文件帮孔,用于初始化數(shù)據(jù)庫表結(jié)構(gòu) 雷滋。


初次寫文章,如有錯誤文兢、疏漏請大家多多包涵指教。(由于不知道代碼如何在簡書上展示焕檬,所以全部是截圖的)

QQ:656765117 ? ? ?郵件:hz656765117@163.com ??

附上Zipkin服務(wù)端代碼: http://git.oschina.net/huangzhuo92/zipkin-service






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姆坚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子实愚,更是在濱河造成了極大的恐慌兼呵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腊敲,死亡現(xiàn)場離奇詭異击喂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碰辅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門懂昂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人没宾,你說我怎么就攤上這事凌彬。” “怎么了循衰?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵铲敛,是天一觀的道長。 經(jīng)常有香客問我会钝,道長伐蒋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮先鱼,結(jié)果婚禮上俭正,老公的妹妹穿的比我還像新娘。我一直安慰自己型型,他們只是感情好段审,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闹蒜,像睡著了一般寺枉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绷落,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天姥闪,我揣著相機(jī)與錄音,去河邊找鬼砌烁。 笑死筐喳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的函喉。 我是一名探鬼主播避归,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼管呵!你這毒婦竟也來了梳毙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤捐下,失蹤者是張志新(化名)和其女友劉穎账锹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坷襟,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡奸柬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婴程。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓奕。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖排抬,靈堂內(nèi)的尸體忽然破棺而出懂从,到底是詐尸還是另有隱情,我是刑警寧澤蹲蒲,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布番甩,位于F島的核電站,受9級特大地震影響届搁,放射性物質(zhì)發(fā)生泄漏缘薛。R本人自食惡果不足惜窍育,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宴胧。 院中可真熱鬧漱抓,春花似錦、人聲如沸恕齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽显歧。三九已至仪或,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間士骤,已是汗流浹背范删。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拷肌,地道東北人到旦。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像巨缘,于是被迫代替她去往敵國和親添忘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容