? ? ? ? ? Spring Cloud 封裝了 Netflix 公司開發(fā)的 Eureka 模塊來實(shí)現(xiàn)服務(wù)注冊和發(fā)現(xiàn)。Eureka 采用了 C-S 的設(shè)計架構(gòu)。Eureka Server 作為服務(wù)注冊功能的服務(wù)器,它是服務(wù)注冊中心。而系統(tǒng)中的其他微服務(wù),使用 Eureka 的客戶端連接到 Eureka Server并維持心跳連接。這樣系統(tǒng)的維護(hù)人員就可以通過 Eureka Server 來監(jiān)控系統(tǒng)中各個微服務(wù)是否正常運(yùn)行。SpringCloud 的一些其他模塊(比如Zuul)就可以通過 Eureka Server 來發(fā)現(xiàn)系統(tǒng)中的其他微服務(wù),并執(zhí)行相關(guān)的邏輯。
? ? ? ? Eureka包含了兩個組件:Eureka Server和Eureka Client
Eureka Server提供服務(wù)注冊服務(wù)
各個節(jié)點(diǎn)啟動后,會在EurekaServer中進(jìn)行注冊,這樣EurekaServer中的服務(wù)注冊表中將會存儲所有可用服務(wù)節(jié)點(diǎn)的信息,服務(wù)節(jié)點(diǎn)的信息可以在界面中直觀的看到
EurekaClient是一個Java客戶端,用于簡化Eureka Server的交互,客戶端同時也具備一個內(nèi)置的、使用輪詢(round-robin)負(fù)載算法的負(fù)載均衡器。在應(yīng)用啟動后,將會向Eureka Server發(fā)送心跳(默認(rèn)周期為30秒)。如果Eureka Server在多個心跳周期內(nèi)沒有接收到某個節(jié)點(diǎn)的心跳,EurekaServer將會從服務(wù)注冊表中把這個服務(wù)節(jié)點(diǎn)移除(默認(rèn)90秒)
? 注意:一個微服務(wù),既可以是服務(wù)提供者,又可以是服務(wù)消費(fèi)者,因此eureka將服務(wù)注冊、服務(wù)發(fā)現(xiàn)等功能統(tǒng)一封裝到了eureka-client端
使用Eureka
? ? ? ? 1.搭建Eureka Server
? ? ? ? 首先注冊中心服務(wù)端:eureka-server,必須是一個獨(dú)立的微服務(wù)
在pom文件中導(dǎo)入eureka服務(wù)端的依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
?給eureka-server服務(wù)編寫啟動類,需要添加@EnableEurekaServer注解才能開啟eureka的注冊中心功能
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args){
SpringApplication.run(EurekaApplication.class, args);
}
}
編寫一個application.yml文件
server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
?啟動微服務(wù),在瀏覽器訪問:http://127.0.0.1:10086
? ? ? ? 2.將客戶端都注冊到Eureka(服務(wù)提供者)
在客戶端中的pom文件中導(dǎo)入eureka-client依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
修改application.yml文件,添加服務(wù)名稱、eureka地址
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
?啟動客戶端,在eureka中看到注冊進(jìn)去的服務(wù)就可以實(shí)現(xiàn)遠(yuǎn)程調(diào)用了
? ? ? ? 3.服務(wù)發(fā)現(xiàn)(服務(wù)消費(fèi)者)
操作與服務(wù)注冊一致,首先導(dǎo)入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
編寫application.yml配置文件,添加服務(wù)名稱、eureka地址
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
? ? ? ? 4.在服務(wù)消費(fèi)者中完成服務(wù)拉取,實(shí)現(xiàn)遠(yuǎn)程調(diào)用
?最后我們要做拉取,并且實(shí)現(xiàn)負(fù)載均衡,只需要添加一些注解
?給RestTemplate這個Bean添加一個@LoadBalanced注解
修改訪問的url路徑,用服務(wù)名代替ip、端口
文章來源:http://www.zghlxwxcb.cn/news/detail-796832.html
spring會自動幫助我們從eureka-server端,根據(jù)服務(wù)名稱,獲取實(shí)例列表,而后完成負(fù)載均衡。 ?文章來源地址http://www.zghlxwxcb.cn/news/detail-796832.html
到了這里,關(guān)于SpringCloud--Eureka注冊中心的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!