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

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

二、Eureka Server服務(wù)注冊(cè)中心
1、pom.xml
<!--注冊(cè)服務(wù)中心的jar要多個(gè)-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:
#聲明自己是個(gè)服務(wù)端
registerWithEureka: false #false表示不向注冊(cè)中心注冊(cè)自己
fetchRegistry: false #false表示自己就是注冊(cè)中心,職責(zé)是維護(hù)實(shí)例,不參加檢索
serviceUrl: #設(shè)置eureka server的交互地址,即對(duì)外暴露的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3、啟動(dòng)類
//注意:要在類前加@EnableEurekaServer標(biāo)注
@SpringBootApplication
@EnableEurekaServer
public class Eureka7001_APP {
public static void main(String[] args) {
SpringApplication.run(Eureka7001_APP.class,args);
}
}
運(yùn)行結(jié)果:輸入:http://localhost:7001/

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

5、換端口號(hào)再啟動(dòng)一個(gè)

6、在看服務(wù)中心

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

至于訂單微服務(wù)如何調(diào)商品微服務(wù)呢,下一遍博客在寫咯。
以上就是SpringCloud實(shí)現(xiàn)Eureka服務(wù)注冊(cè)與發(fā)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud Eureka服務(wù)注冊(cè)與發(fā)現(xiàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringCloud?Eureka服務(wù)治理之服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)
- SpringCloud?Eureka服務(wù)注冊(cè)中心應(yīng)用入門詳解
- SpringCloud如何使用Eureka實(shí)現(xiàn)服務(wù)之間的傳遞數(shù)據(jù)
- SpringCloud服務(wù)注冊(cè)和發(fā)現(xiàn)組件Eureka
- 5分鐘搭建SpringCloud Eureka服務(wù)注冊(cè)中心的實(shí)現(xiàn)
- SpringCloud Eureka的使用教程
- Springcloud Eureka配置及集群代碼實(shí)例
- SpringCloud?Eureka應(yīng)用全面介紹
相關(guān)文章
SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案
這篇文章主要介紹了SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案,通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出詳解
最近項(xiàng)目中整合了logback,所以下面這篇文章主要給大家介紹了關(guān)于如何在SpringBoot中使用logback優(yōu)化異常堆棧的輸出,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Spring Cloud Ribbon客戶端詳細(xì)介紹
Spring Cloud Ribbon 是一套基于 Netflix Ribbon 實(shí)現(xiàn)的客戶端負(fù)載均衡和服務(wù)調(diào)用工具。通過(guò)Spring Cloud的封裝,可以讓我們輕松地將面向服務(wù)的REST模版請(qǐng)求自動(dòng)轉(zhuǎn)換成客戶端負(fù)載均衡的服務(wù)調(diào)用2022-09-09
SpringBoot接收LocalDateTime參數(shù)的方式
這篇文章主要介紹了SpringBoot接收LocalDateTime參數(shù)的方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08
Java 編程如何使用 Class.forName() 加載類
在一些應(yīng)用中,無(wú)法事先知道使用者將加載什么類,而必須讓使用者指定類名稱以加載類,可以使用 Class的靜態(tài)forName()方法實(shí)現(xiàn)動(dòng)態(tài)加載類,這篇文章主要介紹了Java編程如何使用Class.forName()加載類,需要的朋友可以參考下2022-06-06

