Ocelot中使用Butterfly实践
Ocelot(https://github.com/TomPallister/Ocelot)是一個(gè)用.net core實(shí)現(xiàn)的API網(wǎng)關(guān),Butterfly(https://github.com/ButterflyAPM/butterfly)是用.net core實(shí)現(xiàn)的全程序跟蹤,現(xiàn)在,Ocelot中可以使用Butterfly了,關(guān)于Ocelot和Butterfly具體功能參見各自的github站點(diǎn),關(guān)于Ocelot和Butterfly組合實(shí)現(xiàn),參數(shù)張善友博客http://www.csharpkit.com/2018-02-04_51207.html,本篇博客講述一個(gè)案例的實(shí)現(xiàn)。
博客中代碼參見https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/OcelotAndButterfly,可只下載下面的項(xiàng)目進(jìn)行測(cè)試。
項(xiàng)目說明表:
項(xiàng)目名稱 | 項(xiàng)目類型 | 端口 | 說明 |
OcelotGateway | web api | 5000 | 網(wǎng)關(guān)項(xiàng)目 |
API001 | web api | 5001 | 業(yè)務(wù)api項(xiàng)目 |
API002 | web api | 5002 | 業(yè)務(wù)api項(xiàng)目 |
TestAPI | web api | 5577 | 測(cè)試api項(xiàng)目 |
Ocelot | 類庫 | 無 | Ocelot官方源碼,因?yàn)橛袀€(gè)bug,以進(jìn)行pr,所以現(xiàn)在把clone下載來作了個(gè)修復(fù),后續(xù)官方會(huì)修正。 |
Butterfly-web-preview-0.0.8 | Web api | 9618 | Butterrfly執(zhí)行程序,用來收集經(jīng)過節(jié)點(diǎn)的數(shù)據(jù),并作展示,可以過來http://localhost:9618來訪問 |
?
項(xiàng)目結(jié)構(gòu):
?
API001和API002本身代碼非常簡(jiǎn)單,就是請(qǐng)求后返回一個(gè)帶時(shí)間的字符串,API001在返回前,會(huì)調(diào)用API002,因?yàn)橛芯W(wǎng)關(guān)存在,所以在API001的實(shí)現(xiàn)方法是請(qǐng)求網(wǎng)關(guān)中的API002映射路徑的(詳見項(xiàng)目代碼),而不是直接訪問API002(因?yàn)樵谖⒎?wù)集群中,API002應(yīng)該有多個(gè)節(jié)點(diǎn),這些節(jié)點(diǎn)通過服務(wù)注冊(cè)后才知道具體地址,所以在調(diào)用的時(shí)候,通過訪問網(wǎng)關(guān)的地址來達(dá)到訪問API002。
TestAPI中請(qǐng)求的是網(wǎng)關(guān)中的API001的映射(詳見項(xiàng)目代碼)
OcelotGateway中配置文件configuration.json中,開啟各ReRoutes中的HttpHandlerOptions下的UseTracing:true即可(詳見項(xiàng)目代碼)
需要引用butterfly.Client.AspNetCore項(xiàng)目有:API001,API002,OcelotGateway,TestAPI,現(xiàn)在butterfly.Client.AspNetCore版本是0.0.8,有bug(與作者聯(lián)系后期版本會(huì)修正),可以引用0.0.7進(jìn)行測(cè)試。
請(qǐng)求的路徑如下圖:
?
請(qǐng)求從TestAPI的URL:http://localhost:5577/api/values/1開始,TestAPI利用HttpClient請(qǐng)求網(wǎng)關(guān)URL:http://localhost:5000/api001/values,網(wǎng)關(guān)中會(huì)利用HttpClient轉(zhuǎn)配置中映射URL:http://localhost:5001/api/values,API001會(huì)利用HttpClient請(qǐng)求URL:http://localhost:5000/api002/values,網(wǎng)關(guān)中會(huì)利用HttpClient轉(zhuǎn)配置中映射URL:http://localhost:5002/api/values
?
需要啟動(dòng)項(xiàng)目:
1、 用dotnet Butterfly.Web.dll --EnableHttpCollector=true啟動(dòng)Butterfly-web-preview-0.0.8
2、 啟動(dòng)OcelotGateway
3、 啟動(dòng)API001
4、 啟動(dòng)API002
?
打開http://localhost:9618
查看Traces
?
?
可以通過Traces第二張圖請(qǐng)求的上下級(jí)序順可以看到與我們上面分析的請(qǐng)求路徑一致。
查看Dependencies
?
如果Dependencies中把雙箭頭改成兩個(gè)單箭頭,加上求步驟序列編號(hào)就更清晰了。
相關(guān)文章:
Ocelot——初識(shí)基于.Net Core的API網(wǎng)關(guān)
Ocelot API網(wǎng)關(guān)的實(shí)現(xiàn)剖析
微服務(wù)網(wǎng)關(guān)Ocelot
API網(wǎng)關(guān)Ocelot 使用Polly 處理部分失敗問題
談?wù)勎⒎?wù)中的 API 網(wǎng)關(guān)(API Gateway)
Ocelot網(wǎng)關(guān)
Ocelot統(tǒng)一權(quán)限驗(yàn)證
應(yīng)用監(jiān)控怎么做?
ASP.NET Core之跨平臺(tái)的實(shí)時(shí)性能監(jiān)控
.Net Core 2.0+ InfluxDB+Grafana+App Metrics 實(shí)現(xiàn)跨平臺(tái)的實(shí)時(shí)性能監(jiān)控
應(yīng)用程序的8個(gè)關(guān)鍵性能指標(biāo)以及測(cè)量方法
使用Metrics監(jiān)控應(yīng)用程序的性能
下一個(gè)計(jì)劃 : .NET/.NET Core應(yīng)用性能管理
Ocelot監(jiān)控
Ocelot 集成Butterfly 實(shí)現(xiàn)分布式跟蹤
原文:http://www.cnblogs.com/axzxs2001/p/8478340.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的Ocelot中使用Butterfly实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拥抱.NET Core系列:Memory
- 下一篇: .NET Core 2.1 Previe