黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

我讀《從Paxos到zookeeper分布式一致性原理與實(shí)

系統(tǒng) 2300 0

? 我讀《從Paxos到zookeeper分布式一致性原理與實(shí)踐》

從年后拿到這本書開始閱讀,到準(zhǔn)備系統(tǒng)分析師考試之前,終于讀完了一遍,對(duì)Zookeeper有了一個(gè)全面的認(rèn)識(shí),整本書從理論到應(yīng)用再到細(xì)節(jié)的闡述,內(nèi)容安排從邏輯性和實(shí)用性上都是很優(yōu)秀的,對(duì)全面認(rèn)識(shí)Zookeeper很有幫助,建議大家閱讀。本人看書秉承先把書看薄,再把書講厚的原理,一般喜歡在看的過程中 用筆 在紙上勾勾畫畫,加點(diǎn)注釋增強(qiáng)理解,看完后會(huì)從整體知識(shí)結(jié)構(gòu)上整理出我的理解,不求詳細(xì),但求關(guān)鍵知識(shí)點(diǎn)的串聯(lián),最后通過整理的知識(shí)點(diǎn)想象自己給別人講解一遍,對(duì)照書中目錄,看是否也能像作者面面俱到,調(diào)理清晰,對(duì)哪塊知識(shí)點(diǎn)不明確再翻書復(fù)讀,以求透徹理解掌握。以下是我整理的關(guān)于此書的筆記,以饗讀者:

(一)分布式基礎(chǔ)知識(shí)
  1. 分布式的特點(diǎn):分布性、對(duì)等性、并發(fā)性、缺乏全局時(shí)鐘、故障總會(huì)發(fā)生
  2. 分布式環(huán)境下的各種問題:通訊異常、網(wǎng)絡(luò)分區(qū)、成功失敗超時(shí)三態(tài)、節(jié)點(diǎn)故障
  3. 從ACID到BASE的變化
  4. 一致性協(xié)議:
  • 2pc(請(qǐng)求處理-->提交確認(rèn))與3pc(事務(wù)處理能力詢問-->處理后待提交-->提交確認(rèn))的特點(diǎn)及優(yōu)缺點(diǎn)比較
  • Paxos協(xié)議的原理及在Chubby、Hypertable上的實(shí)踐。
(二)Zookeeper可以保證的分布式一致性特性:
  1. 順序一致性:同一個(gè)客戶端發(fā)起的事務(wù)請(qǐng)求,嚴(yán)格按其順序處理
  2. 原子性:事務(wù)請(qǐng)求處理的原子性
  3. 單一視圖:無論客戶端連接到哪個(gè)服務(wù)器,看到的數(shù)據(jù)模型是一致的
  4. 可靠性:對(duì)事務(wù)的處理完成并反饋后,狀態(tài)會(huì)一致保留直到被其他事務(wù)改變
  5. 實(shí)時(shí)性:一定時(shí)間段內(nèi),客戶端最終一定能從服務(wù)器上讀取到最新的數(shù)據(jù)狀態(tài)
(三) Zookeeper中的核心概念/特性:
  1. 全部存儲(chǔ)在內(nèi)存中的樹形數(shù)據(jù)節(jié)點(diǎn)ZNode,分為持久(順序)型與臨時(shí)(順序)節(jié)點(diǎn)(生命周期與客戶端會(huì)話綁定),每個(gè)ZNode只能由一臺(tái)服務(wù)器創(chuàng)建,且節(jié)點(diǎn)的sequential自增數(shù)字保障兄弟節(jié)點(diǎn)按順序無重復(fù)
  2. 三種集群角色
    • Leader:處理事務(wù)請(qǐng)求并保證事務(wù)請(qǐng)求的順序性(事務(wù)指能夠改變Zookeeper服務(wù)狀態(tài)的操作,一般包括數(shù)據(jù)節(jié)點(diǎn)的創(chuàng)建刪除與內(nèi)容更新、客戶端會(huì)話創(chuàng)建與失效。每一個(gè)事務(wù)有全局唯一的ZXID);集群內(nèi)部各服務(wù)器的調(diào)度
    • Follower:處理客戶端非事務(wù)請(qǐng)求、轉(zhuǎn)發(fā)事務(wù)請(qǐng)求給Leader、參與事務(wù)請(qǐng)求Proposal投票、參與Leader選舉投票
    • Observer:只處理非事務(wù)服務(wù),不參與任何形式的投票
  3. Stat數(shù)據(jù)結(jié)構(gòu)維護(hù)當(dāng)前ZNode的三個(gè)數(shù)據(jù)版本:當(dāng)前版本version、當(dāng)前子節(jié)點(diǎn)版本cversion、ACL版本aversion
  4. 客戶端與服務(wù)端TCP長連接的會(huì)話Session管理,分桶管理策略通過設(shè)定固定周期的超時(shí)檢查,批量清理超時(shí)會(huì)話??蛻舳死肁PI可對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行如下操作:創(chuàng)建會(huì)話、創(chuàng)建節(jié)點(diǎn)、刪除節(jié)點(diǎn)、讀取數(shù)據(jù)、更新數(shù)據(jù)、檢測節(jié)點(diǎn)是否存在、權(quán)限控制。常用開源的兩款zookeeper客戶端:ZkClient、Curator。
  5. Watcher事件監(jiān)聽:客戶端通過監(jiān)聽特點(diǎn)節(jié)點(diǎn)上的特定事件,實(shí)現(xiàn)分布式協(xié)調(diào)服務(wù)
  6. ACL:類似于UNIX文件系統(tǒng)的權(quán)限控制,包括增、刪、讀、寫、admin設(shè)置等五種權(quán)限
  7. Jute為序列化組件
  8. Zookeeper將所有節(jié)點(diǎn)的路徑、數(shù)據(jù)內(nèi)容、ACL等信息組成DataTree全部存儲(chǔ)在內(nèi)存中,其底層數(shù)據(jù)結(jié)構(gòu)是ConcurrentHashMap,其key是數(shù)據(jù)節(jié)點(diǎn)的path,而value則是真正的數(shù)據(jù)內(nèi)容DataNode。通過ZKDatabase管理所有會(huì)話、DataTree存儲(chǔ)和事務(wù)日志,并定時(shí)dump快照到磁盤,同時(shí)也方便在啟動(dòng)時(shí)從磁盤上的事務(wù)日志和快照數(shù)據(jù)文件恢復(fù)成一個(gè)完整的內(nèi)存數(shù)據(jù)庫
說明:ZXID是一個(gè)64位的數(shù)字,其中低32位針對(duì)客戶端每一個(gè)事務(wù)請(qǐng)求,Leader服務(wù)器在產(chǎn)生一個(gè)新的事務(wù)proposal時(shí)進(jìn)行+1,高32位代表本輪Leader周期的epoch標(biāo)號(hào),當(dāng)新選舉一個(gè)Leader后會(huì)對(duì)此epoch+1以區(qū)分出Leader周期的變化。集群中擁有XZID最大的proposal的機(jī)器會(huì)成為Leader,因?yàn)樗欢ň哂兴幸呀?jīng)提交的提案。
?
(四) Zookeeper的核心協(xié)議ZAB:
  1. 主備模型架構(gòu)保證同一時(shí)刻只有一個(gè)主進(jìn)程處理事務(wù)請(qǐng)求并廣播狀態(tài),并能保證全局的變更系列被順序應(yīng)用;
  2. 所有事務(wù)請(qǐng)求必須由一個(gè)全局唯一的服務(wù)器Leader來協(xié)調(diào)處理,其他事務(wù)請(qǐng)求按照類似兩階段提交的過程向Follower服務(wù)器發(fā)送proposal提議;
  3. ZAB協(xié)議包括兩種基本模式:崩潰恢復(fù)和消息廣播
    • 崩潰恢復(fù):當(dāng)服務(wù)啟動(dòng)、Leader網(wǎng)絡(luò)中斷或退出、重啟等進(jìn)去恢復(fù)模式,選舉產(chǎn)生Leader并在過半的機(jī)器從該Leader中國完成了數(shù)據(jù)同步后退出此模式進(jìn)行消息廣播模式并提供服務(wù),因此只要集群中存在過半的服務(wù)器能夠彼此進(jìn)行正常通信,就可以選舉出新的Leader并再次進(jìn)入消息廣播模式;
    • 消息廣播:Leader為每個(gè)事物請(qǐng)求生成ZXID的事務(wù)proposal廣播給Follower,F(xiàn)ollower接收到后以事務(wù)日志的形式寫入本地磁盤并ACK響應(yīng),當(dāng)Leader接收到過半Follower的ACK后,廣播一個(gè)commit消息給所有的Follower通知事務(wù)提交,同時(shí)自身提交,F(xiàn)ollower接到commit后也完成提交從而完成這個(gè)事務(wù)處理。
?
(五)ZAB協(xié)議與Paxos算法的區(qū)別于聯(lián)系:
  • 聯(lián)系:都有Leader、Follower、epoch值;
  • 區(qū)別:
    • Paxos在新選舉的主進(jìn)程中會(huì)進(jìn)行兩階段的工作,第一階段讀階段主進(jìn)程通過和其他進(jìn)程的通信來收集上一個(gè)主進(jìn)程的提案并提交;第二階段為寫階段即新主進(jìn)程開始提出自己的提案;
    • ZAB協(xié)議在讀階段之后額外引入一個(gè)同步階段,在此階段中新的Leader會(huì)確保存在過半的Follower已經(jīng)提交了之前Leader周期中所有的事務(wù)proposal,從而保證在新Leader提交proposal之前,所有的Follower都完成了對(duì)之前所有事務(wù)proposal的提交。同步階段完成后再進(jìn)入寫階段。
?
(六)ZooKeeper典型8大應(yīng)用場景及對(duì)應(yīng)的特性:
  1. 數(shù)據(jù)發(fā)布訂閱:對(duì)統(tǒng)一配置信息等數(shù)據(jù)可以通過在Zookeeper創(chuàng)建一個(gè)數(shù)據(jù)節(jié)點(diǎn)并讓客戶端進(jìn)行監(jiān)聽,主要利用了Zookeeper的Watcher監(jiān)聽特性;
  2. 負(fù)載均衡:創(chuàng)建一個(gè)節(jié)點(diǎn),負(fù)載應(yīng)用把自己的服務(wù)地址寫到此節(jié)點(diǎn)下,如果此應(yīng)用掛掉,則此子節(jié)點(diǎn)消失
  3. 命名服務(wù):利用Zookeeper創(chuàng)建順序無重復(fù)子節(jié)點(diǎn)的特性;
  4. 分布式協(xié)調(diào)/通知:不同客戶端都對(duì)Zookeeper上的同一個(gè)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行watcher注冊(cè),監(jiān)聽數(shù)據(jù)節(jié)點(diǎn)的變化,當(dāng)發(fā)生變化所有訂閱的客戶端接收到通知并進(jìn)行處理;
  5. 集群管理:利用了watcher監(jiān)聽與臨時(shí)節(jié)點(diǎn)在會(huì)話失效自動(dòng)清除的特性。同時(shí),各服務(wù)器可以講運(yùn)行狀態(tài)信息寫入到臨時(shí)節(jié)點(diǎn)中進(jìn)而有助于Leader收集負(fù)載信息;
  6. Master選舉:所有客戶端創(chuàng)建同一個(gè)path的數(shù)據(jù)節(jié)點(diǎn),只有一個(gè)能成功,即為Master;
  7. 分布式鎖:創(chuàng)建臨時(shí)節(jié)點(diǎn),誰成功即獲得鎖。另外,根據(jù)創(chuàng)建時(shí)不同的類型-序號(hào),根據(jù)一定的規(guī)則可以模擬出共享鎖、讀寫鎖等;
  8. 分布式隊(duì)列:每個(gè)客戶端在指定節(jié)點(diǎn)下創(chuàng)建臨時(shí)節(jié)點(diǎn),然后獲取該指定節(jié)點(diǎn)下的所有子節(jié)點(diǎn)并判斷自己是否是序號(hào)最小的節(jié)點(diǎn),如果是則可以進(jìn)行處理,如果不是則進(jìn)入等待并監(jiān)聽比自己序號(hào)小的最后一個(gè)節(jié)點(diǎn),待接到watcher通知后,重復(fù)檢查。
(七)細(xì)節(jié)信息:
  1. 單機(jī)版服務(wù)器啟動(dòng)流程圖:
    • 我讀《從Paxos到zookeeper分布式一致性原理與實(shí)踐》
  2. 集群版啟動(dòng)流程圖:
    • 我讀《從Paxos到zookeeper分布式一致性原理與實(shí)踐》
  3. Zookeeper服務(wù)端對(duì)于會(huì)話創(chuàng)建的處理,大致分為請(qǐng)求接受、會(huì)話創(chuàng)建、預(yù)處理、事務(wù)處理、事務(wù)應(yīng)用和會(huì)話響應(yīng)6大環(huán)節(jié),如圖:
    • 我讀《從Paxos到zookeeper分布式一致性原理與實(shí)踐》
?

我讀《從Paxos到zookeeper分布式一致性原理與實(shí)踐》


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論