首页 > 技术文章 > nutzboot 使用nacos替换zookeeper

rchao 2019-03-12 11:32 原文

先放一段从网上拷贝一段分布式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>

 

推荐阅读