nacos CP/AP适用场景
Posted 老油条666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nacos CP/AP适用场景相关的知识,希望对你有一定的参考价值。
我们知道nacos是支持CP和AP切换的,这是其他注册中心不具备的。接下来我们说一下,什么场景切换
先来复习一下CAP理论
P:分区容错性:指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。
事实上我们在设计分布式系统是都会考虑到bug,硬件,网络等各种原因造成的故障,所以即使部分节点或者网络出现故障,我们要求整个系统还是要继续使用的
(不继续使用,相当于只有一个分区,那么也就没有后续的一致性和可用性了)
A:可用性: 一直可以正常的做读写操作。简单而言就是客户端一直可以正常访问并得到系统的正常响应。用户角度来看就是不会出现系统操作失败或者访问超时等问题。
C:一致性:在分布式系统完成某写操作后任何读操作,都应该获取到该写操作写入的那个最新的值。相当于要求分布式系统中的各节点时时刻刻保持数据的一致性。
C是所有节点在同一时间看到的数据是一致的;而A的定义是所有的请求都会收到响应。
如何选择使用何种模式? 一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring cloud和Dubbo服务 ,都适用于AP模式,AP模式为了服务的可用性而减弱了一致性,因此AP模式下只支持注册临时实例。 如果需要在服务级别编辑或者存储配置信息,那么CP是必须的,K8S服务和DNS服务则适用于CP模式 CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。
以上是关于nacos CP/AP适用场景的主要内容,如果未能解决你的问题,请参考以下文章
从Nacos源码中学习代码设计之第1节-多线程CAS并发控制的使用
从Nacos源码中学习代码设计之第1节-多线程CAS并发控制的使用