一、概念
基于springboot基礎上用于快速建構分布式系統的通用模式的工具集。
二、特點
1、約定優于配置;
2、隐藏元件複雜性;
3、輕量級元件;
4、元件豐富,功能齊全,例如:服務發現、斷路器、微服務網關等;
5、選型中立、豐富;
6、靈活。
三、服務消費者與服務提供者
在微服務架構中有兩種角色:服務消費者與服務提供者,二者關系如下:
服務提供者:服務的被調用者
服務消費者:服務的調用者
例如,在電影系統中,使用者購買電影票票之前,電影服務需要調用使用者服務的接口擷取使用者資訊,此時的電影服務就是調用方,即服務消費者,使用者服務為被調用方,即服務提供者。
四、微服務實踐
1、服務提供者:使用者服務
項目結構如下:
這個demo主要是為了示範服務與服務之間的通信,是以不再配置資料源。
user.java
iuserservice.java
userserviceimpl.java
usercontroller.java
returnutil.java
application.yml
啟動項目後通路:http://localhost:8010/user/getuserinfo?userid=1
得到相應:
表示接口已通。
2、服務消費者:電影服務
項目架構如下:
user.java和returnutil.java與上例相同在此不再展示。
movieapplicaiton.java
moviecontroller.java
此時啟動項目,通路:http://localhost:8020/movie/findbyid?userid=1
得到響應:
至此,一個簡單的電影微服務就完成了。
五、上述例子中存在的問題
1、在代碼中寫死通路路徑
在電影服務中,可以将user服務的通路路徑寫到yml配置檔案中,使代碼更清爽:
yml:
2、适用場景有限:當使用者服務的位址或端口号發生改變時,需要修改電影服務的配置檔案并且重新部署,這顯然是不可取的。