文章目錄
Eureka簡介
eureka是Netflix開發的服務發現組件,本身是一個基於REST的服務。Spring Cloud將它集成在其子項目spring-cloud-netflix中,
以實現Spring Cloud的服務發現功能。eureka現在已經從1.0升級到2.0,可惜的是eureka2.0不在開源,但也不影響我們的使用。
由於基於REST服務,自然而然的就能想到,這個服務一定會有心跳檢測、健康檢查和客戶端緩存等機制。
Eureka包括兩個端:
- Eureka Server:註冊中心服務端,用於維護和管理註冊服務列表。
- Eureka Client:註冊中心客戶端,向註冊中心註冊服務的應用都可以叫做Eureka Client(包括Eureka Server本身)。
Eureka架構圖
Eureka Server註冊中心
新建項目過程
file---->new---->project----->Spring Initializr----->Default:https://start.spring.io
Dependencies:Cloud Discovery:Eureka Server
注意,
- 選擇依賴的時候, 選擇Cloud Discovery:Eureka Server
- 啓動入口類上打上註解:@EnableEurekaServer
- 啓動後一直報錯是因爲心跳機制, 等註冊地址配好就不報錯了
配置文件
控制檯
Eureka Client:服務註冊
新建項目過程
file---->new---->project----->Spring Initializr----->Default:https://start.spring.io
Dependencies:Cloud Discovery:Eureka Discovery
注意,
- 選擇依賴的時候, 選擇Cloud Discovery:Eureka Discovery
- 啓動入口類上打上註解:@EnableDiscoveryClient
- server port 要修改,否則啓動是可能會報錯
配置文件
eureka的高可用
如果我們的Eureka崩潰了,那麼下面的服務就都掛了,爲了避免這種情況,我們可以開啓兩個註冊中心,然後讓它們彼此註冊
兩個Eureka互相註冊後,Eureka1中的信息就會同步到Eureka2中,這樣當其中一個掛掉的時候,另外一個還可以正常顯示。
開發階段可以用下面的方式實現啓動兩個Eureka
正式環境至少三個
啓動多個實現高可用
此時,如果Eureka1崩潰了,或者我們可以手動停止運行它,然後我們會發現Eureka2依然保有Client的信息
但是由於Client註冊的時候只在Eureka1註冊了,所以當我們重啓Client的時候[此時Eureka1已經關閉]就啓動不起來了,而Eureka2頁不會包含Client的信息
解決辦法:我們可以讓Client啓動的時候往兩個註冊中心進行註冊 如下:
我們修改一個,就啓動一個,然後就把三個Eureka都配置好,並啓動了。