先放一段從網上拷貝一段分佈式CAP理論的概念php
分佈式領域中存在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原則構建 session
nutzboot 從zookeeper切換到nacos很容易 註冊中心該一下基本就好了(首先要安裝好nacos)app
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>