轉載:https://blog.csdn.net/weixin_41692833/article/details/118958117
Nacos和Eureka的區別
1、ACP原則
nacos支持AP(可用性 | 分區容錯性) 和 CP(一致性 | 分區容錯性)兩種,默認AP
eureka只支持 AP (可用性 | 分區容錯性)
CAP原則又稱CAP定理,指的是在一個分布式系統中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性),三者不可得兼。
一致性(C):在分布式系統中的所有數據備份,在同一時刻是否同樣的值。(等同於所有節點訪問同一份最新的數據副本)
可用性(A):保證每個請求不管成功或者失敗都有響應。
分區容忍性(P):系統中任意信息的丟失或失敗不會影響系統的繼續運作。
CAP原則的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。
如果在某個分布式系統中數據無副本, 那么系統必然滿足強一致性條件, 因為只有獨一數據,不會出現數據不一致的情況,此時C和P兩要素具備,
但是如果系統發生了網絡分區狀況或者宕機,必然導致某些數據不可以訪問,此時可用性條件就不能被滿足,即在此情況下獲得了CP系統,但是CAP不可同時滿足。
2、配置中心
nacos有自己的配置中心,提供管理界面
eureka需要配合config實現配置中心,且不提供管理界面
3、連接方式
nacos支持動態刷新,在控制器(controller)上加 @RefreshScope 注解即可,采用Netty連接,是長連接
eureka本身不支持動態刷新,需要配合MQ完成動態刷新,且是短連接,是定時發送
4、應對高並發
nacos沒有使用synchronized和加鎖,而是使用copyOnWrite思想
nacos這個更新注冊表內存方法里,為了防止讀寫並發沖突,大量采用了copyOnWrite思想,防止讀寫並發沖突,
具體做法就是把原內存結構復制一份,操作完后再替換進真正的注冊表內存中去。
eureka方式讀寫並發沖突用的是注冊表的多級緩存結構,只讀緩存,讀寫緩存,內存注冊表,
各級緩存之間定時同步,緩存都存在EurekaServer中,客戶端的感知和及時性不如nacos。