Eureka 集群環境

2021-10-09 05:50:34 字數 3021 閱讀 1402

新建工程springcloud-eureka-7002、springcloud-eureka-7003

按照7001為模板貼上pom

修改7002和7003的主啟動類

修改對映配置 , windows網域名稱對映

集群配置分析

修改3個eurekaserver的yaml資料夾

7001:

server:

port: 7001

#eureka配置

eureka:

instance:

hostname: eureka7001.com #eureka服務端的例項名稱

client:

register-with-eureka: false # 是否將自己註冊到eureka伺服器中,本身是伺服器,無需註冊

fetch-registry: false # false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務

service-url:

defaultzone:

# 設定與eureka server互動的位址查詢服務和註冊服務都需要依賴這個defaultzone位址

7002:

server:

port: 7002

# eureka 配置

eureka:

instance:

hostname: eureka7002.com # eureka

client:

register-with-eureka: false # 表示是否向 eureka 註冊中心註冊自己

fetch-registry: false # 如果為 false 自己為註冊中心

service-url: # 監控頁面

defaultzone:

7003:

server:

port: 7003

# eureka 配置

eureka:

instance:

hostname: eureka7003.com # eureka

client:

register-with-eureka: false # 表示是否向 eureka 註冊中心註冊自己

fetch-registry: false # 如果為 false 自己為註冊中心

service-url: # 監控頁面

# 單機:defaultzone: http://$:$/eureka/

# 集群(關聯):

defaultzone:

將8001微服務發布到1臺eureka集群配置中,發現在集群中的其餘註冊中心也可以看到,但是平時我們保險起見,都發布!

# eureka 的配置,服務註冊到**

instance-id: springcloud-provider-dept8001 # 修改 eureka 上的預設資訊

prefer-ip-address: true # true訪問路徑可以顯示ip位址

啟動集群測試!

回顧cap原則 rdbms (mysql、oracle、sqlserver)===>acid

nosql(redis、mongdb)===> cap

cap的三進二:ca、ap、cp

cap理論的核心:

著名的cap理論指出,乙個分布式系統不可能同時滿足c(一致性)、a(可用性)、p(容錯性)。 由於分割槽容錯性p在分布式系統中是必須要保證的,因此我們只能在a和c之間進行權衡。

當向註冊中心查詢服務列表時,我們可以容忍註冊中心返回的是幾分鐘以前的註冊資訊,但不能接受服務直接down掉不可用。也就是說,服務註冊功能對可用性的要求要高於一致性。但是zk會出現這樣一種情況,當master節點因為網路故障與其他節點失去聯絡時,剩餘節點會重新進行leader選舉。問題在於,選舉leader的時間太長,30~120s,且選舉期間整個zk集群都是不可用的,這就導致在選舉期間註冊服務癱瘓。在雲部署的環境下,因為網路問題使得zk集群失去master節點是較大概率會發生的事件,雖然服務最終能夠恢復,但是漫長的選舉時間導致的註冊長期不可用是不能容忍的。

eureka看明白了這一點,因此在設計時就優先保證可用性。eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作,剩餘的節點依然可以提供註冊和查詢服務。而eureka的客戶端在向某個 eureka註冊時,如果發現連線失敗,則會自動切換至其他節點,只要有一台eureka還在,就能保住註冊服務的可用性,只不過查到的資訊可能不是最新的,除此之外,eureka還有一種自我保護機制,如果在 15分鐘內超過85%的節點都沒有正常的心跳,那麼eureka就認為客戶端與註冊中心出現了網路故障,此時會出現以下幾種情況:

eureka不再從註冊列表中移除因為長時間沒收到心跳而應該過期的服務

eureka仍然能夠接受新服務的註冊和查詢請求,但是不會被同步到其他節點上(即保證當前節點依 然可用)

當網路穩定時,當前例項新的註冊資訊會被同步到其他節點中

因此,eureka可以很好的應對因網路故障導致部分節點失去聯絡的情況,而不會像zookeeper那樣使整 個註冊服務癱瘓

Eureka集群配置

enable self preservation false 測試時關閉自我保護機制,保證不可用服務及時踢出 eviction interval timer in ms 5000 啟用主動失效,並且每次主動失效檢測間隔為5s response cache update inverval ms 300...

Eureka集群配置

如果是單節點的註冊中心,是無法保證系統穩定性的,當然現在專案部署架構不可能是單節點的。集群節點的部署思路 通過執行多個例項並請求他們相互註冊,來完成註冊中心的高可用性 結伴註冊 1 新增依賴 org.springframework.cloud spring cloud starter eureka ...

Eureka集群配置

eureka的集群配置。eureka集群的執行機制是 相互註冊,相互守望 主要是為了實現高可用。防止出現單點故障。假如有三個eureka服務註冊中心。7001,7002,7003。那麼7001,7002,7003需要相互註冊。即7001 7002 7001 7003。7002 7001 7002 7...