Eureka 簡(jiǎn)介
Eureka 是一個(gè)基于 REST 的服務(wù)發(fā)現(xiàn)組件,SpringCloud 將它集成在其子項(xiàng)目 spring-cloud-netflix 中,以實(shí)現(xiàn) SpringCloud 的服務(wù)注冊(cè)與發(fā)現(xiàn),同時(shí)提供了負(fù)載均衡、故障轉(zhuǎn)移等能力,目前 Eureka2.0 已經(jīng)不再維護(hù),故不推薦使用
Eureka 有兩種角色組件:
- Eureka Server:服務(wù)注冊(cè)中心組件,提供了服務(wù)的注冊(cè)與發(fā)現(xiàn)的接口
- Eureka Client:各種微服務(wù),把自身的服務(wù)實(shí)例注冊(cè)到 Eureka Server 中,也可通過(guò) Eureka Server 獲取服務(wù)列表,消費(fèi)服務(wù)
微服務(wù)客戶端在 Eureka 上注冊(cè),然后每隔 30 秒發(fā)送心跳來(lái)更新它們的租約。如果客戶端不能多次續(xù)訂租約,就將在大約 90 秒內(nèi)從服務(wù)器注冊(cè)表中剔除。注冊(cè)信息和更新被復(fù)制到集群中的所有 Eureka 節(jié)點(diǎn),來(lái)自任何區(qū)域的客戶端都可以查找注冊(cè)表信息(每30秒發(fā)生一次)來(lái)定位它們的服務(wù)并進(jìn)行遠(yuǎn)程調(diào)用
搭建 Eureka 注冊(cè)中心
創(chuàng)建 eureka-server 項(xiàng)目,引入依賴,本項(xiàng)目基于 SpringBoot 2.3.1,SpringCloud Hoxton.SR12
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
...
<dependencies>
在啟動(dòng)類上添加 @EnaleEurekaServer
注解,啟用 Euerka 注冊(cè)中心功能
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
在配置文件添加 Eureka 服務(wù)端的配置
server:
port: 8001 # 指定運(yùn)行端口
spring:
application:
name: eureka-server # 指定服務(wù)名稱
eureka:
instance:
hostname: localhost # 指定主機(jī)名稱
client:
fetch-registry: false # 指定能否從注冊(cè)中心獲取服務(wù)
register-with-eureka: false # 指定是否將服務(wù)注冊(cè)到注冊(cè)中心
運(yùn)行 main 方法啟動(dòng)服務(wù),在瀏覽器中訪問(wèn) http://localhost:8001/
便可以看到 Eureka 注冊(cè)中心的界面
創(chuàng)建 eureka-client 項(xiàng)目,引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
在啟動(dòng)類上添加 @EnableDiscoveryClient
注解,表明是一個(gè) Eureka 客戶端
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
在配置文件添加 Eureka 客戶端的配置
server:
port: 8101 # 指定運(yùn)行端口
spring:
application:
name: eureka-client # 指定服務(wù)名稱
eureka:
client:
fetch-registry: true # 指定能否從注冊(cè)中心獲取服務(wù)
register-with-eureka: true # 指定是否將服務(wù)注冊(cè)到注冊(cè)中心
service-url:
defaultZone: http://localhost:8001/eureka
運(yùn)行 main 方法,啟動(dòng) eureka-client 項(xiàng)目,刷新 http://localhost:8001/
頁(yè)面,即可看到 cureka-client 已經(jīng)注入 Eurcka 服務(wù)
搭建 Eureka 注冊(cè)中心集群
由于所有服務(wù)都會(huì)注冊(cè)到注冊(cè)中心,服務(wù)之間的調(diào)用都是通過(guò)從注冊(cè)中心獲取服務(wù)列表來(lái)調(diào)用的。注冊(cè)中心一旦宕機(jī),所有服務(wù)調(diào)用都會(huì)出現(xiàn)問(wèn)題,因此需要多個(gè)注冊(cè)中心組成集群來(lái)提供服務(wù)
創(chuàng)建兩個(gè) eureka-server 項(xiàng)目,eureka-server-1 項(xiàng)目的配置文件如下:
server:
port: 8002 # 指定運(yùn)行端口
spring:
application:
name: eureka-server-1 # 指定服務(wù)名稱
eureka:
instance:
hostname: localhost # 指定主機(jī)名稱
client:
fetch-registry: true # 指定能否從注冊(cè)中心獲取服務(wù)
register-with-eureka: true # 指定是否將服務(wù)注冊(cè)到注冊(cè)中心
service-url:
defaultZone: http://localhost:8003/eureka/
eureka-server-2 項(xiàng)目的配置文件如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-644564.html
server:
port: 8003 # 指定運(yùn)行端口
spring:
application:
name: eureka-server-1 # 指定服務(wù)名稱
eureka:
instance:
hostname: localhost # 指定主機(jī)名稱
client:
fetch-registry: true # 指定能否從注冊(cè)中心獲取服務(wù)
register-with-eureka: true # 指定是否將服務(wù)注冊(cè)到注冊(cè)中心
service-url:
defaultZone: http://localhost:8002/eureka/
通過(guò)兩個(gè)注冊(cè)中心互相注冊(cè),搭建注冊(cè)中心的雙節(jié)點(diǎn)集群。分別啟動(dòng)項(xiàng)目,查看 http://localhost:8001/
和 http://localhost:8002/
,可以看到兩個(gè)注冊(cè)中心已經(jīng)分別注冊(cè)了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-644564.html
到了這里,關(guān)于注冊(cè)中心 —— SpringCloud Netflix Eureka的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!