Nacos和Eureka的區別


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM