Zookeeper入門之一-概念

數(shù)據(jù)庫(kù)中事務(wù)的ACID

A:Atomicity,原子性,全部成功或全部不成功

C:Consistency,一致性,事務(wù)的執(zhí)行不能破壞數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性和一致性

I:Isolation,隔離性,并發(fā)環(huán)境中,并發(fā)的事務(wù)相關(guān)隔離

D: Durability,持久性,提交之后,db中數(shù)據(jù)是持久化的

分布式事務(wù)-CAP

C: Consistency,一致性,數(shù)據(jù)在多個(gè)副本間能否保持一致

A:Availability,可用性,系統(tǒng)一致處于可用狀態(tài)

P: Partition tolerance,分區(qū)容錯(cuò)性,這里的分區(qū)指網(wǎng)絡(luò)分區(qū)。也就是遇到任何網(wǎng)絡(luò)分區(qū)故障的時(shí)候,對(duì)外仍然可以提供滿足一致性和可用性的服務(wù)

無(wú)法同時(shí)滿足CAP三個(gè)特性

BASE理論

B: Basically Available 基本可用

S: Soft state,柔性事務(wù)

E: Eventually Consistent,最終一致

Paxos算法

分布式系統(tǒng)容錯(cuò)一致性算法

ZK

zk基于zab協(xié)議,是基于paxos的一個(gè)簡(jiǎn)化變種算法。有以下特性:

ZK特性

順序一致性:

同一個(gè)客戶端發(fā)起的請(qǐng)求,最終會(huì)嚴(yán)格按照其發(fā)起順序應(yīng)用到zookeeper中去。

原子性

所有事務(wù)請(qǐng)求的處理結(jié)果,在整個(gè)集群的機(jī)器上生效的情況是一致的。

單一視圖

無(wú)論client連接的是哪個(gè)zk服務(wù)器,看到的數(shù)據(jù)都是一致的。

可靠性

一旦服務(wù)端成功的應(yīng)用了某個(gè)事務(wù),并完成了對(duì)客戶端的響應(yīng),那么該事務(wù)所引起的服務(wù)端狀態(tài)變更會(huì)被一直保留下來(lái),除非有另一個(gè)事務(wù)對(duì)其又進(jìn)行了變更。

實(shí)時(shí)性

zk保證在一定時(shí)間段內(nèi),client最終一定可以從服務(wù)端取到最新的數(shù)據(jù)狀態(tài)。

ZK基本概念

zk底層是樹(shù)形結(jié)構(gòu),由一系列ZNode節(jié)點(diǎn)組成。zk將全量數(shù)據(jù)存儲(chǔ)在內(nèi)存中,提高服務(wù)器吞吐、減少延遲。

zk中的角色:

Leader:集群中的所有機(jī)器通過(guò)選舉過(guò)程選出一臺(tái)leader機(jī)器

Follower:提供讀服務(wù),參與選舉

Observer:提供讀服務(wù),不參與選舉,也不參與寫操作的“過(guò)半寫成功”策略,因此observer在不影響寫性能的情況下能提高集群的讀性能。

Znode:樹(shù)上的每個(gè)節(jié)點(diǎn)保存自己的數(shù)據(jù)內(nèi)容,以及一系列屬性信息。

? znode分為臨時(shí)節(jié)點(diǎn)和持久節(jié)點(diǎn),持久節(jié)點(diǎn)如果不刪除,會(huì)一直存在,臨時(shí)節(jié)點(diǎn)綁定客戶端session周期,session會(huì)話失效節(jié)點(diǎn)就會(huì)被自動(dòng)刪除。

? 臨時(shí)節(jié)點(diǎn)不能作為父節(jié)點(diǎn),只能是葉子節(jié)點(diǎn)

版本:zk中有三個(gè)版本,version—當(dāng)前znode的版本,cversion--當(dāng)前znode子節(jié)點(diǎn)的版本,aversion—當(dāng)前znode的acl版本(Access Controll Lists)

Watcher:回調(diào)機(jī)制的實(shí)現(xiàn)

ACL:權(quán)限控制,有以下5種權(quán)限:

? CREATE: 創(chuàng)建子節(jié)點(diǎn)權(quán)限

? READ:獲取節(jié)點(diǎn)和子節(jié)點(diǎn)列表權(quán)限

? WRITE:更新節(jié)點(diǎn)數(shù)據(jù)權(quán)限

? DELETE:刪除子節(jié)點(diǎn)權(quán)限

? ADMIN:設(shè)置節(jié)點(diǎn)的ACL的權(quán)限

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容