華爲開源項目ServiceComb快速入門


內容來源:2017年11月23日,華爲開發工程師李達港在「ServiceComb在線直播」進行《ServiceComb 快速入門》演講分享。IT 大咖說(ID:itdakashuo)做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
php

閱讀字數:2097 | 4分鐘閱讀html

嘉賓演講視頻回顧及PPT:suo.im/1Z7SBP
前端

摘要

ServiceComb項目組開發工程師李達港在線直播分享如何對ServiceComb服務框架進行微服務開發,主要涵蓋三方面內容:從零開始開發體質指數應用;微服務治理能力體驗;微服務快速上雲。java

從零開始開發體質指數應用

在開始開發前,需先確保相關依賴工具已於本地安裝,主要包括:git, oracle JDK 1.8, maven 3.x, docker 1.11.2,intelliJ idea。git

此外,需先在本地安裝 ServiceComb Java Chassis(SDK),執行如下指令:github

並運行 Service Center
web

在 ServiceComb 微服務框架中,Service Center 提供服務註冊及服務發現功能。docker

體質指數應用主要包含兩個微服務,一個是負責後臺運算的體質指數計算器,另外一個是提供用戶界面及網關服務的體質指數界面。網絡

其運行流程爲:數據結構

其中,虛線表示服務註冊及服務發現的過程。

如今從intelliJ建立一個全新的工程,並引入相關依賴項。

須要注意的是,此處java-chassis-dependencies這個依賴項是以pom的方式導入的,主要爲了統一整個項目的依賴項的版本,避免出現版本衝突問題。

而後,須要新增一個模塊用於實現運算服務。主要包括如下步驟:

一、引入依賴項:

二、運算結果數據結構定義:

具體運算實現。根據公式進行實現,代碼以下:

四、實例信息接口及其實現。

五、服務端點定義。用於生成服務契約,使得服務間能無縫進行通訊。

六、暴露運算服務的Restful端點:

這裏用@RestSchema註釋端點後, ServiceComb 微服務框架會自動生成對應的服務端點契約,並根據以下的resources/ microservice.yaml 文件中的定義來配置端點端口,將契約和服務一塊兒註冊到服務註冊中心。

六、服務啓動入口。只需添加 @EnableServiceComb 的註解便可啓用 ServiceComb 微服務框架,代碼以下:

通過以上簡單幾步便可完成運算服務的開發。接下來將進行體質指數界面的實現,此時再新建一個模塊。

一、引入依賴項

二、服務啓動入口。只須要聲明啓用ServiceComb和Zuul便可。

三、在 resources/application.yaml 文件中配置路由規則及服務端口信息:

四、在 resources/microservice.yaml 文件中配置網關服務的信息和服務註冊中心的地址。

五、在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交替出現。

流量控制

流量控制機制經過控制數據傳輸速率來避免微服務過載運行。

開啓

一、在體質指數計算器的pom.xml文件中添加依賴項:

二、在體質指數計算器的microservice.yaml文件中指明使用流量控制的處理鏈及指定流控策略:

驗證:

訪問http://localhost:8889,在身高和體重的輸入框中輸入正數,嘗試在1秒內屢次點擊 Submit 按鈕,此時就能看到網頁由左側的正常的界面變成了右側提示因爲流控受限而請求被拒的界面。

服務治理

服務治理主要用於解決或緩解服務雪崩的狀況,即個別微服務表現異常時,系統能對其進行容錯處理,從而避免資源的耗盡。

啓用:

一、在體質指數計算器的pom.xml文件中添加依賴項:

二、在體質指數計算器的microservice.yaml文件中指明使用服務治理的處理鏈及指定熔斷和容錯策略:

驗證

一、使服務進入熔斷狀態。訪問http://localhost:8889,在身高或體重的輸入框中輸入一個負數,連續點擊三次或以上 Submit 按鈕,此時在網頁下方能看到相似左圖的界面。

二、驗證服務處於熔斷狀態。在身高和體重的輸入框中輸入正數,再次點擊 Submit 按鈕,此時看到的界面依然是相似左圖的界面。同時在體質指數計算器運行日誌也能看到調用再也不拋出異常,而是出現相似 fallback called 的日誌。

三、驗證服務恢復正常。約15秒後,在身高和體重的輸入框中輸入正數,點擊 Submit 按鈕,此時界面顯示正常。

分佈式調用鏈追蹤

分佈式調用鏈追蹤用於有效地監控微服務的網絡延時並可視化微服務中的數據流轉。

啓用:

一、在體質指數計算器的pom.xml文件中添加依賴項:

二、在體質指數計算器的microservice.yaml文件中添加分佈式追蹤的處理鏈:

三、在體質指數界面的pom.xml文件中添加依賴項:

體質指數應用中已配置好了上述配置項,只需執行如下幾步便可:

使用 Docker 運行 Zipkin 分佈式追蹤服務;

重啓體質指數計算器微服務;

重啓體質指數界面微服務。

驗證:

一、訪問http://localhost:8889,在身高和體重欄處輸入正數,並點擊 Submit 按鈕。

二、訪問http://localhost:9411,查看分佈式調用追蹤狀況,可得下方界面。

微服務快速上雲

經過使用docker-mavn-plugin可快速實現開發的微服務打包爲docker鏡像的功能。而基於ServiceComb開發的微服務也能實現無縫上雲,只需如下簡單幾步:

一、在項目pom文件中添加華爲ServiceStage的profile:

二、分別在運算服務和網關服務中修改服務中心地址,並新增配置中心地址和監控中心地址:

而後便可經過咱們提供的一鍵發佈腳本將應用從編譯到最後部署到華爲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開源生態貢獻力量。

相關文章
相關標籤/搜索