SpringCloud中eureka治理元件的原理

2021-10-08 10:25:53 字數 1560 閱讀 6994

當新增了乙個eureka-client元件到乙個springboot工程時,依賴,屬性,註解會啟動乙個eureka-client程序,完成和服務端互動

1.1註冊:

程式啟動時會攜帶自身的資訊,包括服務名稱,包括ip位址,包括埠號,等引數,以http協議請求訪問 defaultzone 

可以通過 eureka.client.register-with-eureka=true/false決定當前客戶端是否進行註冊

(註冊是為了被別人呼叫,抓取是為了呼叫別人---可以控制是否開啟註冊或者抓取)

1.2抓取註冊資訊:

在啟動之後,客戶端預設每隔30秒中,繼續訪問服務端介面,進行抓取註冊資訊的功能,將服務端所有註冊好的資訊,同步到本地 

可以通過 eureka.client.fetch-registry=true/false決定開啟關閉抓取功能

1.3心跳續約:

為了讓註冊中心動態管理存活的有效的客戶端,客戶端預設每隔30秒中,向服務端傳送一次心跳存活請求.在服務端接到請求,更新客戶端資訊時間戳. 

同乙個服務,可以有多個客戶端作為服務提供者同時註冊在註冊中心

2.1管理註冊資訊:接收到客戶端註冊時,會接收引數(客戶端服務名稱,ip,port,等等),在記憶體生成乙個雙層map物件 map> 

第一層map的key值:服務名稱

第一層map的value值:第二層map物件(管理了所有同服務名稱的服務提供者)

第二層map的key值:區分不同例項的名字

第二層map的value值:儲存了該節點該服務提供者詳細資訊的instance物件(ip:port,時間戳)

**如下:

8091和8092兩個客戶端擁有相同的服務名稱(service-hi),那麼他們在第一層map中存的key就是同乙個,其他的資訊將作為內部map的key-value繼續儲存

客戶端註冊到註冊中心,是雙層map,第一次生成乙個key ,之後就是在map的value中在巢狀map新增key,value(保證了服務名稱不重名,功能不一樣,服務名稱應該不一樣)

2.2超時剔除:

服務端啟動定時任務,每隔60秒鐘執行一次定時任務,掃瞄所有註冊資訊instance物件時間戳,計算判斷,如果發現有超過90秒心跳,將會作為超時的例項從註冊資訊中刪除。

2.3保護機制:

正常的微服務集群,肯定會因為故障,網路延遲導致總是有超時的例項從註冊資訊提出.網路故障的面積非常大,影響了集群中大部分的節點傳送心跳,如果嚴格執行超時提出,導致微服務集群註冊資訊丟失,整個集群的功能癱瘓.設定了乙個超時剔除的閾值(15%,超過總體節點數量15%,同一時間剔除),開啟保護機制,不提出任何服務資訊. 

配置服務端屬性

eureka.server.enable-self-preservation=false

SpringCloud之客戶端連線Eureka集群

客戶端分別yml 服務啟動埠號 server port 8002 服務名稱 服務註冊到eureka名稱 spring 服務註冊到eureka位址 eureka client service url defaultzone http localhost 8100 eureka,因為該應用為註冊中心,不...

SpringCloud中的gateWay 閘道器

1 api閘道器介紹 2 spring cloud gateway 3 spring cloud gateway核心概念 所有服務,都需要在nacos中註冊服務 包括閘道器 注意版本號 服務註冊nacos org.springframework.cloud groupid spring cloud ...

springcloud中的gateway閘道器

引入依賴 com.atguigu groupid common utils artifactid 0.0.1 snapshot version dependency org.springframework.cloud groupid spring cloud starter alibaba naco...