大話微服務配置中心:Eureka Server與Eureka Client的契約(Lease.class)

Eureka Server與Eureka Client之間簽訂了一個契約(Lease.class),這是它們之間正常運轉的根基。
寒來暑往,年復一年,由於契約的存在,微服務系統得以提供穩定的發現註冊服務。
以心跳續約爲例,Eureka Client每隔30秒發送一次心跳續約。Eureka Server收到客戶端發來的請求後,會重新計算租期。


一,一紙契約

 

Eureka Server與Eureka Client之間簽訂了一個契約。這個契約就是Lease.class。
這個契約維護着各個約定的到期時間,Eureka Server開啓定時任務,一旦到了履行契約條款的時候,就去執行一段邏輯,用實際行動捍衛契約。
這個契約還定義了三項具體的承諾:
register:服務註冊。
cancel:服務下線。
renew:心跳續約。

 

二,法院-契約管理者

 

契約定好了,但是如果沒有管理者,這個契約還是一紙空文。
Eureka Server與Eureka Client之間的契約管理者就是LeaseManager.class。
LeaseManager.class定義了契約的行爲方法,一共有4個方法。
register:處理Eureka Client發送過來的服務註冊請求。
cancel:處理Eureka Client發送過來的服務下線請求。
renew:處理Eureka Client發送過來的心跳續約請求。
evict:Eureka Server主動發起的定時任務,定期清理無效節點。默認執行週期是60秒。


三,用行動兌現契約

 

有了契約,還要有具體行動。
LeaseManager.class的具體實現類是InstanceRegistry.class。這個類是Spring Cloud包下面的,其實就是對netflix的實現進行了一層包裝,最終還是調用了netflix實現類PeerAwareInstanceRegistryImpl.class。

Eureka server端契約的核心處理類:
PeerAwareInstanceRegistryImpl.class
Eureka client端契約的核心處理類:
DiscoveryClient.class

DiscoveryClient.class主要功能如下:
1,註冊服務到Eureka server。
2,下線服務,並從Eureka server服務列表刪除服務該服務。
3,發送心跳續約到Eureka server。
4,從Eureka server拉取服務列表。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章