摘要:連續點擊幾次打招呼按鈕,可以在啓動的2個Hello微服務實例的控制檯中看到被調用的信息,如下圖(由於這裏使用的ServiceComb默認的負載均衡策略 輪詢,可見到兩個實例都均被調用,關於負載均衡,我們將在後續的文章中解讀)。ServiceComb 在自身的處理鏈HandlerTrain中已完成Zuul的對接,用戶用極簡單的方法配置後即可使微服務應用具備網關服務的能力。

在微服務架構模式中後端服務的實例數一般是動態的,於客戶端而言很難發現動態改變的服務實例的訪問地址信息,服務網關能對用戶提供統一的入口。

ServiceComb Java-Chassis 內置了網關服務EdgeService,開發者可以非常簡單的搭建一個EdgeService服務。

具體可參考: https://docs.servicecomb.io/ja ... .html

本文將介紹ServiceComb與SpringCloud的Zuul網關組件協同工作,以構建微服務應用。ServiceComb 在自身的處理鏈HandlerTrain中已完成Zuul的對接,用戶用極簡單的方法配置後即可使微服務應用具備網關服務的能力。

爲使讀者更好地理解,本文將編寫一個簡單的 Hello 微服務,並啓動2個實例來進行演示。

Hello微服務提供hello/{name}接口,只需從前端輸入參數name就可從後端微服務獲取到程序員百看不厭的Hello world結果。

微服務模式下的Hello應用模型

技術準備

ServiceComb 作爲後端微服務核心框架

ServiceCenter 作爲服務發現與註冊中心

SpringCloud Zuul 組件做服務網關

環境準備

以下環境爲Windows 64位系統

● 安裝git,詳情可參考git安裝教程

● 安裝JDK 1.8,詳情可參考JDK安裝教程。

● 安裝Maven 3.x,詳情可參考Maven安裝教程

ServiceCenter安裝

下載地址:

http://mirrors.hust.edu.cn/apa ... .1.0/

下載後解壓如下▼

【2】

在該目錄下雙擊service-center.exe即可啓動,命令窗口中出現如下信息基本代表ServiceCenter啓動成功,從這個信息也可以得知ServiceCenter監聽的是30100端口,等下配置文件要用到。

問題點:有可能會有如下信息,這個一般是端口被佔用,很可能你打開了兩個ServiceCenter,都關閉後再打開就可以了。

示例

一、後端微服務 HelloService

01.添加依賴

新建maven項目HelloService,pom文件如下

02.配置

新建ServiceComb配置文件src/main/resources/microservice.yaml,內容如下

03.項目入口

新建啓動類HelloApplication.java,內容如下

新建Controller類HelloController.java (這裏我習慣SpringMvc的叫法,重點看註解)

04.啓動

到此,Hello微服務就寫完了。這裏要啓動2個實例。

1.先打包,執行mvn clean package

2.在項目根目錄下target目錄下將lib目錄和生成的jar包複製到另一個目錄中

3.複製jar包,修改其中一個jar包微服務啓動端口號爲8888(通過WinRar解壓縮軟件打開jar包並打開microservice.yaml文件修改裏面的rest端口號)

4.在當前目錄打開兩個cmd命令窗口,分別執行命令java -jar HelloService-7777.jar和java -jar HelloService-8888.jar 。此時已經啓動了2個微服務實例。

二、編寫Zuul網關服務

01. 添加依賴

新建maven項目 zuulserver,pom文件如下

【12】

02.配置文件

新建springboot配置文件src/main/resources/application.yaml,內容如下

新建ServiceComb配置文件src/main/resources/microservice.yaml,內容如下

03.項目入口

新建啓動類 ZuulApplication.java

新建靜態文件 src/main/resources/static/index.html,內容如下 (static目錄是按springboot項目規範,屬於應用靜態文件根目錄)

【17】

04.啓動

到此,網關服務器寫完,如下在IDEA裏面直接啓動應用

三. 演示效果

瀏覽器訪問 http://localhost:8080/ ,如下圖。 在輸入框中輸入姓名,就可以在下面看到打招呼的信息

連續點擊幾次打招呼按鈕,可以在啓動的2個Hello微服務實例的控制檯中看到被調用的信息,如下圖(由於這裏使用的ServiceComb默認的負載均衡策略 輪詢,可見到兩個實例都均被調用,關於負載均衡,我們將在後續的文章中解讀)。

此時用戶並不需要關心具體哪個實例被調用了,訪問的是哪個後端的實例地址,它只要訪問網關就可以了:)

總結

從以上的示例可以看出,通過 ServiceComb 結合SpringCloud Zuul 實現服務網關功能只需一些簡單的配置。後續可以在網關服務上實現統一的鑑權,日誌記錄,和自定義過濾器等。

瞭解更多信息請訪問:

官方網站 http://servicecomb.apache.org/

Github代碼倉庫

至此,第一章節就結束咯,期待志同道合的朋友們加入,ServiceComb的大門爲你們敞開~用心做開源,不忘初衷~

相關文章