1. 程式人生 > >Ocelot中使用Butterfly實踐

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,本篇部落格講述一個案例的實現。

部落格中程式碼參見https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/OcelotAndButterfly,可只下載下面的專案進行測試。

專案說明表:

專案名稱

專案型別

說明

OcelotGateway

web api

5000

閘道器專案

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

需要啟動專案:

1、 用dotnet Butterfly.Web.dll --EnableHttpCollector=true啟動Butterfly-web-preview-0.0.8

2、 啟動OcelotGateway

3、 啟動API001

4、 啟動API002

檢視Traces

 

 

可以通過Traces第二張圖請求的上下級序順可以看到與我們上面分析的請求路徑一致。

檢視Dependencies

 

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

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

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

相關推薦

Ocelot使用Butterfly實踐

Ocelot(https://github.com/TomPallister/Ocelot)是一個用.net core實現的API閘道器,Butterfly(https://github.com/ButterflyAPM/butterfly)是用.net core實現的全程式跟蹤,現在,Ocelot中可以使用

JavaScript 設計模式入門和框架實踐 http://www.codeceo.com/article/javascript-design-pattern.html

{} static log block 抽象 listener args assign ack 在編寫JS代碼的過程中,運用一定的設計模式可以讓我們的代碼更加優雅、靈活。 下面筆者就結合諸如redux的subscribe、ES6的class、vue裏面的$dispatch、

ceph在品高雲實踐

集群擴容 load 邏輯關系 ast deep python 參數 了無 版本信息 ceph簡介 ceph是業界目前人氣最高的開源存儲項目之一,關於其定義在官網是這樣的:“Ceph is a unified, distributed storage system desig

關於flash怎樣引用到網頁實踐

flash怎樣引用到網頁中不得不說,博文管理後臺簡直是炸了。。。。不過把 那個第一行css錯位的div刪掉就好了首先附上一張圖和一個鏈接,留給自己看https://www.zhihu.com/question/19728465 盡管是這樣,作為一個從12年才開始進入it行業就被一直灌輸h5是未來的前端,還是想

GC調優在Spark應用實踐(轉載)

avg fix 時也 net aso 會有 介紹 完整 頻繁 Spark是時下非常熱門的大數據計算框架,以其卓越的性能優勢、獨特的架構、易用的用戶接口和豐富的分析計算庫,正在工業界獲得越來越廣泛的應用。與Hadoop、HBase生態圈的眾多項目一樣,Spark的運行離不開J

Elastic Search搜索引擎在SpringBoot實踐

ES Java Spring 實驗環境 ES版本:5.3.0 spring bt版本:1.5.9 首先當然需要安裝好elastic search環境,最好再安裝上可視化插件 elasticsearch-head來便於我們直觀地查看數據。 當然這部分可以參考本人的帖子:《centos7上elastic s

自動化接口用例從 1 到 1000 過程實踐和思考

而在 信息 dfa 不同 清除 opera 等待 就是 基類 引言 當一個新人剛加入公司的時候,我們通常告訴新人怎麽去寫一個自動化用例:從工程配置到如何添加接口、如何使用斷言,最後到如何將一個用例運行起來。 而在實際工作和業務場景中,我們常常面臨著需要編寫和組織一堆用例的情

人力資源會計在公司治理實踐探討_愛學術

ffffff 標準 spa family 流量 所有權 依據 spl one 【摘要】人力資源會計可以為公司管理層提供管理人力資源所需要的信息,並能調動企業職工的積極性,對公司治理起著不可或缺的作用。當前,人力資源會計在公司治理實踐中存在的主要問題是,人力資源會計的核算對象

關於金剛經在運維開發實踐

量子 洞察 身體 既然 後來 同事 是我 詞語 定義 參考 姚秦 鳩摩羅什 《金剛般若波羅蜜經》 梁 昭明太子 《金剛經》三十二品 唐 六祖惠能 六祖講《金剛經》 關於金剛經 金剛經(《金剛般若波羅蜜經》,又譯《佛說能斷金剛般若波羅蜜多經》,簡稱《

jmeter使用最佳實踐方法

clu control 模擬 rem 添加 語言 html 需求 threads 官方文檔(Best Practices-最佳實踐部分摘選):https://jmeter.apache.org/usermanual/best-practices.html 一、線程組 Use

Cookie和Session在Node.JS實踐(二)

快速理解 開發工具 ren 發揮 超過 see 技術點 用戶 img Cookie和Session在Node.JS中的實踐(二) cookie篇在作者的上一篇文章Cookie和Session在Node.JS中的實踐(一)已經是寫得算是比較詳細了,有興趣可以翻看,這篇是ses

多個貝塞爾曲線在同一個animate動畫實踐

貝塞爾曲線(Bézier curve): 又稱貝茲曲線或貝濟埃曲線,是應用於二維圖形應用程式的數學曲線。一般的向量圖形軟體通過它來精確畫出曲線,貝茲曲線由線段與節點組成,節點是可拖動的支點,線段像可伸縮的皮筋,我們在繪圖工具上看到的鋼筆工具就是來做這種向量曲線的。貝塞爾曲線是計算機圖形學中相

google.tagmanager 在單頁面實踐

在上一篇文章中說了下基礎的 tagmanager 怎麼使用 入口在這裡 下面是我遇到的一些問題,以及處理方法,可能有些有問題,或者處理的很複雜,如果你有更好的思路,請一定聯絡我 [email protected] 感謝。 一、單應用頁面怎麼處理 PV(pageview)? 現在有很多優秀的框架

Istio在UAEK實踐改造之路

為什麼需要ServiceMesh UCloud App Engine on Kubernetes(後簡稱“UAEK”)是UCloud內部打造的一個基於Kubernetes的,具備高可用、跨機房容災、自動伸縮、立體監控、日誌蒐集和簡便運維等特性計算資源交付平臺,旨在利用容器技術提高內部研發運維效率

訊息服務在電商實踐

1 商品和訂單服務中使用MQ 1.1 同步 在訂單生成的時候直接扣庫存,這是最初等的方式扣庫存,這種方式比較簡單,但是也有一系列的問題: 會造成有很多訂單把產品庫存扣除而並沒有支付,這就需要有一個後臺指令碼,將一段時間內沒有支付的訂單的庫存釋放,把訂單取消

Immutable.js 以及在 react+redux 專案實踐

來自一位美團大牛的分享,相信可以幫助到你。 原文連結:https://juejin.im/post/5948985ea0bb9f006bed7472?utm_source=tuicool&utm_medium=referral 前言   本文主要介紹facebook推出的一個類庫

從滴滴出行業務實踐聊聊如何構建大中臺架構

經歷了 5 年的發展,滴滴出行現已擁有 4.5 億使用者、超過 2100 萬車主,業務覆蓋 400+ 城市。 在創業初期,為了快速擁抱業務,架構的建設在體系化、完善度等方面會有所不足。隨著時間的推移,架構在可持續性、穩定性等方面不斷進步。 2017 年 12 月 1 日,在 51CTO

Java架構/一致性Hash演算法在資料庫分表實踐

最近有一個專案,其中某個功能單表資料在可預估的未來達到了億級,初步估算在90億左右。與同事詳細討論後,決定採用一致性Hash演算法來完成資料庫的自動擴容和資料遷移。整個程式細節由我同事完成,我只是將其理解併成文,供有相同問題的同行參考。 參看此文的兄弟,預設各位已經熟悉一致性hash

Esxi手動實踐出來的自動化運維方法----日常批量管理操作好助手(Ansible)

在Linux的世界,Ansible是實現自動化運維的常用好工具,通過它可以很好地批理執行命令,實現高效對大量伺服器的管理,極大提高運維效率(當然現在WINDOS下也可以實用Ansible進行批量管理實現運維自動化,不過相對應用較少)。 由於公司裡有許多ESXI伺服器,而時常我也會用SSH上去進行

weex 載入三端(android ios web) 本地圖片 解決(專案實踐

  本文講解內容為weex載入三端本地圖片,所寫解決方案均已驗證,使用sdk版本為0.18.0,其他版本不能保證可行。   weex載入圖片方式有三種,1.src直接引用base64編碼,2.載入網路圖片,3.載入本地圖片(三端分別放在專案目錄)。前兩種都是比較簡單直接,第三種相對初