Eureka服務註冊方

2021-10-02 04:29:44 字數 1342 閱讀 9694

服務提供者要向eurekaserver註冊服務,並且完成服務續約等工作。

服務提供者在啟動時,會檢測配置屬性中的: eureka.client.register-with-erueka=true 引數是否正確,事實上

預設就是true。如果值確實為true,則會向eurekaserver發起乙個rest請求,並攜帶自己的元資料資訊,eureka

server會把這些資訊儲存到乙個雙層map結構中。

第二層map的key是服務的例項id。一般host+ serviceid + port,例如: localhost:user-service:8081

值則是服務的例項物件,也就是說乙個服務,可以同時啟動多個不同例項,形成集群。

預設註冊時使用的是主機名或者localhost,如果想用ip進行註冊,可以在 user-service 中新增配置如下:

eureka:

instance:

ip-address:

127.0

.0.1 # ip位址

prefer-ip-address:

true # 更傾向於使用ip,而不是host名

在註冊服務完成以後,服務提供者會維持乙個心跳(定時向eurekaserver發起rest請求),告訴eurekaserver:「我

還活著」。這個我們稱為服務的續約(renew);

有兩個重要引數可以修改服務續約的行為;可以在 user-service 中新增如下配置項:

eureka:

instance:

lease-expiration-duration-in-seconds:

90 lease-renewal-interval-in-seconds:

30

也就是說,預設情況下每隔30秒服務會向註冊中心傳送一次心跳,證明自己還活著。如果超過90秒沒有傳送心跳,

eurekaserver就會認為該服務宕機,會定時(eureka.server.eviction-interval-timer-in-ms設定的時間)從服務列表

中移除,這兩個值在生產環境不要修改,預設即可。

當服務消費者啟動時,會檢測 eureka.client.fetch-registry=true 引數的值,如果為true,則會從eureka

server服務的列表拉取唯讀備份,然後快取在本地。並且 每隔30秒 會重新拉取並更新資料。可以在 consumer-demo

專案中通過下面的引數來修改:

eureka:

client:

registry-fetch-interval-seconds:

30

Eureka服務註冊中心

1.適用場景有侷限 如果服務提供者的網路位址 ip和埠 發生變化,將會影響服務消費者。2.無法動態伸縮 每個微服務一般都會部署多個例項,從而實現實現容災和負載均衡,微服務系統需要具備自動伸縮的能力。如何解決上述方案 1 需要乙個強大的服務發現機制,服務消費者使用這種機制獲取服務提供者的網路資訊,及時...

Eureka 服務註冊發現

eureka簡述 eureka在微服務中經常使用,用作服務註冊中心,和zookepeer功能相似 eureka server 服務註冊中心 eureka server通過集群方式部署,當有新的服務註冊時,會同步到其他的eureka server cap 一致性 可用性 分割槽容錯性 乙個分布式部署中...

eureka 服務註冊中心

作為服務註冊中心,eureka比zookeeper區別 著名的cap理論指出,乙個分布式系統不可能同時滿足c 一致性 a 可用性 和p 分割槽容錯性 由於分割槽容錯性在是分布式系統中必須要保證的,因此我們只能在a和c之間進行權衡。在此zookeeper保證的是cp,而eureka則是ap 1.zoo...