關(guān)于zookeeper

zookeeper 是一個(gè)apache 開源的分布式協(xié)調(diào)服務(wù),具有如下分布式一致性特性:

1.順序一致性:從同一個(gè)客戶端發(fā)起的事務(wù)請(qǐng)求,最終會(huì)嚴(yán)格按照發(fā)起順序應(yīng)用到zookeeper中去

2.原子性:所有事務(wù)請(qǐng)求的處理結(jié)果在整個(gè)集群的所有節(jié)點(diǎn)上是一致的

3.單一視圖:客戶端連接zookeeper集群中的任何節(jié)點(diǎn),看到的數(shù)據(jù)模型都是一致的

4.可靠性:被成功執(zhí)行的事務(wù)請(qǐng)求所引起的服務(wù)器端狀態(tài)變化會(huì)被一直保留下來,除非有別的事務(wù)對(duì)其進(jìn)行了修改

5.實(shí)時(shí)性:最終一致性

一般的主要用途:配置管理、發(fā)布訂閱、分布式鎖、負(fù)載均衡等功能

zookeeper 技術(shù)細(xì)節(jié):

1. 數(shù)據(jù)模型:類似于unix文件系統(tǒng)的樹狀層次結(jié)構(gòu),每一個(gè)節(jié)點(diǎn)稱為znode,znode上可以保存數(shù)據(jù),同時(shí)也可以創(chuàng)建子節(jié)點(diǎn)

2.事務(wù)id:對(duì)于每一個(gè)事務(wù)請(qǐng)求,zookeeper會(huì)為其分配一個(gè)全局唯一的事務(wù)id zxid,一般為64位的數(shù)字。

3.節(jié)點(diǎn)特性:zookeeper中,節(jié)點(diǎn)類型分為臨時(shí)節(jié)點(diǎn)、永久節(jié)點(diǎn)、順序節(jié)點(diǎn),在節(jié)點(diǎn)創(chuàng)建過程中可以隨意組合,組合后的節(jié)點(diǎn)類型為以下4種:1

持久節(jié)點(diǎn)

持久順序節(jié)點(diǎn)

臨時(shí)節(jié)點(diǎn):該節(jié)點(diǎn)的生命周期與創(chuàng)建節(jié)點(diǎn) 的session有關(guān),session失效,該節(jié)點(diǎn)也就會(huì)被自動(dòng)刪除

臨時(shí)順序節(jié)點(diǎn):

常用命令:

1. create 創(chuàng)建節(jié)點(diǎn)

2.get /path? :獲取對(duì)應(yīng)path的數(shù)據(jù)和狀態(tài)信息

cZxid:創(chuàng)建節(jié)點(diǎn)的事務(wù)id

mZxid:節(jié)點(diǎn)最后一次被更新的事務(wù)id

pZxid:該節(jié)點(diǎn)的子節(jié)點(diǎn)列表最后一次被更新的事務(wù)id,這里需要注意 子節(jié)點(diǎn)內(nèi)容變更并不影響pzxid

cversion:當(dāng)前數(shù)據(jù)節(jié)點(diǎn)子節(jié)點(diǎn)的版本號(hào)

aclVersion:當(dāng)前數(shù)據(jù)節(jié)點(diǎn)acl變更版本號(hào)

dataVersion:當(dāng)前節(jié)點(diǎn)數(shù)據(jù)內(nèi)容的版本號(hào)

zookeeper 中version版本的概念用來控制分布式系統(tǒng)中數(shù)據(jù)的原子性操作,例如對(duì)于dataVersion來說,每一個(gè)更新數(shù)據(jù)的請(qǐng)求中攜帶的版本號(hào)和當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的最新版本號(hào)做比對(duì),如果版本不匹配,則拋出異常,反之,則更新成功,版本加1

zookeeper 提供watch機(jī)制,用以對(duì)感興趣的節(jié)點(diǎn)或者操作增加watcher監(jiān)聽,在對(duì)應(yīng)事件發(fā)生時(shí),返回一個(gè)事件通知,zookeeper中的watcher接口定義了一個(gè)標(biāo)準(zhǔn)的事件處理器,定義了事件通知的相關(guān)邏輯,包含keeperState、EventType 兩個(gè)枚舉類

ACL:訪問控制列表,用以實(shí)現(xiàn)對(duì)數(shù)據(jù)節(jié)點(diǎn)的權(quán)限控制,包含 權(quán)限模式(ip、digest、world、super)、授權(quán)對(duì)象ID、權(quán)限(C、A、R、W、A 5種)

權(quán)限模式和授權(quán)對(duì)象的對(duì)應(yīng)關(guān)系


? ? ? ? ? 權(quán)限模式 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 授權(quán)對(duì)象ID



? ? ? ? ? ? ?ip ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一個(gè)ip地址或者ip段,例如 192.168.1.2 或者192.168.0.1/24


? ? ? ? digest? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 自定義,通常是username:base64(sha-? ? ? ? ? 1(username:password)),計(jì)算方式參見DigestAuthenticationProvider.generateDigest 方法



? ? ?world ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? anyone


? ? super ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 與digest模式一致


例如:digest 模式權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、ZooKeeper的背景 1.1 認(rèn)識(shí)ZooKeeper ZooKeeper---譯名為“動(dòng)物園管理員”。動(dòng)物...
    algernoon閱讀 9,358評(píng)論 1 106
  • 本文將從系統(tǒng)模型、序列化與協(xié)議、客戶端工作原理、會(huì)話、服務(wù)端工作原理以及數(shù)據(jù)存儲(chǔ)等方面來揭示ZooKeeper的技...
    端木軒閱讀 3,917評(píng)論 0 42
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評(píng)論 19 139
  • 下面是我們喜馬拉雅時(shí)間管理一百講天使一期郭瑞琪同學(xué)的故事,我看了很受觸動(dòng)。 從前,拖延先生把起床鬧鐘定在早晨的6點(diǎn)...
    偶然的藍(lán)色2311閱讀 327評(píng)論 1 3
  • 中午的時(shí)候,幫朋友在餐館里訂飯,等的時(shí)候,順便就在旁邊的凳子坐了下來。忽然間,手臂被碰了下。一個(gè)女人手里拿著錢,不...
    煜靈兒閱讀 357評(píng)論 2 6

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