Eureka架構圖:
Eureka架構圖
1.服務注冊(register):Eureka Client會通過發送REST請求的方式,向Eureka Server注冊自己的服務。注冊時,提供自身的元數據,比如ip地址、端口、運行狀況指標、主頁地址等信息。Eureka Server接收到注冊請求后,就會把這些元數據信息存儲在一個雙層的Map中。 什么時候注冊?在啟動微服務的時候。
2.服務續約(renew):在服務注冊后,Eureka Client會維護一個心跳來持續通知Eureka Server,說明服務一直處於可用狀態,防止被剔除。默認每隔30秒eureka.instance.lease-renewal-interval-in-seconds 發送一次心跳來進行服務續約。
3.獲取服務列表(get registry):服務消費者(Eureka Client)在啟動的時候,會發送一個REST請求給Eureka Server,獲取注冊中心的服務清單,並且緩存在客戶端本地。同時,為了性能及安全性考慮,Eureka Server會每隔30秒更新一次緩存中的服務清單。
4.服務調用:服務消費者在獲取到服務清單后,可以根據清單中的服務信息,查找到該服務的地址,從而進行訪問(遠程調用)。
6.服務下線(cancel):當Eureka Client需要關閉或重啟時,就不希望在這個時間段內再有請求進來,所以,就需要提前先發送REST請求給EurekaServer,告訴Eureka Server自己要下線了,Eureka Server在收到請求后,就會把該服務狀態置為下線(DOWN),並把該下線事件傳播出去。
7.失效剔除(evict):服務實例可能會因為網絡故障等原因,導致不能提供服務,而此時該實例也沒有發送請求給Eureka Server來進行服務下線。所以,還需要有服務剔除的機制。Eureka Server在啟動的時候會創建一個定時任務,每隔一段時間(默認60秒),從當前服務清單中把超時沒有續約(默認90秒eureka.instance.lease-expiration-duration-inseconds)的服務剔除。
Nacos架構圖:
Nacos架構圖
服務管理:實現服務CRUD,域名CRUD,服務健康狀態檢查,服務權重管理等功能
一致性協議:解決不同數據,不同一致性要求情況下,不同一致性機制
OpenAPI:暴露標准Rest風格HTTP接口,簡單易用,方便多語言集成
Console:易用控制台,做服務管理、配置管理等操作
Nacos與Eureka自我保護機制對比
相同點:保護閾值都是個比例,0-1 范圍,表示健康的 instance 占全部instance 的比例。
不同點:
1)保護方式不同
Eureka保護方式:當在短時間內,統計續約失敗的比例,如果達到一定閾值,則會觸發自我保護的機制,在該機制下,Eureka Server不會剔除任何的微服務,等到正常后,再退出自我保護機制。自我保護開關(eureka.server.enable-self-preservation: false)
Nacos保護方式:當域名健康實例 (Instance) 占總服務實例(Instance) 的比例小於閾值時,無論實例 (Instance) 是否健康,都會將這個實例 (Instance) 返回給客戶端。這樣做雖然損失了一部分流量,但是保證了集群的剩余健康實例 (Instance) 能正常工作。
2)范圍不同
Nacos 的閾值是針對某個具體 Service 的,而不是針對所有服務的。但 Eureka的自我保護閾值是針對所有服務的。
————————————————
版權聲明:本文為CSDN博主「小羽神記」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40021015/article/details/115920988