SpringCloud實現(xiàn)Eureka服務注冊與發(fā)現(xiàn)
GitHub地址:https://github.com/yudiandemingzi/spring-cloud-study
一、Eureka概述
1、Eureka特點
(1) Eureka是一個基于REST的服務,用于定位服務,以實現(xiàn)云端中間層服務發(fā)現(xiàn)和故障轉(zhuǎn)移。
(2) Eureka 主管服務注冊與發(fā)現(xiàn),在微服務中,以后了這兩者,只需要使用服務的標識符(==就是那個在每個服務的yml文件中取得服務名稱==),
就可以訪問到服務,不需要修改服務調(diào)用的配置文件。
(3) Eureka遵循AP原則(高可用,分區(qū)容錯性),因為使用了自我保護機制所以保證了高可用。
2、Eureka兩大組件
兩大組件:Eureka Server(提供注冊服務)、 Eureka Client(JAVA客戶端,負責發(fā)送心跳)
系統(tǒng)中的其他微服務使用Eureka客戶端連接到Eureka服務端維持心跳連接(即注冊)。SpringCloud的其他模塊可以通過Eureka Server 來發(fā)現(xiàn)系統(tǒng)中的微服務并加以調(diào)用

3、Eureka三大角色
Eureka Server:提供服務注冊和發(fā)現(xiàn)
Service Provider:服務提供方,將自身服務注冊到Eureka,從而使服務消費方能夠找到
Service Consumer:服務消費方,從Eureka獲取注冊服務列表,從而能夠消費服務。

二、Eureka Server服務注冊中心
1、pom.xml
<!--注冊服務中心的jar要多個-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
2、application.yml
server:
port: 7001
eureka:
instance:
hostname: localhost
client:
#聲明自己是個服務端
registerWithEureka: false #false表示不向注冊中心注冊自己
fetchRegistry: false #false表示自己就是注冊中心,職責是維護實例,不參加檢索
serviceUrl: #設置eureka server的交互地址,即對外暴露的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3、啟動類
//注意:要在類前加@EnableEurekaServer標注
@SpringBootApplication
@EnableEurekaServer
public class Eureka7001_APP {
public static void main(String[] args) {
SpringApplication.run(Eureka7001_APP.class,args);
}
}
運行結(jié)果:輸入:http://localhost:7001/

三、Service Provider服務提供方
假設這個商品微服務。
1、pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、application.yml
server:
port: 8001
#指定注冊中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:7001/eureka/
#服務的名稱
spring:
application:
name: product-service
3、啟動類
@SpringBootApplication
public class ProductApplication {
public static void main(String[] args) {
SpringApplication.run(ProductApplication.class, args);
}
}
4、啟動后查看服務注冊中心
發(fā)現(xiàn)在服務注冊中心已經(jīng)注冊了一個服務

5、換端口號再啟動一個

6、在看服務中心

這就是搭建了商品微服務集群。
四、Service Consumer服務消費方
其實服務方和消費在配置時候沒有任何區(qū)別,它們都屬于Eureka Client組件。只是涉及服務間的調(diào)用,所以就把被調(diào)方稱為提供方,調(diào)用方稱為消費方。就好比訂單微服務,
訂單服務肯定需要去調(diào)商品微服務,所以這個訂單微服務對于商品來講可以理解服務提供方。一個微服務即可以是服務方也同時是提供方。
1、pom.xml
<!--這個對于每個不是注冊中心的微服務都要添加-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、application.yml
server:
port: 9001
#指定注冊中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:7001/eureka/
#服務的名稱
spring:
application:
name: order-service
3、啟動類
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
4、查看注冊中心
發(fā)現(xiàn)訂單微服務也成功注冊到注冊中心

至于訂單微服務如何調(diào)商品微服務呢,下一遍博客在寫咯。
以上就是SpringCloud實現(xiàn)Eureka服務注冊與發(fā)現(xiàn)的詳細內(nèi)容,更多關于SpringCloud Eureka服務注冊與發(fā)現(xiàn)的資料請關注腳本之家其它相關文章!
相關文章
如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出詳解
最近項目中整合了logback,所以下面這篇文章主要給大家介紹了關于如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05
SpringBoot接收LocalDateTime參數(shù)的方式
這篇文章主要介紹了SpringBoot接收LocalDateTime參數(shù)的方式,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-08-08
Java 編程如何使用 Class.forName() 加載類
在一些應用中,無法事先知道使用者將加載什么類,而必須讓使用者指定類名稱以加載類,可以使用 Class的靜態(tài)forName()方法實現(xiàn)動態(tài)加載類,這篇文章主要介紹了Java編程如何使用Class.forName()加載類,需要的朋友可以參考下2022-06-06

