Adrian Cockcroft談分析微服務的響應時間分布
在德國柏林舉辦的 microXchg 大會上,Adrian Cockcroft進行了一場名為“ 分析微服務的響應時間分布 ”的演講,他為聽眾展現了如何結合使用由他設計的Spigo微服務架構模擬工具以及在線的Guesstimate Monte Carlo方法工具,實驗性地模擬復雜的微服務系統的請求響應時間,并以可視化的方式進行展現。
Cockcroft 是來自Battery Ventures的一位technology fellow,他在這次演講的開場部分講述了微服務平臺當前所面對的挑戰,包括對大規模服務的管理,以及分析(并理解)跨服務的請求與數據流。隨后,他為聽眾展示了“使用Go語言編寫的模擬協議交互”工具(即 Spigo ),這一工具可實現基于微服務的數據流的建模工作以及可視化展現。
Spigo可用于對復雜的架構進行模擬,可在構建該架構之前或之后使用。通過一個表現系統特性的JSON文件(Spigo以一種較松散的方式遵循 Netflix所創建的OSS 框架與工具),可以將被模擬的架構加載到工具中。模擬過程是通過一個基于Go語言的應用實現的,而最終的架構將通過 D3.js 這個JavaScript庫展現在一個web頁面中,以達到可視化的目的。服務之間的通信是通過Go 管道 (channel)模擬的,最終的流量跟蹤信息將被記錄保存下來以用于分析。Cockcroft表示,Spigo的目標是最終實現對真實的監控工具與日志記錄工具進行壓力測試。
系統中產生的流量追蹤信息將以一種可兼容 Zipkin 的格式進行記錄。Zipkin是一種數據流可視化與調式工具,它最初由推ter工程團隊所開發,如今已被 Adrian Cole 遷移為“ Open Zipkin ”項目,成為一種追蹤信息注解的通用格式。Zipkin不僅能夠以圖形方式展現架構中的服務與通信的依賴關系,還能夠展現每個訪問的數據流。
Cockcroft為參加microXchg的聽眾現場展示了一系列架構示例在Spigo中的可視化展現,這其中包括了一個受到Netflix啟發的“單一區域的Riak IoT實現”,以及“多區域的Riak IoT”的模擬,通過它建模得到的架構能夠從物聯網(IoT)設備中獲取數據、以流的方式提供處理后的數據、并提供一個用于分析的終結點。
Cockcroft提到,許多微服務架構的開發者會經常對于請求的響應時間進行預測,這些請求將通過多個服務以及網絡連接,才能夠生成響應,并最終將數據返回給用戶。通常來說,獨立服務的響應時間是可以確定的,但由于每個服務的時間會存在一些隨機的變數,因此很難有效地計算多個服務的總體響應時間,并將結果限定在一個可接受的公差之內。在具有極高復雜度的系統中,這一點顯得尤其困難,即使以最小及最大響應時間表示結果,也會因為變數太大,而使得結果沒有實際意義。
在某些其他領域中,例如機械工程及金融領域已經通過 Monte Carlo 方法解決了這種“ 公差疊加 ”問題。Cockcroft為聽眾講解了他通過在線的 Guesstimate 工具,為一個簡單的存儲功能的后端web服務生成一種Monte Carlo模擬的過程,該web服務使用了memcached、Apache Web服務器以及MySQL。系統中每個服務的響應時間范圍(以及常用的分布參數)都可以進行更改,讓建模過程能夠應對例外情況的發生。比方說,該模型能夠模擬出memcached緩存是否命中,也能夠模擬讓MySQL必須訪問磁盤以響應某個查詢的情形。
演講的下半部分對于Spigo工具近期發布的beta版本的功能進行了分析,新功能允許導出服務的響應時間分布結果,并將結果用于一個經過修改的Guesstimate的alpha版本中。 goguestimate 工具之前已經開發了某些功能,能夠生成可上傳至Guesstimate的分布結果,Spigo的新功能就是基于這一點所創建的。Spigo還引入了監控點功能(它使用了由 Peter Bourgon 開發的 go-kit 指標框架),它能夠獲取必要的數據,從而對于真實系統中的服務的響應時間分布進行建模。Cockcroft最后提醒聽眾,Spigo近期所做的工作是基于聽眾在大會上的反饋而計劃的,它還需要進一步的改進才能夠進行廣泛的應用與擴展。
Cockcroft在演講的結尾部分進行了幾個現場展示。他表示:對于微服務架構、以及服務間的訪問流的模擬對于復雜系統的設計、調試以及優化能夠起到很大作用。
Spigo工具很快就將被重命名為“simianviz”,如果讀者有興趣學習基于這一項目的開發,可以關注 Spigo 的Github庫,以及 simianviz 的推ter帳號。可以在microXchg的油Tube頻道上找到Adrian的演講“ 分析微服務的響應時間分布 ”的視頻,也可以在SlideShare上找到該演講的 幻燈片 。
查看英文原文: Adrian Cockcroft on Analyzing Response Time Distributions for Microservices
來自: http://www.infoq.com/cn/news/2016/02/analysing-response-microservices