[每天學習微服務-網關] ServiceComb+SpringCloud Zuul--帶圖

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

 

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

具體可參考:https://docs.servicecomb.io/java-chassis/zh_CN/edge/by-servicecomb-sdk.html 

 

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

 

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

 

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

 

 

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

   
技術準備

ServiceComb 作爲後端微服務核心框架
ServiceCenter 作爲服務發現與註冊中心
SpringCloud Zuul 組件做服務網關

環境準備


以下環境爲Windows 64位系統

 

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

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

 

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

https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html

 

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

https://maven.apache.org/install.html

 

ServiceCenter安裝

下載地址:

http://servicecomb.apache.org/release/service-center-downloads/

 

下載後解壓如下▼

在該目錄下雙擊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文件如下

02配置文件

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

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

03項目入口

新建啓動類 ZuulApplication.java

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

04啓動

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

三. 演示效果

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

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

 

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

總結

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

 

參考

[1] SpringCloud Zuul

https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html  

[2] ServiceComb

http://servicecomb.apache.org/cn/docs/quick-start/   
————————————————

原文鏈接:https://blog.csdn.net/ServiceComb/article/details/87098599

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