国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Zookeeper(一)分布式事務(wù)

我們都知道普通的事務(wù)中有原子性,一致性,隔離性,持久性。而分布式事務(wù)中也有這些屬性,下面我們就來介紹一下分布式事務(wù)與普通的事務(wù)有何不同之處。

分布式事務(wù)

隨著分布式計算的發(fā)展,事務(wù)在分布式中也得到了廣泛的應(yīng)用。在單機(jī)數(shù)據(jù)庫中,我們很容易能夠?qū)崿F(xiàn)桃滿足ACID特性的事務(wù)處理系統(tǒng),但在分布式數(shù)據(jù)庫中,數(shù)據(jù)分散在各個不同的機(jī)器上,如何對這些數(shù)據(jù)進(jìn)行分布式的事務(wù)處理具有非常大的挑戰(zhàn)。分布式中會有機(jī)器宕機(jī)和各種網(wǎng)絡(luò)異常。盡管存在這種種分布式問題,但是在分布式計算領(lǐng)域,為了保證分布式應(yīng)用程序的可靠性,分布式事務(wù)是無法回避的。

分布式事務(wù)是指事務(wù)的參與者、支持事務(wù)的服務(wù)器、資源服務(wù)器以及事務(wù)管理器分別位于分布式系統(tǒng)的不同節(jié)點上。通常一個分布式事務(wù)中會涉及對多個數(shù)據(jù)源或業(yè)務(wù)系統(tǒng)的操作。


我們可以設(shè)想一個最典型的分布式事務(wù)場景:一個跨銀行的轉(zhuǎn)賬操作涉及調(diào)用兩個異地的銀行服務(wù),其中一個是本地銀行提供的取款服務(wù),兩個則是目標(biāo)銀行提供的存款服務(wù),這兩個服務(wù)本身是無狀態(tài)并且是相互獨立的,共同構(gòu)成了一個完整的分布式事務(wù)。如果從本地銀行取款成功,但是因為某種原因存款服務(wù)失敗了,那么就必須回滾到取款錢的狀態(tài),否則用戶可能會發(fā)現(xiàn)自己的錢不翼而飛了。

從上面這個例子中,我們可以看到,一個分布式事務(wù)可以看作是由多個分布式的操作序列組成的,例如上面例子中的取款服務(wù)和存款服務(wù),通常可以把這一系列的分布式的操作序列成為子事務(wù)。因此,分布式事務(wù)也可以被定義為一種嵌套型的事務(wù),同時也就局用了ADID事務(wù)特性。但由于在分布式事務(wù)中,各個子事務(wù)的執(zhí)行是分布式的,因此要實現(xiàn)一種能夠保證ACID特性的分布式事務(wù)處理系統(tǒng)就顯得格外復(fù)雜。

CAP和BASE理論

對于本地事務(wù)處理或者是集中式的事務(wù)處理系統(tǒng),很顯然我們可以采用已經(jīng)被實踐證明很成熟的ACID模型來保證數(shù)據(jù)的嚴(yán)格一致性。對于一個高訪問量、高并發(fā)的互聯(lián)網(wǎng)分布式系統(tǒng)來說,如果我們期望實現(xiàn)一套嚴(yán)格滿足ACID特性的分布式事務(wù),很可能出現(xiàn)的情況就是在系統(tǒng)的可用性和嚴(yán)格一致性之間出現(xiàn)沖突——因為我們要求分布式系統(tǒng)具有嚴(yán)格一致性時,很可能需要犧牲掉系統(tǒng)的可用性。但毋庸置疑的一點是,可用性優(yōu)勢一個所有消費者不允許我們討價還價的系統(tǒng)屬性,比如說像淘寶網(wǎng)這樣的在線購物網(wǎng)站,就要求它能夠&*24小時不間斷地對外提供服務(wù),而對于一致性,則更加是所有消費者對于一個軟件系統(tǒng)的剛需。因此在可用性和一致性之間永遠(yuǎn)無法存在一個兩全其美的方案,于是如何構(gòu)建一個兼顧可用性和一致性的分布式系統(tǒng)成為了無數(shù)工程師探討的難題,出現(xiàn)了諸如CAP和BASE這樣的分布式系統(tǒng)經(jīng)典理論。

CAP理論告訴我們,一個分布式系統(tǒng)不可能同時滿足一致性(C:Consistency)、可用性(A:Availability)和分區(qū)容錯性(P:Partition tolerance)這三個基本需求,最多只能同時滿足其中的兩項。

一致性

在分布式系統(tǒng)環(huán)境中,一致性是指數(shù)據(jù)在多個副本之間是否能夠保持一致性的特性。在一致性的需求下,當(dāng)一個系統(tǒng)在數(shù)據(jù)一致的狀態(tài)下執(zhí)行更新操作后,應(yīng)該保證系統(tǒng)的數(shù)據(jù)仍然處于一致的狀態(tài)。

對于一個將數(shù)據(jù)副本分布在不同分布式節(jié)點上的系統(tǒng)來說,如果對第一個節(jié)點的數(shù)據(jù)進(jìn)行了更新操作并且更新成功后,卻沒有使得第二個節(jié)點的數(shù)據(jù)得到相應(yīng)的更新,于是在第二個節(jié)點的數(shù)據(jù)進(jìn)行讀取操作時,獲取的依然是老數(shù)據(jù)(或稱為臟數(shù)據(jù)),這就是典型的分布式數(shù)據(jù)不一致情況。在分布式系統(tǒng)中,如果能夠做到針對一個數(shù)據(jù)項的更新操作執(zhí)行成功后,所有的用戶都可以讀取到其最新的值,那么這樣的系統(tǒng)就被認(rèn)為具有強(qiáng)一致性(或嚴(yán)格的一致性)。

可用性

可用性是指系統(tǒng)提供的服務(wù)必須一直處于可用的狀態(tài),對于用戶的每一個操作請求總是能夠在有限的時間內(nèi)返回結(jié)果。這里我們重點看下“有限時間內(nèi)”和“返回結(jié)果”。

“有限的時間內(nèi)”是指,對于用戶的一個操作請求,系統(tǒng)必須能夠在指定的時間(即響應(yīng)時間)內(nèi)返回對應(yīng)的處理結(jié)果,如果超過了這個時間范圍,那么系統(tǒng)就被認(rèn)為是不可用。另外,“有限的時間內(nèi)”是一個在系統(tǒng)設(shè)計之初就設(shè)定好的系統(tǒng)運行指標(biāo),通常不同的系統(tǒng)之間會有很大的不同。比如說,對于一個在線搜索引擎來說,通常在0.5秒內(nèi)需要給出用戶搜索關(guān)鍵詞對應(yīng)的檢索結(jié)果。以Google為例,搜索“分布式”這一關(guān)鍵詞,Google能夠在0.3秒左右的時間,返回大約上千萬條檢索結(jié)果。而對于一個面向HIVE的海量數(shù)據(jù)查詢平臺來說,正常的一次數(shù)據(jù)檢索時間可能在20秒到30秒之間,如果是一個時間跨度較大的數(shù)據(jù)內(nèi)容查詢,“有限的時間”有時候甚至長達(dá)幾分鐘。

從上面的例子中,我們可以看出,用戶對一個系統(tǒng)的請求響應(yīng)時間的期望值不盡相同。但是,無論系統(tǒng)之間的差異多大,唯一相同的一點就是對于用戶請求,系統(tǒng)必須存在一個合理的響應(yīng)時間,否則用戶便會對系統(tǒng)感到失望。

“返回結(jié)果”是可用性的另一個非常重要的指標(biāo),它要求系統(tǒng)在完成對用戶請求的處理后,返回一個正常的響應(yīng)結(jié)果。正常的響應(yīng)結(jié)果通常能夠明確地反映出對請求的處理結(jié)果,即成功或失敗,而不是一個讓用戶感到困惑的返回結(jié)果。

讓我們再來看看上面提到的在線搜索引擎的例子,如果用戶輸入指定的搜索關(guān)鍵詞后,返回的結(jié)果是一個系統(tǒng)錯誤,通常類似于“OutOfMemoryError”或“System Has Crashed”等提示語,那么我們認(rèn)為此時系統(tǒng)是不可用的。

分區(qū)容錯性

分區(qū)容錯性約束了一個分布式系統(tǒng)需要具有如下特性:分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)分區(qū)故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務(wù),除非是整個網(wǎng)絡(luò)環(huán)境都發(fā)生了故障。

網(wǎng)絡(luò)分區(qū)是指在分布式系統(tǒng)中,不同的節(jié)點分布在不同的子網(wǎng)絡(luò)(機(jī)房或異地網(wǎng)絡(luò)等)中,由于一些特殊的原因?qū)е逻@些子網(wǎng)絡(luò)之間出現(xiàn)網(wǎng)絡(luò)不連通的狀況,但各個子網(wǎng)絡(luò)的內(nèi)部網(wǎng)絡(luò)是正常的,從而導(dǎo)致整個系統(tǒng)的網(wǎng)絡(luò)環(huán)境被切分成了若干個孤立的區(qū)域。需要注意的是,組成一個分布式系統(tǒng)的每個節(jié)點的加入與退出都可以看作是一個特殊的網(wǎng)絡(luò)分區(qū)。

從CAP理論看出,一個分布式系統(tǒng)不可能同時滿足一致性、可用性和分區(qū)容錯性這三個需求。另一方面,需要明確的一點是,對于一個分布式系統(tǒng)而言,分區(qū)容錯性可以說是一個最基本的要求。為什么這樣說,其實很簡單,因為既然是一個分布式系統(tǒng),那么分布式系統(tǒng)的組件必然需要被部署到不同的節(jié)點,否則也就無所謂分布式系統(tǒng)了,因此必然出現(xiàn)子網(wǎng)格。而對于分布式系統(tǒng)而言,網(wǎng)絡(luò)問題又是一個必定會出現(xiàn)的異常情況,因此分區(qū)容錯性也就成為了一個分布式系統(tǒng)必然需要面對和解決的問題。因此系統(tǒng)架構(gòu)設(shè)計師往往需要把精力花在如何根據(jù)業(yè)務(wù)特點在C(一致性)和A(可用性)之間尋求平衡。

BASE理論

BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個短語的簡寫,BASE是對CAP中一致性和可用性權(quán)衡的結(jié)果,其來源于對大規(guī)?;ヂ?lián)網(wǎng)系統(tǒng)分布式實踐的結(jié)論,是基于CAP定理逐步演化而來的,其核心思想是即使無法做到強(qiáng)一致性(Strong consistency),但每個應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點,采用適當(dāng)?shù)姆绞絹硎瓜到y(tǒng)達(dá)到最終一致性(Eventual consistency)。接下來我們著重對BASE中的三要素進(jìn)行詳細(xì)講解。

基本可用

基本可用是指分布式系統(tǒng)在出現(xiàn)不可預(yù)知故障的時候,允許損失部分可用性——但請注意,這絕不等價于系統(tǒng)不可用,以下兩個就是“基本可用”的典型例子。

  • 響應(yīng)時間上的損失:正常情況下,一個在線搜索引擎需要0.5秒內(nèi)返回給用戶相應(yīng)的查詢結(jié)果,但由于出現(xiàn)異常(比如系統(tǒng)部分機(jī)房發(fā)生斷電或斷網(wǎng)故障),查詢結(jié)果的響應(yīng)時間增加到了1~2秒。
  • 功能上的損失:正常情況下,在一個電子商務(wù)網(wǎng)站上進(jìn)行購物,消費者幾乎能夠順利地完成每一筆訂單,但是在一些節(jié)日大促購物高峰的時候,由于消費者的購物行為激增,為了保護(hù)購物系統(tǒng)的穩(wěn)定性,部分消費者可能會被引導(dǎo)到一個降級頁面。

弱狀態(tài)也稱為軟狀態(tài),和硬狀態(tài)相對,是指允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認(rèn)為該中間狀態(tài)的存在不會影響系統(tǒng)的整體可用性,即允許系統(tǒng)在不同節(jié)點的數(shù)據(jù)副本之間進(jìn)行數(shù)據(jù)聽不的過程存在延時。

最終一致性

最終一致性強(qiáng)調(diào)的是系統(tǒng)中所有的數(shù)據(jù)副本,在經(jīng)過一段時間的同步后,最終能夠達(dá)到一個一致的狀態(tài)。因此,最終一致性的本質(zhì)是需要系統(tǒng)保證最終數(shù)據(jù)能夠達(dá)到一致,而不需要實時保證系統(tǒng)數(shù)據(jù)的強(qiáng)一致性

亞馬遜首席技術(shù)官Werner Vogels在于2008年發(fā)表的一篇文章中對最終一致性進(jìn)行了非常詳細(xì)的介紹。他認(rèn)為最終一致性時一種特殊的弱一致性:系統(tǒng)能夠保證在沒有其他新的更新操作的情況下,數(shù)據(jù)最終一定能夠達(dá)到一致的狀態(tài),因此所有客戶端對系統(tǒng)的數(shù)據(jù)訪問都能夠胡渠道最新的值。同時,在沒有發(fā)生故障的前提下,數(shù)據(jù)達(dá)到一致狀態(tài)的時間延遲,取決于網(wǎng)絡(luò)延遲,系統(tǒng)負(fù)載和數(shù)據(jù)復(fù)制方案設(shè)計等因素。

在實際工程實踐中,最終一致性存在以下五類主要變種。

因果一致性:

        因果一致性是指,如果進(jìn)程A在更新完某個數(shù)據(jù)項后通知了進(jìn)程B,那么進(jìn)程B之后對該數(shù)據(jù)項的訪問都應(yīng)該能夠獲取到進(jìn)程A更新后的最新值,并且如果進(jìn)程B要對該數(shù)據(jù)項進(jìn)行更新操作的話,務(wù)必基于進(jìn)程A更新后的最新值,即不能發(fā)生丟失更新情況。與此同時,與進(jìn)程A無因果關(guān)系的進(jìn)程C的數(shù)據(jù)訪問則沒有這樣的限制。

讀己之所寫:

        讀己之所寫是指,進(jìn)程A更新一個數(shù)據(jù)項之后,它自己總是能夠訪問到更新過的最新值,而不會看到舊值。也就是說,對于單個數(shù)據(jù)獲取者而言,其讀取到的數(shù)據(jù)一定不會比自己上次寫入的值舊。因此,讀己之所寫也可以看作是一種特殊的因果一致性。

會話一致性:

        會話一致性將對系統(tǒng)數(shù)據(jù)的訪問過程框定在了一個會話當(dāng)中:系統(tǒng)能保證在同一個有效的會話中實現(xiàn)“讀己之所寫”的一致性,也就是說,執(zhí)行更新操作之后,客戶端能夠在同一個會話中始終讀取到該數(shù)據(jù)項的最新值。

單調(diào)讀一致性:

        單調(diào)讀一致性是指如果一個進(jìn)程從系統(tǒng)中讀取出一個數(shù)據(jù)項的某個值后,那么系統(tǒng)對于該進(jìn)程后續(xù)的任何數(shù)據(jù)訪問都不應(yīng)該返回更舊的值。

單調(diào)寫一致性:

         單調(diào)寫一致性是指,一個系統(tǒng)需要能夠保證來自同一個進(jìn)程的寫操作被順序地執(zhí)行。

以上就是最終一致性的五類常見的變種,在時間系統(tǒng)實踐中,可以將其中的若干個變種互相結(jié)合起來,以構(gòu)建一個具有最終一致性的分布式系統(tǒng)。事實上,可以將其中的若干個變種相互結(jié)合起來,以構(gòu)建一個具有最終一致性特性的分布式系統(tǒng)。事實上,最終一致性并不是只有那些大型分布式系統(tǒng)才設(shè)計的特性,許多現(xiàn)代的關(guān)系型數(shù)據(jù)庫都采用了最終一致性模型。在現(xiàn)代關(guān)系型數(shù)據(jù)庫中,大多都會采用同步和異步方式來實現(xiàn)主備數(shù)據(jù)復(fù)制技術(shù)。在同步方式中,數(shù)據(jù)的復(fù)制國恥鞥通常是更新事務(wù)的一部分,因此在事務(wù)完成后,主備數(shù)據(jù)庫的數(shù)據(jù)就會達(dá)到一致。而在異步方式中,備庫的更新往往存在延時,這取決于事務(wù)日志在主備數(shù)據(jù)庫之間傳輸?shù)臅r間長短,如果傳輸時間過長或者甚至在日志傳輸過程中出現(xiàn)異常導(dǎo)致無法及時將事務(wù)應(yīng)用到備庫上,那么狠顯然,從備庫中讀取的的數(shù)據(jù)將是舊的,因此就出現(xiàn)了不一致的情況。當(dāng)然,無論是采用多次重試還是認(rèn)為數(shù)據(jù)訂正,關(guān)系型數(shù)據(jù)庫還是能搞保證最終數(shù)據(jù)達(dá)到一致——這就是系統(tǒng)提供最終一致性保證的經(jīng)典案例。

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

小結(jié):

計算機(jī)系統(tǒng)從集中式向分布式的變革隨著包括分布式網(wǎng)絡(luò)、分布式事務(wù)和分布式數(shù)據(jù)一致性等在內(nèi)的一系列問題與挑戰(zhàn),同時也催生了一大批諸如ACID、CAP和BASE等經(jīng)典理論的快速發(fā)展。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
分布式架構(gòu)原理解析
微服務(wù)架構(gòu)下處理分布式事務(wù),你必須知道的事兒
分布式系統(tǒng)一、基礎(chǔ)原理
高并發(fā)架構(gòu)系列:詳解分布式一致性ACID、CAP、BASE,以及區(qū)別
Java微服務(wù)下的分布式事務(wù)介紹及其解決方案
分布式部署
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服