先放一段从网上拷贝一段分布式CAP理论的概念
分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。
①C:Consistency,一致性,数据一致更新,所有数据变动都是同步的。
②A:Availability,可用性,系统具有好的响应性能。
③P:Partition tolerance,分区容错性。
因此,将精力浪费在思考如何设计能满足三者的完美系统上是愚钝的,应该根据应用场景进行适当取舍。
(1)一致性
一致性是指从系统外部读取系统内部的数据时,在一定约束条件下相同,即数据变动在系统内部各节点应该是同步的。根据一致性的强弱程度不同,可以将一致性级别分为如下几种:
①强一致性(strong consistency)。任何时刻,任何用户都能读取到最近一次成功更新的数据。
②单调一致性(monotonic consistency)。任何时刻,任何用户一旦读到某个数据在某次更新后的值,那么就不会再读到比这个值更旧的值。也就是说,可 获取的数据顺序必是单调递增的。
③会话一致性(session consistency)。任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在本次会话中就不会再读到比这值更旧的值 会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障。示例case:php的 session概念。
④ 最终一致性(eventual consistency)。用户只能读到某次更新后的值,但系统保证数据将最终达到完全一致的状态,只是所需时间不能保障。
⑥弱一致性(weak consistency)。用户无法在确定时间内读到最新更新的值。
zookeeper 按照cp原则构建 nacos 按照ap原则构建
nutzboot 从zookeeper切换到nacos很容易 注册中心该一下基本就行了(首先要安装好nacos)
dubbo.application.qos.enable=false
#dubbo.application.qos.port=22222
#dubbo.application.qos.accept.foreign.ip=false
#注册中心
#dubbo.registry.address=zookeeper://ip1:2181?backup=ip2:2181,ip3:2181
dubbo.registry.address=nacos://ip1:8848?backup=ip2:8848,ip3:8848
#端口 0为自动端口
dubbo.protocol.port=0
dubbo.annotation.package=com.jxzg
dubbo.consumer.timeout=300000
dubbo.consumer.retries=0
使用 nacos 需要引入的jar
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>0.0.2</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>0.8.0</version> </dependency>