內容來源:2017年11月23日,華為開發工程師李達港在“ServiceComb線上直播”進行《ServiceComb 快速入門》演講分享。IT 大咖說(ID:itdakashuo)作為獨家視訊合作方,經主辦方和講者審閱授權釋出。
閱讀字數:2097 | 4分鐘閱讀
嘉賓演講視訊回顧及PPT:suo.im/1Z7SBP
摘要
ServiceComb專案組開發工程師李達港線上直播分享如何對ServiceComb服務框架進行微服務開發,主要涵蓋三方面內容:從零開始開發體質指數應用;微服務治理能力體驗;微服務快速上雲。
從零開始開發體質指數應用
在開始開發前,需先確保相關依賴工具已於本地安裝,主要包括:git, oracle JDK 1.8, maven 3.x, docker 1.11.2,intelliJ idea。
此外,需先在本地安裝 ServiceComb Java Chassis(SDK),執行以下指令:
並執行 Service Center
在 ServiceComb 微服務框架中,Service Center 提供服務註冊及服務發現功能。
體質指數應用主要包含兩個微服務,一個是負責後臺運算的體質指數計算器,另一個是提供使用者介面及閘道器服務的體質指數介面。
其執行流程為:
其中,虛線表示服務註冊及服務發現的過程。
現在從intelliJ建立一個全新的工程,並引入相關依賴項。
需要注意的是,此處java-chassis-dependencies這個依賴項是以pom的方式匯入的,主要為了統一整個專案的依賴項的版本,避免出現版本衝突問題。
然後,需要新增一個模組用於實現運算服務。主要包括以下步驟:
1、引入依賴項:
2、運算結果資料結構定義:
具體運算實現。根據公式進行實現,程式碼如下:
4、例項資訊介面及其實現。
5、服務端點定義。用於生成服務契約,使得服務間能無縫進行通訊。
6、暴露運算服務的Restful端點:
這裡用@RestSchema註釋端點後, ServiceComb 微服務框架會自動生成對應的服務端點契約,並根據如下的resources/ microservice.yaml 檔案中的定義來配置端點埠,將契約和服務一起註冊到服務註冊中心。
6、服務啟動入口。只需新增 @EnableServiceComb 的註解即可啟用 ServiceComb 微服務框架,程式碼如下:
經過以上簡單幾步即可完成運算服務的開發。接下來將進行體質指數介面的實現,此時再新建一個模組。
1、引入依賴項
2、服務啟動入口。只需要宣告啟用ServiceComb和Zuul即可。
3、在 resources/application.yaml 檔案中配置路由規則及服務埠資訊:
4、在 resources/microservice.yaml 檔案中配置閘道器服務的資訊和服務註冊中心的地址。
5、在resources目錄下新建一個名為static的目錄用於存放前端網頁檔案,具體的實現可在https://github.com/ServiceComb/ServiceComb-Java-Chassis/blob/master/samples/bmi/webapp/src/main/resources/static/index.html獲取。
至此,體質指數應用已開發完畢。此時,分別在IDE中選中運算服務和閘道器服務的啟動入口檔案右鍵執行,待服務啟動完畢,即可通過http://localhost:8889訪問體質指數應用,屆時將能看到如下介面,並可輸入您的身高和體重資訊驗證服務是否正常執行。
微服務治理能力體驗
負載均衡
當對體質指數計算器進行水平擴充套件時,需要將請求均衡地分發到多個體質指數計算器上。
開啟:預設情況下會使用內建的一個簡單的負載均衡的實現,不需要額外的配置。
驗證:對體質指數計算器微服務進行水平擴充套件,使其執行例項數為2,即新增一個執行例項,此時需要修改運算服務模組中的microservice.yaml檔案,將服務執行埠由7777改為7778,以避免出現埠衝突,然後再執行一個運算服務即可。
此時點選 Submit 按鈕就可以看到如下兩個介面中的例項ID交替出現。
流量控制
流量控制機制通過控制資料傳輸速率來避免微服務過載執行。
開啟:
1、在體質指數計算器的pom.xml檔案中新增依賴項:
2、在體質指數計算器的microservice.yaml檔案中指明使用流量控制的處理鏈及指定流控策略:
驗證:
訪問http://localhost:8889,在身高和體重的輸入框中輸入正數,嘗試在1秒內多次點選 Submit 按鈕,此時就能看到網頁由左側的正常的介面變成了右側提示由於流控受限而請求被拒的介面。
服務治理
服務治理主要用於解決或緩解服務雪崩的情況,即個別微服務表現異常時,系統能對其進行容錯處理,從而避免資源的耗盡。
啟用:
1、在體質指數計算器的pom.xml檔案中新增依賴項:
2、在體質指數計算器的microservice.yaml檔案中指明使用服務治理的處理鏈及指定熔斷和容錯策略:
驗證:
1、使服務進入熔斷狀態。訪問http://localhost:8889,在身高或體重的輸入框中輸入一個負數,連續點選三次或以上 Submit 按鈕,此時在網頁下方能看到類似左圖的介面。
2、驗證服務處於熔斷狀態。在身高和體重的輸入框中輸入正數,再次點選 Submit 按鈕,此時看到的介面依然是類似左圖的介面。同時在體質指數計算器執行日誌也能看到呼叫不再丟擲異常,而是出現類似 fallback called 的日誌。
3、驗證服務恢復正常。約15秒後,在身高和體重的輸入框中輸入正數,點選 Submit 按鈕,此時介面顯示正常。
分散式呼叫鏈追蹤
分散式呼叫鏈追蹤用於有效地監控微服務的網路延時並視覺化微服務中的資料流轉。
啟用:
1、在體質指數計算器的pom.xml檔案中新增依賴項:
2、在體質指數計算器的microservice.yaml檔案中新增分散式追蹤的處理鏈:
3、在體質指數介面的pom.xml檔案中新增依賴項:
體質指數應用中已配置好了上述配置項,只需執行以下幾步即可:
使用 Docker 執行 Zipkin 分散式追蹤服務;
重啟體質指數計算器微服務;
重啟體質指數介面微服務。
驗證:
1、訪問http://localhost:8889,在身高和體重欄處輸入正數,並點選 Submit 按鈕。
2、訪問http://localhost:9411,檢視分散式呼叫追蹤情況,可得下方介面。
微服務快速上雲
通過使用docker-mavn-plugin可快速實現開發的微服務打包為docker映象的功能。而基於ServiceComb開發的微服務也能實現無縫上雲,只需以下簡單幾步:
1、在專案pom檔案中新增華為ServiceStage的profile:
2、分別在運算服務和閘道器服務中修改服務中心地址,並新增配置中心地址和監控中心地址:
然後即可通過我們提供的一鍵釋出指令碼將應用從編譯到最後部署到華為ServiceStage上的映象倉庫的流程自動化。隨後即可通過我們提供的一鍵部署模板實現華為ServiceStage的微服務自動部署執行。
有不同的意見也歡迎來和我們進行討論,參與到社群工作中:
ServiceComb官網:
http://servicecomb.io/cn/
ServiceCombGithub:
https://github.com/ServiceComb
微服務引擎交流論壇:
http://forum.huaweicloud.com/forum.php?mod=forumdisplay&fid=622。
最後,祝賀華為雲發起的開源專案ServiceComb全票通過進入Apache孵化器。歡迎大家一起攜手建設更活躍的ServiceComb社群,為Apache開源生態貢獻力量。