“一入Java深似?!?/strong>,本文將重點(diǎn)介紹分布式相關(guān)理論以及Zookeeper的基礎(chǔ)應(yīng)用,深入內(nèi)容之后會持續(xù)更新。
電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

分布式基本概念

分布式架構(gòu):在集中式的系統(tǒng)環(huán)境中,可以簡單通過事務(wù)(ACID)保證數(shù)據(jù)的一致性;而在分布式系統(tǒng)環(huán)境中,由于缺少全局時鐘、故障無法避免等痛點(diǎn),過去的方式不在適用,而適用新的CAP定理和BASE理論。
CAP
Consistency一致性:指數(shù)據(jù)在多個副本間是否能保持一致的特性。針對一個數(shù)據(jù)項(xiàng)的更新,所有用戶都可以讀取到最新的值,則系統(tǒng)被認(rèn)為是強(qiáng)一致的。
Availablity可用性:指系統(tǒng)一直處于可用狀態(tài),對于每一個請求都能在單位時間內(nèi)返回結(jié)果。
Partition tolerance分區(qū)容錯性:分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)故障時,仍然可以對外提供滿足一致性和可用性的服務(wù),除非整個網(wǎng)絡(luò)都出現(xiàn)故障。
該原理指出,一個分布式系統(tǒng)無法同時滿足這三個基本需求,因此需要作出合理的選擇。由于P是分布式系統(tǒng)的基礎(chǔ),那么核心就是平衡A和C,最常見的就是BASE理論。
BASE:其核心思想是即使無法做到強(qiáng)一致性,但每個應(yīng)用都可以根據(jù)自身業(yè)務(wù)特點(diǎn),
Basically Available基本可用:指分布式系統(tǒng)出現(xiàn)不可知故障時,允許損失部分可用性,比如響應(yīng)時間上的損失、功能上的損失(服務(wù)降級)。
Soft state軟狀態(tài):允許系統(tǒng)中數(shù)據(jù)存在中間狀態(tài),即允許不同節(jié)點(diǎn)的數(shù)據(jù)副本之間進(jìn)行數(shù)據(jù)同步時存在延時。
Eventually consistent最終一致性:需要保證最終數(shù)據(jù)保持一致,而不需要實(shí)時保證系統(tǒng)的強(qiáng)一致性。在實(shí)踐中,最終一致性存在5中變種,因果一致性,讀自己之所寫,會話一致性,單調(diào)讀一致性和單調(diào)寫一致性。比如關(guān)系型數(shù)據(jù)庫,常通過同步或一部的方式實(shí)現(xiàn)主備數(shù)據(jù)復(fù)制,其實(shí)主備之間就存在數(shù)據(jù)不一致,但其通過多次重試或認(rèn)為數(shù)據(jù)修訂等方式保證了數(shù)據(jù)最終一致性,算是一個經(jīng)典案例。

一致性協(xié)議:提到一致性協(xié)議,最基礎(chǔ)的就是2PC(Two-Phase Commit protocol)兩階段提交協(xié)議,絕大多數(shù)的關(guān)系型數(shù)據(jù)庫都是采用的2PC來完成分布式事務(wù)處理的。
2PC的流程:提交事務(wù)階段,包括事務(wù)詢問、執(zhí)行事務(wù)、各參與者向協(xié)調(diào)者反饋事務(wù)詢問的響應(yīng)等步驟;執(zhí)行事務(wù)階段,包含兩種情況,成功時執(zhí)行事務(wù)提交,包括發(fā)送提交請求、事務(wù)提交、反饋事務(wù)提交結(jié)果、完成事務(wù)等步驟,而失敗時會中斷事務(wù),包括發(fā)送回滾請求、事務(wù)回滾、反饋事務(wù)回滾結(jié)果、中斷事務(wù)等步驟。其優(yōu)點(diǎn)是原理簡單、實(shí)現(xiàn)方便,但存在同步阻塞、單點(diǎn)問題、腦裂等痛點(diǎn)。
電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)

3PC:其實(shí)就是2PC的改進(jìn)版,將提交事務(wù)請求階段分成了CanCommit,PreCommit階段,最后的DoCommit沒有變化。
Paxos:是Lamport與1990提出的基于消息傳遞且有高度容錯特性的一致性算法,其成功的解決了“拜占庭將軍”問題(這個問題在區(qū)塊鏈中也涉及)。其包括三種參與角色,分別是Proposer、Acceptor和Learner,這兒不展開介紹其基于數(shù)據(jù)歸納法的證明(個人也沒打算深入研究),但一個重點(diǎn)的觀念就是,2PC是基于所有參與者都同意的情況,而Paxos是基于讀書參與者同意的情況

網(wǎng)友評論