一榔袋、分布式架構(gòu)

本文為本人讀《從Paxos到ZooKeeper》一書的一些讀書筆記周拐,僅供學(xué)習(xí)使用,謝謝凰兑。

一妥粟、從集中式到分布式

1.1 分布式的定義:

分布式系統(tǒng)是一個(gè)硬件或軟件組件分布在不同的網(wǎng)絡(luò)計(jì)算機(jī)上,彼此之間僅僅通過消息傳遞進(jìn)行通信和協(xié)調(diào)的系統(tǒng)吏够。

一個(gè)標(biāo)準(zhǔn)的分布式系統(tǒng)在沒有任何業(yè)務(wù)邏輯約束的情況下勾给,都會(huì)有以下特征:

  • 分布性
  • 對(duì)等性
  • 并發(fā)性
  • 缺乏全局時(shí)鐘
  • 故障總是會(huì)發(fā)生

1.2 分布式環(huán)境的各種問題

通信異常

由于網(wǎng)絡(luò)本身的不可靠性,導(dǎo)致各網(wǎng)絡(luò)節(jié)點(diǎn)之間進(jìn)行網(wǎng)絡(luò)通信時(shí)锅知,會(huì)伴隨著不可預(yù)知的風(fēng)險(xiǎn)播急,網(wǎng)絡(luò)光纖、路由器或是DNS等硬件設(shè)備或是系統(tǒng)不可用都會(huì)導(dǎo)致最終分布式系統(tǒng)無法順利完成一次網(wǎng)絡(luò)通信售睹。另外桩警,集群的延時(shí)通常會(huì)遠(yuǎn)大于單機(jī)操作。

網(wǎng)絡(luò)分區(qū)

網(wǎng)絡(luò)的異常會(huì)導(dǎo)致分布式系統(tǒng)中昌妹,只有部分節(jié)點(diǎn)能夠正常通信捶枢,從而形成了網(wǎng)絡(luò)分區(qū)握截。

三態(tài)

相比于單機(jī)的失敗或者成功,集群會(huì)出現(xiàn)“三態(tài)”的概念烂叔,即成功谨胞、失敗與超時(shí)。有兩種丟消息的情況:

  • 由于網(wǎng)絡(luò)原因蒜鸡,消息沒有成功發(fā)送到接收方胯努,而是在發(fā)送過程就發(fā)生了丟失現(xiàn)象。
  • 接收方處理后逢防,響應(yīng)給發(fā)送方的過程中叶沛,發(fā)生消息丟失現(xiàn)象。

節(jié)點(diǎn)故障

分布式服務(wù)器節(jié)點(diǎn)宕機(jī)或“僵死”現(xiàn)象胞四。

二恬汁、從ACID到CAP/BASE

2.1 ACID

事務(wù)(Transaction)是由一系列對(duì)系統(tǒng)中數(shù)據(jù)進(jìn)行訪問和更新的操作鎖組成的一個(gè)程序執(zhí)行邏輯單元(Unit),狹義上的事務(wù)特指數(shù)據(jù)庫(kù)事務(wù)辜伟。一方面氓侧,當(dāng)多個(gè)應(yīng)用程序并發(fā)訪問數(shù)據(jù)庫(kù)時(shí),事務(wù)可以在這些應(yīng)用程序之間提供一個(gè)隔離方法导狡,以防止彼此的操作互相干擾约巷。另一方面,事務(wù)為數(shù)據(jù)庫(kù)操作序列提供了一個(gè)從失敗恢復(fù)到正常狀態(tài)的方法旱捧,同時(shí)提供了數(shù)據(jù)庫(kù)即使在異常狀態(tài)下仍能保持?jǐn)?shù)據(jù)一致性的方法独郎。

事務(wù)具有四個(gè)特征,分別是原子性(Atomicity)枚赡、一致性(Consistency)氓癌、隔離性(Isolation)和持久性(Durability),簡(jiǎn)稱事務(wù)的ACID特性贫橙。

原子性

指事務(wù)必須是一個(gè)院子的操作序列單元贪婉。事務(wù)中包含的各項(xiàng)操作在一次執(zhí)行過程中,只允許出現(xiàn)以下兩種狀態(tài)之一卢肃。

  • 全部成功執(zhí)行疲迂。
  • 全部不執(zhí)行。

任何一項(xiàng)操作失敗都將導(dǎo)致整個(gè)事務(wù)失敗莫湘,同時(shí)其他已經(jīng)被執(zhí)行的操作豆?jié){杯撤銷并回滾尤蒿,只有所有的操作全部成功,整個(gè)事務(wù)才算是成功完成幅垮。

一致性

事務(wù)的一致性是指事務(wù)的執(zhí)行不能破壞數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性和一致性腰池,一個(gè)事務(wù)在執(zhí)行之前和執(zhí)行之后,數(shù)據(jù)庫(kù)都必須處于一致性狀態(tài)。

隔離性

是指在并發(fā)環(huán)境中巩螃,并發(fā)的事務(wù)是相互隔離的演怎,一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。在標(biāo)準(zhǔn)的SQL規(guī)范中避乏,定義了4個(gè)事務(wù)隔離級(jí)別,不同的隔離級(jí)別對(duì)事務(wù)的處理不同甘桑,如未授權(quán)讀取(Read Uncommitted)拍皮、授權(quán)讀取(Read Committed)、可重復(fù)讀(Repeatable Read,MYSQL 默認(rèn)采用)和串行化(Serializable)跑杭。

持久性

是指事務(wù)一旦提交铆帽,他對(duì)數(shù)據(jù)庫(kù)中對(duì)應(yīng)數(shù)據(jù)的狀態(tài)變更就應(yīng)該是永久性的。

2.2 分布式事務(wù)

分布式shi'wu事務(wù)是指事務(wù)的參與者德谅、支持事務(wù)的服務(wù)器爹橱、資源服務(wù)器以及事務(wù)管理器分別位于分布式系統(tǒng)的不同節(jié)點(diǎn)之上。通常一個(gè)分布式事務(wù)中會(huì)涉及到對(duì)多個(gè)數(shù)據(jù)源或業(yè)務(wù)系統(tǒng)的操作窄做。

2.3 CAP和BASE理論

對(duì)于一個(gè)高訪問量愧驱、高并發(fā)的互聯(lián)網(wǎng)分布式系統(tǒng)來說,如果我們期望實(shí)現(xiàn)一套嚴(yán)格滿足ACID特性的分布式事務(wù)椭盏,很可能出現(xiàn)的情況就是在系統(tǒng)的可用性和嚴(yán)格一致性之間出現(xiàn)沖突-因?yàn)楫?dāng)我們要求分布式系統(tǒng)具有嚴(yán)格一致性時(shí)组砚,很可能就需要犧牲掉系統(tǒng)的可用性。但是掏颊,可用性優(yōu)勢(shì)一個(gè)不允許我們討價(jià)還價(jià)的系統(tǒng)屬性糟红,對(duì)于一致性,則更加是所有消費(fèi)者對(duì)于一個(gè)軟件系統(tǒng)的剛需乌叶。因此盆偿,在可用性和一致性之間永遠(yuǎn)無法存在一個(gè)兩全其美的方案,于是出現(xiàn)了諸如CAP和BASE這樣的分布式系統(tǒng)經(jīng)典理論准浴。

CAP定理

一個(gè)分布式系統(tǒng)不可能同時(shí)滿足一致性(Consistency)事扭、可用性(Availability)和分區(qū)容錯(cuò)性(Partition tolerance)這三個(gè)基本需求,最多只能同時(shí)滿足其中的兩項(xiàng)兄裂。

需要明確的一點(diǎn)是句旱,對(duì)于一個(gè)分布式系統(tǒng)而言,分區(qū)容錯(cuò)性可以說是一個(gè)最基本的要求晰奖。因?yàn)榧热皇且粋€(gè)分布式系統(tǒng)谈撒,那么分布式系統(tǒng)中的組件必然需要被部署到不同的節(jié)點(diǎn),否則也就無所謂分布式系統(tǒng)了匾南,因此必然出現(xiàn)子網(wǎng)絡(luò)啃匿。而對(duì)于分布式系統(tǒng)而言,網(wǎng)絡(luò)問題又是一個(gè)必定會(huì)出現(xiàn)的異常情況,因此分區(qū)容錯(cuò)性也就成為了一個(gè)分布式系統(tǒng)必然要面對(duì)和解決的問題溯乒。因此系統(tǒng)架構(gòu)設(shè)計(jì)師往往需要把經(jīng)歷花在如何根據(jù)業(yè)務(wù)特點(diǎn)在C和A之間尋求平衡夹厌。

BASE理論

BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個(gè)短語的簡(jiǎn)寫裆悄。

總的來說矛纹,BASE理論面向的是大型高可用可擴(kuò)展的分布式系統(tǒng),和傳統(tǒng)事務(wù)的ACID特性是相反的光稼,他完全不同于ACID的強(qiáng)一致性模型或南,而是提出通過犧牲強(qiáng)一致性來獲得可用性,并允許數(shù)據(jù)在一段時(shí)間內(nèi)是不一致的艾君,但最終達(dá)到一致狀態(tài)采够。但同時(shí),在實(shí)際的分布式場(chǎng)景中冰垄,不同業(yè)務(wù)單元和組件對(duì)數(shù)據(jù)一致性的要求是不同的蹬癌,因此在具體的分布式系統(tǒng)架構(gòu)設(shè)計(jì)中,ACID特性和BASE理論往往會(huì)結(jié)合在一起使用虹茶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逝薪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子写烤,更是在濱河造成了極大的恐慌翼闽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洲炊,死亡現(xiàn)場(chǎng)離奇詭異感局,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暂衡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門询微,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狂巢,你說我怎么就攤上這事撑毛。” “怎么了唧领?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵藻雌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我斩个,道長(zhǎng)胯杭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任受啥,我火速辦了婚禮做个,結(jié)果婚禮上鸽心,老公的妹妹穿的比我還像新娘。我一直安慰自己居暖,他們只是感情好顽频,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著太闺,像睡著了一般糯景。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上省骂,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天莺奸,我揣著相機(jī)與錄音,去河邊找鬼冀宴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛温学,可吹牛的內(nèi)容都是我干的略贮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼仗岖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼逃延!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起轧拄,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤揽祥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后檩电,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拄丰,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年俐末,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了料按。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卓箫,死狀恐怖载矿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烹卒,我是刑警寧澤闷盔,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站旅急,受9級(jí)特大地震影響逢勾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坠非,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一敏沉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦盟迟、人聲如沸秋泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迫皱。三九已至,卻和暖如春辖众,著一層夾襖步出監(jiān)牢的瞬間卓起,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工凹炸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戏阅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓啤它,卻偏偏與公主長(zhǎng)得像奕筐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子变骡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 本文歡迎轉(zhuǎn)載离赫,轉(zhuǎn)載請(qǐng)注明原文鏈接,并附作者個(gè)人信息李艷鵬塌碌。 1 背景 一致性是一個(gè)抽象的渊胸、具有多重含義的計(jì)算機(jī)術(shù)語...
    581f548ef0ec閱讀 43,470評(píng)論 28 294
  • 此文來自于:《從Paxos到Zookeeper分布式一致性原理與實(shí)踐》第一章集中式->分布式演變基礎(chǔ)知識(shí) 1. 從...
    李文文丶閱讀 447評(píng)論 0 0
  • 分布式系統(tǒng)(Distributed System)資料 希望轉(zhuǎn)載的朋友,你可以不用聯(lián)系我.但是一定要保留原文鏈接台妆,...
    Albert陳凱閱讀 3,728評(píng)論 0 33
  • 這一天有點(diǎn)小幸運(yùn)翎猛,剛回宿舍,窗外便下起了噼里啪啦的大雨频丘,要知道剛剛我都沒有帶傘的办成,手里卻捧著從圖書館借來的六本書。...
    新秋的向日葵屋閱讀 168評(píng)論 0 0
  • 今天是購(gòu)物節(jié)前夜搂漠,正巧趕上加班無眠迂卢。工作的間隙,呆坐于墻邊桐汤,閉上沉重的眼皮而克,關(guān)注呼吸的起伏,周圍的嘈雜忽強(qiáng)忽弱怔毛,偶...
    張永勝_永往直前閱讀 322評(píng)論 4 0