自建電商平臺分佈式微服務架構--服務治理、服務隔離

  近些年分佈式框架很是火熱,目前國內使用最多的框架是阿里的Dubbo體系架構,最近也有很多公司轉型到Spring Cloud的懷抱,還有一部分選擇自建分佈式微服務架構。  本片博文主要講述開發者使用自建的方式搭建微服務框架,主要目的是爲了讓開發者在底層實現上面更加詳細的瞭解微服務原理。

  本文以一個電商平臺用自建分佈式微服務架構爲線索來講解,代碼中包含了自建微服務框架中衆多核心模塊代碼:服務註冊--服務發現--服務調用--服務隔離--服務熔斷。詳細代碼已經上傳gitHub了,地址:https://github.com/yun19830206/CloudShop-MicroService-Architecture    讀者可以根據其公司不同業務形態,直接在此框架中修改適配,以便使用在自己的企業當中。下面詳細介紹一下此電商平臺的核心架構圖、模塊代碼分析。

平臺核心架構圖

服務註冊模塊UML模型

服務發現模塊UML模型

服務調用與隔離模塊UML模型

 

GitHub中項目模塊代碼、構建情況介紹

以常見電商微服務爲模型,本工程是自建微服務系統核心架構,利用Zookeeper做服務治理,用Hystrix做服務容錯保護。 工程中業務代碼沒有編寫,但是詳細的框架代碼都已經全部編寫完成,況且有非常詳細的註釋與說明,並做框架做了各個層面的驗證(有驗證頁面)

系統模塊說明

  • cs_pojo:系統公用模型Model子工程
  • cs_core:核心系統子工程,完成服務註冊、服務發現、服務調用容災處理、各種核心功能提供
  • cs_gateway:系統統一對外Api接口調用工程
  • cs_order:訂單業務系統
  • cs_product:商品業務系統
  • cs_user:會員業務系統

子工程啓動項目地址(服務啓動必須先啓動Zookeeper服務,並且在微服務中填寫正確微服務地址)

模塊引用關係說明

見<cloudshop-businessModel.vsd>裏面的對應章節關係圖

此分佈式系統構建方法說明----服務註冊--服務發現--服務調用--服務隔離 這四者的核心關係見visio圖

此框架待驗證的點

  • 服務註冊:如order服務做成集成的了,在不斷的服務調用過程中,先後啓動1-3個product(再停用1個服務),要能看到服務註冊的結果變化。
  • 服務依賴隔離:如order集羣3個引用(再停用1個服務),分時段調用超時接口、異常接口、時好時壞接口,看是否能不影響業務主線程: 具體測試驗證頁面見:http://IP:Port/frameTest.html; 裏面此框架詳細的驗證方法和理論,讀者可以根據這些線索去理解接口、方法、思路

框架驗證頁面:http://IP:Port/frameTest.html; 具體驗證的點有

一:查看服務註冊結果,通過ServiceCall的方式獲得的服務註冊信息(ServiceDiscovery.serviceCacheBuilder()方式)
一:查看服務註冊結果,查看服務註冊結果(實時Zookeeper方式查看所有服務)
二: 監控服務器資源:包括堆內存信息、線程信息、各種GC信息
三: 輪訓查看所有ServiceCall調用監控結果(GateWay爲發起方)(每一次遠程服務調用都會產生一個服務調用的結果)
四: 調試服務調用ServiceCall返回類型:正常,失敗,超時,異常接口(注意看ServiceCall調用監控結果)(直接調用與Hystrix隔離調用兩種)。注意這裏的調試時重點難點

Hystrix使用的驗證包括:服務隔離、失敗(異常、超時)服務降級(執行fallBack)、熔斷器打開、線程池滿

一:服務隔離看《cloudshop-businessModel.vsd.Hystrix服務驗證圖》一頁
二:失敗(一個請求失敗執行fallBack正常好驗證)、異常(一個請求失敗執行fallBack正常好驗證)都比較好驗證,也看一部分的圖
三:熔斷器打開(的標誌是後續請求不執行run()方法,而直接執行fallBack()方法)看《cloudshop-businessModel.vsd.Hystrix服務驗證圖》一頁
四:線程池滿(的標誌是後續請求不執行run()方法,而直接執行fallBack()方法)看《cloudshop-businessModel.vsd.Hystrix服務驗證圖》一頁(有幾項沒有搞清楚)

Hystrix的hystrix-dashboard查看方式

一:必須要配置Hystrix Dashboard的Servlet,在Gateway項目web.xml中配置HystrixMetricsStreamServlet
二:解壓啓動tomcat壓縮包(Hystrix查看Dashboard的官方項目)(apache-tomcat-8.0.36_hystrix-dashboard-7979.rar),輸入網址:http://localhost:7979/
三:確保整個項目都已經啓動正常運行了,並且調用了很多次HystrixCommand(多調用幾種服務,成功、失敗都多嘗試幾次)
四:打開Dashboard地址:http://localhost:7979/,然後依次填入"Stream Type: Hystrix","App path",Add Stream, Monitor Streams 就能看到官方監控結果,見《cloudshop-businessModel.vsd.Hystrix dashboard》:監控地址輸入:http://localhost:9003/hystrix.stream

驗證直接遠程調用方式(NormalRestTemplateRPCServiceCallerImpl)與Hystrix服務隔離調用方式(HystrixRPCServiceCallerImpl),會把服務拖垮的情況

PS:注意不能一啓動服務的時候就做併發測試,需要先進行一些正常成功服務的調用一段時間纔可以,因爲先要有成功率的的基礎數據。
1:Gateway項目,NIOmaxThreads=500,port=9003,啓動參數:-server -Xms128M -Xmx256M
2:Order項目,NIOmaxThreads=500,port=9002,啓動參數:-server -Xms128M -Xmx256M
3: Product項目,NIOmaxThreads=500,port=9001,啓動參數:-server -Xms128M -Xmx256M
4: Hystrix是如何保護應用的,詳見《Hystrix是如何保護應用驗證.docx》文檔

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章