开发者学堂课程【精通 Spring Cloud Alibaba:注册中心设计 Ap 与 CP 区别】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/634/detail/1009
注册中心设计 Ap 与 CP 区别
内容简介:
一、 Nachos 与 Eureka 区别
二、面试过程中面试官会问到注册有哪些?
一、 Nachos 与 Eureka 区别
最大区别:
Nachos 支持两种模式 CP/Ap 模式,从 Nachos1.0版本开始,注意模式就是 Ap 模式。首先下列地址是Nachos不同版本升级的具体介绍
https://github.com/alibaba/nacos/releases
就视频中当前最高版本是1.1.4版本(是在2019年10月24日发布的)
现已经更新到2.0.3版本,更新日期为2021年7月28日。
(1)1.1.4(2019.10.24)
#182运行状况检查
字段和保护阈值混淆#1409与 Istio 作为服务发现后端
集成#1507建议 shutdown.sh 脚本仅关闭当前目录中的节点,而不是所有节点。
#1665 DataSync 始终未在网络分区
#1671"客户端版本"标头未在来自 nacos 客户端#182运行状况检查
字段和保护阈值混淆#1409与 Istio 作为服务发现后端
集成#1507建议 shutdown.sh 脚本仅关闭当前目录中的节点,而不是所有节点。
在此处设置新的线程池,但不打开通告程序任务,是否添加 executor.execut(new Notifier());
(2)查看1.0.0版本
这是 Nacos 的 GA 版本,可以投入大规模生产环境。
我们在此版本中引入了几个重要的新功能和优化,其中大部分已在以前的 RC 版本中发布。我们花了大约一个月的时间来稳定和优化这个 GA 版本,其中我们修复了几个错误并适应了一些默认行为。我们还进行了压力测试,以测量Nacos的性能和容量。
即将发布一篇文章,介绍 Nacos 1.0.0带来的变化细节,请关注我们的聊天组和邮件列表。
- [#1041]Nacos 1.0.0 识别 Nacos 0.8.0 的数据文件
- [#1033]nacos 控制台实例数和集群数异常。
- [#1029]nacos dubbo 双重消费者注册错误
- [#1008]NullPointerException 发生在群集初始化而不设置 dom 时
- [#998]将"服务器模式"更改为"实例默认值"
- [#986]属性使用可能无法关闭流
- [#981][通知]Nacos 集群管理在 Apache SkyWalking 中被拒绝实现
- [#974]ArrayIndexOutOfBoundsException 可能会在调用 taskDispatcher.addTask 时引发
- [#973]cluster.conf 文件句柄未释放
- [#961]"checkTask NPE"在群集未初始化时发生
- [#948]Api GET /实例应返回 404(如果未找到匹配的 ip)
- [#946]将默认服务器模式更改为 AP
- [#938]客户端击败处理器任务丢失
- [#923]Nacos 1.0.0 兼容 nacos-client 0.5.0
- [#911]添加保留的元数据键
- [#910]持久性实例不应发送客户端节拍
- [#870]关于 Nacos 的命名空间和租户设计
- [#869]客户端异常消息令人困惑
- [#866]BeatInfo 计划属性可能存在内存可见性问题
- [#865]校验和值不正确
- [#839]重构 API 网址
- [#811]ApiCommands.updateIpPublish countDownLatch 超时问题
- [#809]实例字段"有效"应弃用并替换为"正常"
- [#803]纳科斯前端功能回归计划及落地
- [#801]Nacos 使用 nignx 作为电流限制的最佳实践文章。
- [#757]"域"一词应替换为"服务"
- [#745]支持 CP、AP 或混合服务器运行模式
- [#744]应存储和控制服务器的确切状态
- [#725]nacos 注册表会如何进行多环境部署吗?
- [#677]支持临时实例和持久实例
- [#651]删除旧的 API 条目"API命令"
- [#650]重构服务器列表管理以使其与一致性协议无关
- [#634]增加全局一键使能开关和数据查询使能开关
- [#629]服务器数据需要在开放流量之前预热
- [#502]注册临时实例以及持久性实例
- [#501]构建 muilt 集群时运行状况检查模式配置 whit nacos sync + nacos
- [#479]应使用标准属性语法显示和编辑元数据
- [#327]通知 ACM 开发工具包 RAM 角色名称并访问配置 ?
- [#269]需要在命名模块中支持服务组
[#745]支持 CP、AP 或混合服务器运行模式的详细介绍:
CP 模式提供强一致性、数据持久性但网络分区容错能力。
AP 模式提供最终一致性和网络分区容错性,但提供数据持久性。
混合模式为某些数据提供 CP,为其他数据提供 AP。
服务级别信息和群集级别信息始终通过 CP 协议进行操作,因此在 AP 模式下无法对其进行编辑。
二、面试过程中面试官会问到注册有哪些?
Eureka、Necos、concul、Zookeeper
面试官主要会问到的核心:
1.Eureka 与 Zookeeper 实现注册的区别?
2.Eureka 与 Zookeeper 实现注册的区别?
在明白上述区别之前,需要先了解一些概念:
A. CAP定律概念:
一致性(C):在分布式系统中,如果服务器是集群的情况下,每一个节点同一时刻查询的数据必须保持一致性的问题。
就下图所示,左边的为主,右边的为从。需要先进入到主,在从主进入到从,同步的过程中存在延迟,在保证一致的情况下,主和从都在做读,必须保持他们都是正确的,不能错误,一旦出现错误的情况说明违背了一致性原则。
可用性(A):集群节点中,部分节点出现了故障后仍然可以继续使用。
当左侧第一个出现问题后,就可以转移到中间的。
分区容错性(P):在分布式系统中网络存在脑裂的问题,部分的 Serve 与整个集群失去联系无法形成一个群体。
在了解分区容错性之前,我们先了解脑裂,假设在 Zookeeper 当中一个zk1,一个zk2,,以及zk3,正常情况下,在这三个中只会有一个节点是主节点,这是一主多从的,但这时有一个 zk2领导,突然有一个网络分区,有时候所在的服务区节点不可能在同一个地区里面,可能跨地区、跨网络,这就会导致在后面两台 zk3、zk3的节点可能访问不到 zk2领导的节点中,这就会导致在整个集群当中有多个集群,这就是一个错误。
所以说分区容错性几乎是无法避免的,在这中结果下,我们只能选择取舍,取舍:只有在 CP/AP 平衡点。
采用:
Cp 情况下 虽然我们服务不能用给,但是必须要保证数据的一致性。
Ap 情况下 可以短暂保证数据不一致性,但是最终可以一致性,不管怎么样,要能够保证我们的服务可用。
一般情况下,大多数的注册中心都是Ap。