详解Nacos和Eureka的区别「建议收藏」(六十四卦详解)
Eureka是什么
Eureka 是Spring Cloud 微服務框架默認的也是推薦的服務注冊中心,
由Netflix公司與2012將其開源出來,Eureka基于REST服務開發,主要用于實現AWS云的中服務定位,以實現中間層服務器的負載均衡和故障轉移,遵循著CAP理論中的A(可用性)P(分區容錯性)
Eureka詳解
一個Eureka中分為eureka server和eureka clint,其中eurka server是作為服務的注冊與發現中心,eureka client既可以作為服務的生產者,又可以作為服務的消費者
Eurak2.0之后已經停止開源
Nacos是什么
Nacos是阿里巴巴最新開源的項目,提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元數據及流量管理。更敏捷和容易地構建、交付和管理微服務平臺。
Nacos支持基于DNS和基于RPC的服務發現,動態配置服務(配置中心),動態DNS服務
Nacos詳解
Provider APP:服務提供者
Consumer APP:服務消費者
Name Server:通過VIP(Virtual IP)或DNS的方式實現Nacos高可用集群的服務路由
Nacos Server:Nacos服務提供者,里面包含的Open API是功能訪問入口,Conig Service、Naming Service 是Nacos提供的配置服務、命名服務模塊。Consitency Protocol是一致性協議,用來實現Nacos集群節點的數據同步,這里使用的是Raft算法(Etcd、Redis哨兵選舉)
Nacos Console:控制臺
Nacos的實現原理
1.客戶端provider向nacos server的open api發起調用,把自己的服務地址鏈接,服務名稱注冊上去
2.nacos server與服務提供者provider建立心跳機制,用來檢測服務狀態
3.服務消費者consumer查詢出提供服務實例列表
4.并且默認10s去nacos server拉取服務實例列表
5.當服務消費者檢測到服務異常,基于UDP協議推送更新
6.服務消費者即可調用了
Nacos和Eureka的區別
CAP理論
C一致性,A高可用,P分區容錯性
-
eureka只支持AP
-
nacos支持CP和AP兩種
nacos是根據配置識別CP或AP模式,如果注冊Nacos的client節點注冊時是ephemeral=true即為臨時節點,那么Naocs集群對這個client節點效果就是AP,反之則是CP,即不是臨時節點#false為永久實例,true表示臨時實例開啟,注冊為臨時實例 spring.cloud.nacos.discovery.ephemeral=true
連接方式
- nacs使用的是netty和服務直接進行連接,屬于長連接
- eureka是使用定時發送和服務進行聯系,屬于短連接
服務異常剔除
eureka:
Eureka client在默認情況每隔30s想Eureka Server發送一次心跳,當Eureka Server在默認連續90s秒的情況下沒有收到心跳, 會把Eureka client 從注冊表中剔除,在由Eureka-Server 60秒的清除間隔,把Eureka client 給下線
EurekaInstanceConfigBean類下
private int leaseRenewalIntervalInSeconds = 30; //心跳間隔30s
private int leaseExpirationDurationInSeconds = 90; //默認90s沒有收到心跳從注冊表中剔除
EurekaServerConfigBean 類下
private long evictionIntervalTimerInMs = 60000L; //異常服務剔除下線時間間隔
也就是在極端情況下Eureka 服務 從異常到剔除在到完全不接受請求可能需要 30s+90s+60s=3分鐘左右(還是未考慮ribbon緩存情況下)
nacos:
nacos client 通過心跳上報方式告訴 nacos注冊中心健康狀態,默認心跳間隔5秒,
nacos會在超過15秒未收到心跳后將實例設置為不健康狀態,可以正常接收到請求
超過30秒nacos將實例刪除,不會再接收請求
操作實例方式
nacos:提供了nacos console可視化控制話界面,可以對實例列表進行監聽,對實例進行上下線,權重的配置,并且config server提供了對服務實例提供配置中心,且可以對配置進行CRUD,版本管理
eureka:僅提供了實例列表,實例的狀態,錯誤信息,相比于nacos過于簡單
自我保護機制
相同點:保護閾值都是個比例,0-1 范圍,表示健康的 instance 占全部instance 的比例。
不同點:
1)保護方式不同
Eureka保護方式:當在短時間內,統計續約失敗的比例,如果達到一定閾值,則會觸發自我保護的機制,在該機制下,Eureka Server不會剔除任何的微服務,等到正常后,再退出自我保護機制。自我保護開關(eureka.server.enable-self-preservation: false)
Nacos保護方式:當域名健康實例 (Instance) 占總服務實例(Instance) 的比例小于閾值時,無論實例 (Instance) 是否健康,都會將這個實例 (Instance) 返回給客戶端。這樣做雖然損失了一部分流量,但是保證了集群的剩余健康實例 (Instance) 能正常工作。
2)范圍不同
Nacos 的閾值是針對某個具體 Service 的,而不是針對所有服務的。但 Eureka的自我保護閾值是針對所有服務的。
有興趣的小伙伴可以加群,遇到問題可以一起討論
總結
以上是生活随笔為你收集整理的详解Nacos和Eureka的区别「建议收藏」(六十四卦详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js合并数组与合并对象的区别_js将对象
- 下一篇: 阿里云盘 iOS 版 4.5.0 发布: