NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
對(duì)于普通系統(tǒng)或者服務(wù)來(lái)說(shuō),一般通過(guò)打日志來(lái)進(jìn)行埋點(diǎn),然后再通過(guò)elk或splunk進(jìn)行定位及分析問(wèn)題,更有甚者直接遠(yuǎn)程服務(wù)器,直接操作查看日志,那么,隨著業(yè)務(wù)越來(lái)越復(fù)雜,企業(yè)應(yīng)用也進(jìn)入了分布式服務(wù)化的階段,傳統(tǒng)的日志監(jiān)控等方式無(wú)法很好達(dá)到跟蹤調(diào)用、排查問(wèn)題等需求,可以想象,如果你的服務(wù)節(jié)點(diǎn)達(dá)到有很多很多(兩位數(shù)以上吧),而沒(méi)有一個(gè)自動(dòng)跟蹤系統(tǒng),那查找一個(gè)問(wèn)題將成為噩夢(mèng)。
?
那么,服務(wù)之間調(diào)用的問(wèn)題是:
?
如何快速發(fā)現(xiàn)問(wèn)題?
如何判斷故障影響范圍?
如何梳理服務(wù)依賴(lài)以及依賴(lài)的合理性?
如何分析鏈路性能問(wèn)題以及實(shí)時(shí)容量規(guī)劃?
如何在分布式服務(wù)進(jìn)行日志監(jiān)控呢?
?
首先大家會(huì)想到分布式鏈路追蹤系統(tǒng),說(shuō)到這,就得講 OpenTracing 規(guī)范,OpenTracing 是一個(gè)輕量級(jí)的標(biāo)準(zhǔn)化層,它位于應(yīng)用程序/類(lèi)庫(kù)和追蹤或日志分析程序之間。詳細(xì)介紹見(jiàn) 《opentracing文檔中文版》。在谷歌論文《Dapper, 大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)》的指導(dǎo)下,許多優(yōu)秀的APM應(yīng)運(yùn)而生,分布式追蹤系統(tǒng)發(fā)展很快,種類(lèi)繁多,給我們帶來(lái)很大的方便。雖然目前市面許多優(yōu)秀的APM系統(tǒng),但是作為我們.NET程序員的選擇卻就少之又少了(甚至沒(méi)得選),幾乎各大分布式追蹤系統(tǒng)均提供java版的支持,而.NET上卻只有SkyWalking的SkyAPM-dotnet一直在默默的支持著,辛苦了,大佬們。
?
好吧,既然不能做到技術(shù)選型,那么我們就開(kāi)始工作吧。SkyWalking和Elasticsearch的安裝,網(wǎng)上一抓一大把,這里不在重復(fù)的介紹“如何安裝”和“如何使用”。
?
從SkyAPM-dotnet中,我們可以拿到團(tuán)隊(duì)的官方示例,https://github.com/SkyAPM/SkyAPM-dotnet/tree/master/sample,她分為請(qǐng)求端,前置端和后端(當(dāng)然,你喜歡怎么叫都行),我稍微修改一下,做了一些數(shù)據(jù)和請(qǐng)求數(shù)上的調(diào)整,本篇代碼不是重點(diǎn)(SkyAPM-dotne已經(jīng)達(dá)到開(kāi)箱即用的強(qiáng)大優(yōu)勢(shì)),希望得到的數(shù)據(jù)像下面這樣:
?
?
解釋一下這個(gè)數(shù)據(jù)是怎么來(lái)的(或者這個(gè)實(shí)驗(yàn)的服務(wù)架設(shè)):
后端:提供數(shù)據(jù)庫(kù)的查詢(xún),隊(duì)列的接口等一系列數(shù)據(jù)操作的地方;
前置:提供接口的過(guò)濾和處理,可以把他理解為一個(gè)邏輯后端,或者一個(gè)API網(wǎng)關(guān);
請(qǐng)求:提供請(qǐng)求,或者模擬串行或并行請(qǐng)求;
?
這樣從邏輯上理解就是1->2->3->2->1,其實(shí)一個(gè)請(qǐng)求從頭到尾然后在返回到前端也都是這樣的,你可以把他想象成我們常見(jiàn)的三層模型、等等。
啟動(dòng)三個(gè)節(jié)點(diǎn)后,通過(guò)SkyWalking可以看到,Service數(shù)量是3,正是我們創(chuàng)建的三個(gè)服務(wù)節(jié)點(diǎn),Endpoint表示所有連接的數(shù)量,DB和Cache作為數(shù)據(jù)庫(kù)(或緩存)的數(shù)量,MQ的數(shù)量、平均吞吐量、網(wǎng)絡(luò)拓?fù)鋱D等等。
整個(gè)界面一目了然,更多詳細(xì)介紹可查看官網(wǎng)解釋。
?
?
?
?
在.NET的生態(tài)圈中,曾經(jīng)有ButterFly這樣的原生.NET框架來(lái)實(shí)現(xiàn)我們整個(gè)系統(tǒng)的鏈路追蹤,只是作者表示已不在維護(hù),ButterFly放棄的原因之一也是因?yàn)?NET開(kāi)源項(xiàng)目的參與者太少了,光靠一人之力是沒(méi)法做出一個(gè)穩(wěn)定高效可用于生產(chǎn)的APM。作者轉(zhuǎn)而投入到了Skyapm-dotnet 所以,在.NET上,我們優(yōu)先選擇有良好支持的skyapm-dotnet!
原文地址:https://www.cnblogs.com/SteveLee/p/10463200.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Newbe.Claptrap - 一套以
- 下一篇: NET Core微服务之路:实战SkyW