東莞市國外網(wǎng)站建設(shè)平臺(tái)谷歌網(wǎng)頁版
????????前文講解,完成了springboot、spring security、Oauth2.0的繼承,實(shí)現(xiàn)了對(duì)系統(tǒng)資源的安全授權(quán)、允許獲得授權(quán)的用戶訪問,也就是實(shí)現(xiàn)了單一系統(tǒng)的全部技術(shù)開發(fā)內(nèi)容。
????????Springboot是微服務(wù)框架,單一系統(tǒng)只能完成指定系統(tǒng)的功能;那么多個(gè)單一系統(tǒng)是如何實(shí)現(xiàn)數(shù)據(jù)的互聯(lián)互通,這就涉及到了我們解析來要要講解的框架spring cloud。
????????Spring Cloud是一系列框架的集合,構(gòu)建了服務(wù)治理(發(fā)現(xiàn)注冊(cè))、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控、分布式會(huì)話和集群狀態(tài)管理等功能,為我們提供一整套企業(yè)級(jí)分布式云應(yīng)用的完美解決方案。
????????本文重點(diǎn)講解服務(wù)的注冊(cè)與發(fā)現(xiàn),Spring Cloud 支持很多服務(wù)發(fā)現(xiàn)的軟件,Consul就是其中之一,支持服務(wù)發(fā)現(xiàn)、健康檢查、Key/Value 存儲(chǔ)、多數(shù)據(jù)中心。
1、Consul服務(wù)器的啟動(dòng)
(1)Consul下載地址:為不違反平臺(tái)引流規(guī)則,暫不提供下載地址,學(xué)友可以在平臺(tái)搜索。
(2)Consul server啟動(dòng)命令
運(yùn)行cosnul agent以server模式,
-server : 定義agent運(yùn)行在server模式
-bootstrap-expect :在一個(gè)datacenter中期望提供的server節(jié)點(diǎn)數(shù)目,當(dāng)該值提供的時(shí)候,consul一直等到達(dá)到指定sever數(shù)目的時(shí)候才會(huì)引導(dǎo)整個(gè)集群,該標(biāo)記不能和bootstrap共用
-bind:該地址用來在集群內(nèi)部的通訊,集群內(nèi)的所有節(jié)點(diǎn)到地址都必須是可達(dá)的,默認(rèn)是0.0.0.0
-node:節(jié)點(diǎn)在集群中的名稱,在一個(gè)集群中必須是唯一的,默認(rèn)是該節(jié)點(diǎn)的主機(jī)名
-ui-dir: 提供存放web ui資源的路徑,該目錄必須是可讀的
-rejoin:使consul忽略先前的離開,在再次啟動(dòng)后仍舊嘗試加入集群中。
-config-dir:配置文件目錄,里面所有以.json結(jié)尾的文件都會(huì)被加載
-client:consul服務(wù)偵聽地址,這個(gè)地址提供HTTP、DNS、RPC等服務(wù),默認(rèn)是127.0.0.1所以不對(duì)外提供服務(wù),如果你要對(duì)外提供服務(wù)改成0.0.0.0
應(yīng)用舉例:
☆ consul agent -server -ui -data-dir=/usr/local/consul -advertise=192.168.0.125 -bind=0.0.0.0 -client=0.0.0.0
☆ consul agent -dev -ui -node=consul-dev -bind=0.0.0.0 -client=0.0.0.0(已驗(yàn)證)
☆ consul agent -dev (僅限于本機(jī)服務(wù)器注冊(cè),其他IP無法注冊(cè))
(3)啟動(dòng)步驟如下:
☆ 以管理員身份運(yùn)行cmd;
☆ 使用CD命令切換到consul所在目錄路徑;
☆ 輸入consul agent -dev命令,回車,CMD顯示信息如下:
- Consul默認(rèn)使用端口為8500,在瀏覽器中輸入http://localhost:8500,顯示信息如下:
2、服務(wù)注冊(cè)
(1)在項(xiàng)目中引入spring cloud jar包
<!--consul-->
<dependency>
???? <groupId>org.springframework.cloud</groupId>
???? <artifactId>spring-cloud-starter-consul-discovery</artifactId>
???? <version>2.0.0.RELEASE</version>
</dependency>
(2)在application.yml中添加注冊(cè)信息
spring:
? cloud:?
??? consul:
????? host: 127.0.0.1
????? port: 8500
????? discovery:
??????? # 配置服務(wù)注冊(cè)到Consul上
??????? register: true
??????? # 配置服務(wù)健康檢測(cè)地址? 供Consul 調(diào)用
??????? health-check-path: /actuator/health???????????????????????
??????? #consul 健康檢測(cè)頻率
??????? health-check-interval: 15s
??????? # 配置注冊(cè)到consul 服務(wù)的id
??????? instance-id: SprintbootAction-one
??????? enabled: true
??????? service-name: SprintbootAction-one
??????? #告訴consul我注冊(cè)的時(shí)候你給我按ip注冊(cè)我地址(對(duì)應(yīng)no such host問題)。
??????? prefer-ip-address: true
??????? ip-address: 127.0.0.1
??????? (3)啟動(dòng)項(xiàng)目后,瀏覽器截圖如下:
??? 原工程服務(wù)注冊(cè)名稱為SpringbootAction-one,點(diǎn)擊該名稱,進(jìn)入詳細(xì)信息頁面,如下圖:
3、健康檢測(cè)
????????在實(shí)際的項(xiàng)目調(diào)測(cè)過程,由于網(wǎng)絡(luò)設(shè)置、參數(shù)設(shè)置問題,會(huì)出現(xiàn)健康檢測(cè)不通過問題。此時(shí),可以、通過在瀏覽器中輸入http://localhost:8500/v1/agent/checks,瀏覽返回信息如下:
{
??? "service:SprintbootAction-one": {
??????? "Node": "magic",
??????? "CheckID": "service:SprintbootAction-one",
??????? "Name": "Service 'SprintbootAction-one' check",
??????? "Status": "passing",
??????? "Notes": "",
??????? "Output": "HTTP GET http://127.0.0.1:2885/actuator/health: 200? Output: {\"status\":\"UP\"}",
???? ???"ServiceID": "SprintbootAction-one",
??????? "ServiceName": "SprintbootAction-one",
??????? "ServiceTags": [
??????????? "secure=false"
??????? ],
??????? "Type": "http",
??????? "Definition": {},
??????? "CreateIndex": 0,
??????? "ModifyIndex": 0
??? }
}
????????備注:"Output": "HTTP GET http://127.0.0.1:2885/actuator/health: 200? Output: {\"status\":\"UP\"}",健康檢測(cè)通過。
????????Spring cloud 與 consul 配置與運(yùn)用講解到此結(jié)束,學(xué)友們可以進(jìn)一步學(xué)習(xí)和驗(yàn)證。下文講解Spring boot 與zuul 配置與應(yīng)用,通過路由實(shí)現(xiàn)多個(gè)程序訪問之間的切換。