转载: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。