? ? ? ?eureka相當于是一個公司的管理人事HR,各部門之間如果有合作時,由HR進行人員的分配以及調度,具體選哪個人,全憑HR的心情,如果你這個部門存在沒有意義,直接把你這個部門撤銷,全體人員裁掉,所以不想被裁員,只能每天拼命的工作,做一個累死累活的打工人
eureka的作用
- 消費者如何獲取服務者提供的具體信息?
- 服務提供者啟動時間向euraka注冊自己的信息
- euraka對這些信息進行存儲
- 消費者根據服務名稱向eureka拉取提供者信息
- 如果有多個服務提供者,消費者該如何選擇?
- 服務提供者利用負載均算法,從服務列表中挑選一個服務進行服務
- 消費者如何感知服務提供者的健康狀態?
- 服務提供者會每隔30秒向EurekaServer發送心跳請求,報告健康狀態
- eureka會更新記錄到服務列表信息,心跳不正常會被直接剔除
- 消費者就可以拉取到最新的信息
如何成功的搭建一個EurekaServer服務呢?這也是比較關心的話題?
搭建EurekaServer
- 創建項目,引入spring-cloud-starter-netflix-eureka-server的依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
- 編寫啟動類,添加@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: eurekaserver
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/
? ? ? ?eureka的搭建已經完成,可是我們還需給其他服務添加相關的依賴以及配置,不然它們怎么知道eureka是誰?
注冊A服務
- 在A服務的項目中在pom.xml文件中引入相關的依賴
<!--eureka客戶端依賴--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
- 在A服務的yml文件中編寫相關的配置
spring:application:name: orderserviceeureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
B服務也要完成上面的相關配置,具體步驟和上面一致
在A服務進行拉取
? ? ? ?服務拉取是基于服務名稱獲取服務列表,然后對服務列表做負載均衡(根據一定的算法策略選擇對應的服務)
- 修改A服務中的service層的代碼,修改訪問的url路徑,用服務名代替ip、端口
String url = "http://userservice/user/" + order.getUserId();
- 在A服務項目的啟動類中的restTemplate上添加負載均衡注解
@Bean@LoadBalanced//負載均衡的注解public RestTemplate restTemplate() {return new RestTemplate();}
?總結:
1.搭建EurekaServer
- 引入eureka-server依賴
- 添加@EnableEurekaServer注解
- 在application.yml中配置eureka地址
2.服務注冊
- 引入eureka-client依賴
- 在application.yml中配置eureka地址
3.服務發現
- 引入eureka-client依賴
- 在application.yml中配置eureka地址
- 給RestTemplate添加@LoadBalanced注解
- 用服務提供者的服務名稱遠程調用