Eureka(註冊中心)

Eureka實現對微服務的註冊並監控微服務的使用狀態。

服務啓動後向Eureka註冊,Eureka Server會將註冊信息向其他Eureka Server進行同步,當服務消費者要調用服務提供者,則向服務註冊中心獲取服務提供者地址(即:服務應用名,spring.application.name參數配置),然後會將服務提供者地址緩存在本地,下次再調用時,則直接從本地緩存中取,完成一次調用。

 

當服務註冊中心Eureka Server檢測到服務提供者因爲宕機、網絡原因不可用時,則在服務註冊中心將服務置爲DOWN狀態,並把當前服務提供者狀態向訂閱者發佈,訂閱過的服務消費者更新本地緩存。

 

 服務提供者在啓動後,週期性(默認30秒)向Eureka Server發送心跳,以證明當前服務是可用狀態。Eureka Server在一定的時間(默認90秒)未收到客戶端的心跳,則認爲服務宕機,註銷該實例。

在默認配置中,Eureka Server在默認90s沒有得到客戶端的心跳,則註銷該實例,但是往往因爲微服務跨進程調用,網絡通信往往會面臨着各種問題,比如微服務狀態正常,但是因爲網絡分區故障時,Eureka Server註銷服務實例則會讓大部分微服務不可用,這很危險,因爲服務明明沒有問題。

爲了解決這個問題,Eureka 有自我保護機制,通過在Eureka Server配置如下參數,可啓動保護機制。

eureka.server.enable-self-preservation=true

         它的原理是,當Eureka Server節點在短時間內丟失過多的客戶端時(可能發送了網絡故障),那麼這個節點將進入自我保護模式,不再註銷任何微服務,當網絡故障回覆後,該節點會自動退出自我保護模式。

 

服務端:

使用https://start.spring.io/ 選擇spring web start和Eureka server

或加載

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

</dependency>

application.yml配置文件:

server:

port: 8761

 

eureka:

##實例

instance:

hostname: localhost

client:

##自身不加載不註冊爲客戶端

fetchRegistry: false

registerWithEureka: false

serviceUrl:

defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

##服務名稱等屬性

spring:

application:

name: eureka-server

 

增加啓動項@EnableEurekaServer

 

客戶端

使用https://start.spring.io/ 選擇spring web start和Eureka Client

或加載

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

application.yml配置文件:

eureka:

##客戶端配置

client:

##配置訪問的服務端地址

serviceUrl:

defaultZone: http://localhost:8761/eureka/

 

server:

port: 8081

 

spring:

application:

name: eureka-client

 

增加啓動項@EnableEurekaClient

 

Eureka集羣:

搭建兩個相同註冊中心,application.yml配置相互如下:、

EXP1:

server:

port: 8762

 

eureka:

instance:

hostname: localhost

client:

fetchRegistry: false

registerWithEureka: false

serviceUrl:

defaultZone: http://localhost:8761/eureka/

 

spring:

application:

name: eureka-server01

 

EXP2:

server:

port: 8761

 

eureka:

instance:

hostname: localhost

client:

fetchRegistry: false

registerWithEureka: false

serviceUrl:

defaultZone: http://localhost:8762/eureka/

 

spring:

application:

name: eureka-server

 

 

 

 

發佈了19 篇原創文章 · 獲贊 1 · 訪問量 3481
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章