服務(wù)治理是微服務(wù)架構(gòu)中最為核心和基礎(chǔ)的模塊,它主要用來(lái)實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動(dòng)化注冊(cè)與發(fā)現(xiàn)。
Spring Cloud通過(guò)為Eureka增加了Spring Boot風(fēng)格的自動(dòng)化配置,我們只需要通過(guò)簡(jiǎn)單引入依賴和注解配置就能讓Spring Boot構(gòu)建的微服務(wù)應(yīng)用輕松地與Eureka服務(wù)治理體系進(jìn)行整合。
Spring Cloud Eureka包含了服務(wù)端和客戶端。Eureka服務(wù)端,也稱為服務(wù)注冊(cè)中心,Eureka客戶端,主要處理服務(wù)的注冊(cè)與發(fā)現(xiàn)。
服務(wù)端
- 引入依賴
<dependency>
<groupId>org.springframeword.cloud</groudId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
- 注解激活
@EnableEurekaServer
3.application.properties屬性配置
server.port=1111
eureka.instance.hostname=
eureka.client.register-with-eureka=false # 由于該應(yīng)用為注冊(cè)中心,所以設(shè)置為false,代表不向注冊(cè)中心注冊(cè)自己
eureka.client.fetch-registry=false # 由于注冊(cè)中心的職責(zé)就是維護(hù)服務(wù)實(shí)例,它并不需要去檢索服務(wù),所以設(shè)置為false
eureka.client.serviceUrl.defaultZone=http ://${eureka.instance.hostname}:${server.port}/eureka/
客戶端
- 引入依賴
<dependency>
<groupId>org.springframeword.cloud</groudId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
注解激活
@EnableDiscoveryClientapplication.properties屬性配置
# 自報(bào)家門
spring.application.name=xxx
# 指定服務(wù)注冊(cè)中心的地址
eureka.client.serviceUrl.defaultZone=http: //localhost:1111/eureka/
如果我們不想使用主機(jī)名來(lái)定義注冊(cè)中心的地址,也可以使用IP地址的形式,但是需要在配置文件中增加eureka.instance.prefer-ip-address=true,該值默認(rèn)為false
- 代碼中使用DiscoveryClient的對(duì)象(通過(guò)注入),獲取從服務(wù)中心獲取的服務(wù)相關(guān)的信息
服務(wù)消費(fèi)
服務(wù)消費(fèi)方是Eureka服務(wù)治理下的一個(gè)普通的微服務(wù)(客戶端),因此需要按照客戶端配置,并與其他微服務(wù)進(jìn)行通信即可,通信方式點(diǎn)我。
配置詳解
在實(shí)際使用Spring Cloud Eureka的過(guò)程中,幾乎都是對(duì)Eureka客戶端進(jìn)行配置。
服務(wù)端的配置參考org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean類進(jìn)一步學(xué)習(xí),這些參數(shù)均以eureka.server作為前綴。
客戶端的配置主要分為以下兩方面:
- 服務(wù)注冊(cè)相關(guān)的配置:包括注冊(cè)中心的地址、服務(wù)獲取的間隔時(shí)間、可用區(qū)域等
- 服務(wù)實(shí)例相關(guān)的配置:包括服務(wù)實(shí)例的名稱、IP地址、端口號(hào)、健康檢查路徑等
服務(wù)注冊(cè)相關(guān)的的配置參考org.springframeword.cloud.netflix.eureka.EurekaClientConfigBean類,這些配置信息都已eureka.client為前綴。
服務(wù)實(shí)例相關(guān)的配置參考ort.springframework.cloud.netlix.eureka.EurekaInstanceConfigBean類,這些配置信息都已enreka.instance為前綴。