Ocelot中使用Butterfly實踐

Ocelot(https://github.com/TomPallister/Ocelot)是一個用.net core實現的API網關,Butterfly(https://github.com/ButterflyAPM/butterfly)是用.net core實現的全程序跟蹤,如今,Ocelot中可使用Butterfly了,關於Ocelot和Butterfly具體功能參見各自的github站點,關於Ocelot和Butterfly組合實現,參數張善友博客http://www.csharpkit.com/2018-02-04_51207.html,本篇博客講述一個案例的實現。html

博客中代碼參見https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/OcelotAndButterfly,可只下載下面的項目進行測試。git

項目說明表:github

項目名稱web

項目類型json

端口api

說明架構

OcelotGateway微服務

web api測試

5000spa

網關項目

API001

web api

5001

業務api項目

API002

web api

5002

業務api項目

TestAPI

web api

5577

測試api項目

Ocelot

類庫

Ocelot官方源碼,由於有個bug,以進行pr,因此如今把clone下載來做了個修復,後續官方會修正。

Butterfly-web-preview-0.0.8

Web api

9618

Butterrfly執行程序,用來收集通過節點的數據,並做展現,能夠過來http://localhost:9618來訪問

 

項目結構:

 

API001和API002自己代碼很是簡單,就是請求後返回一個帶時間的字符串,API001在返回前,會調用API002,由於有網關存在,因此在API001的實現方法是請求網關中的API002映射路徑的(詳見項目代碼),而不是直接訪問API002(由於在微服務集羣中,API002應該有多個節點,這些節點經過服務註冊後才知道具體地址,因此在調用的時候,經過訪問網關的地址來達到訪問API002。

TestAPI中請求的是網關中的API001的映射(詳見項目代碼)

OcelotGateway中配置文件configuration.json中,開啓各ReRoutes中的HttpHandlerOptions下的UseTracing:true便可(詳見項目代碼)

須要引用butterfly.Client.AspNetCore項目有:API001,API002,OcelotGateway,TestAPI,如今butterfly.Client.AspNetCore版本是0.0.8,有bug(與做者聯繫後期版本會修正),能夠引用0.0.7進行測試。

請求的路徑以下圖:

 

請求從TestAPI的URL:http://localhost:5577/api/values/1開始,TestAPI利用HttpClient請求網關URL:http://localhost:5000/api001/values,網關中會利用HttpClient轉配置中映射URL:http://localhost:5001/api/values,API001會利用HttpClient請求URL:http://localhost:5000/api002/values,網關中會利用HttpClient轉配置中映射URL:http://localhost:5002/api/values

 

須要啓動項目:

一、 用dotnet Butterfly.Web.dll --EnableHttpCollector=true啓動Butterfly-web-preview-0.0.8

二、 啓動OcelotGateway

三、 啓動API001

四、 啓動API002

 

打開http://localhost:9618

查看Traces

 

 

能夠經過Traces第二張圖請求的上下級序順能夠看到與咱們上面分析的請求路徑一致。

查看Dependencies

 

若是Dependencies中把雙箭頭改爲兩個單箭頭,加上求步驟序列編號就更清晰了。

 

《基於.net core微服務架構視頻》

 http://edu.51cto.com/course/13342.html

相關文章
相關標籤/搜索