SpringCloud(3)---Eureka服務註冊與發現
Eureka服務註冊與發現
一、Eureka概述
1、Eureka特點
(1) Eureka是一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。
(2) Eureka 主管服務註冊與發現,在微服務中,以後了這兩者,只需要使用服務的標識符(==就是那個在每個服務的yml文件中取得服務名稱==),
就可以訪問到服務,不需要修改服務調用的配置文件。
(3) Eureka遵循AP原則(高可用,分區容錯性),因為使用了自我保護機制所以保證了高可用。
2、Eureka兩大組件
兩大組件:Eureka Server(提供註冊服務)
系統中的其他微服務使用Eureka客戶端連接到Eureka服務端維持心跳連接(即註冊)。SpringCloud的其他模塊可以通過Eureka Server 來發現系統中的微服務並加以調用
3、Eureka三大角色
Eureka Server:提供服務註冊和發現
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); } }
運行結果
三、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、啟動後查看服務註冊中心
發現在服務註冊中心已經註冊了一個服務
5、換端口號再啟動一個
6、在看服務中心
這就是搭建了商品微服務集群。
四、Service Consumer服務消費方
其實服務方和消費在配置時候沒有任何區別,它們都屬於Eureka Client組件。只是涉及服務間的調用,所以就把被調方稱為提供方,調用方稱為消費方。就好比訂單微服務,
訂單服務肯定需要去調商品微服務,所以這個訂單微服務對於商品來講可以理解服務提供方。一個微服務即可以是服務方也同時是提供方。
1、pom.xml
<!--這個對於每個不是註冊中心的微服務都要添加--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--只要你需要去調其它微服務,那就在你的微服務中額外添加 調其它服務的jar,這裏用ribbon,當然你可以用其它方式--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</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、查看註冊中心
發現訂單微服務也成功註冊到註冊中心
至於訂單微服務如何調商品微服務呢,下一遍博客在寫咯。
我只是偶爾安靜下來,對過去的種種思忖一番。那些曾經的舊時光裏即便有過天真愚鈍,也不值得譴責。畢竟,往後的日子,還很長。不斷鼓勵自己,
天一亮,又是嶄新的起點,又是未知的征程(上校5)
SpringCloud(3)---Eureka服務註冊與發現