溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)分布式的簡(jiǎn)介及理論是怎樣的

發(fā)布時(shí)間:2021-11-22 17:36:03 來(lái)源:億速云 閱讀:191 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)大數(shù)據(jù)分布式的簡(jiǎn)介及理論是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

一:分布式簡(jiǎn)介

1.1:分布式系統(tǒng)概念

分布式系統(tǒng):就是將一個(gè)業(yè)務(wù)拆分為多個(gè)業(yè)務(wù),分布在不同的服務(wù)器節(jié)點(diǎn),共同構(gòu)建的系統(tǒng)叫做分布式系統(tǒng)。

分布式與集群的區(qū)別:分布式是多個(gè)人在一起做不同的事情;集群是多個(gè)人在一起做同樣的事情。

分布式系統(tǒng)的特點(diǎn):

  • 分布性

  • 對(duì)等性

  • 并發(fā)性

  • 缺乏全局時(shí)鐘

1.2:分布式系統(tǒng)的演變

1:?jiǎn)误w應(yīng)用架構(gòu)->2:應(yīng)用服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器分離->3:應(yīng)用服務(wù)器集群->4:應(yīng)用服務(wù)器負(fù)載均衡->5:數(shù)據(jù)庫(kù)讀寫分離->6:添加搜索引擎緩解數(shù)據(jù)庫(kù)壓力->7:添加緩存機(jī)制緩解數(shù)據(jù)庫(kù)壓力->8:數(shù)據(jù)庫(kù)水平拆分、垂直拆分->9:應(yīng)用拆分->10:服務(wù)化

分布式架構(gòu)演進(jìn)圖示

1.3:分布式系統(tǒng)面臨的問(wèn)題

1.3.1 通信異常

由于網(wǎng)絡(luò)本身的不可靠性,因此每次網(wǎng)絡(luò)通信都會(huì)伴隨網(wǎng)絡(luò)不可用的風(fēng)險(xiǎn),都會(huì)導(dǎo)致分布式系統(tǒng)無(wú)法順利進(jìn)行一次網(wǎng)絡(luò)通信。

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

網(wǎng)絡(luò)之間出現(xiàn)了網(wǎng)絡(luò)不連通,但各個(gè)子網(wǎng)絡(luò)的內(nèi)部網(wǎng)絡(luò)是正常的,從而導(dǎo)致整個(gè)系統(tǒng)的網(wǎng)絡(luò)環(huán)境被切分成了若干個(gè)孤立的區(qū)域,分布式系統(tǒng)就會(huì)出現(xiàn)局部小集群。

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

節(jié)點(diǎn)故障是分布式系統(tǒng)下另一個(gè)比較常見(jiàn)的問(wèn)題,指的是組成分布式系統(tǒng)的服務(wù)器節(jié)點(diǎn)出現(xiàn)的宕機(jī)或"僵死"現(xiàn)象。

1.3.4 三態(tài)(成功、失敗、超時(shí))

絕大部分情況下,網(wǎng)絡(luò)通信能夠接收到成功或失敗的響應(yīng),但當(dāng)網(wǎng)絡(luò)出現(xiàn)異常的情況下,就會(huì)出現(xiàn)超時(shí)現(xiàn)象,通常有以下兩種情況:

  • 請(qǐng)求并沒(méi)有被成功的發(fā)送到接收方,而是在發(fā)送過(guò)程就發(fā)生了丟失現(xiàn)象

  • 請(qǐng)求成功的被接收方接收后,并進(jìn)行了處理,但在響應(yīng)反饋給發(fā)送方過(guò)程中,發(fā)生了消息丟失現(xiàn)象

二:分布式理論

2.1:一致性

分布式一致性:指的是數(shù)據(jù)在多份副本中存儲(chǔ)時(shí),各個(gè)副本中的數(shù)據(jù)是一致的。
副本一致性:分布式系統(tǒng)當(dāng)中,數(shù)據(jù)往往會(huì)有多個(gè)副本,各個(gè)副本要保證數(shù)據(jù)的一致性就帶來(lái)了同步的問(wèn)題。

因此,如何既保證數(shù)據(jù)的一致性,同時(shí)又不影響系統(tǒng)運(yùn)行的性能,是每一個(gè)分布式系統(tǒng)都需要重點(diǎn)考慮和權(quán)衡的。于是,一致性級(jí)別由此誕生:

2.1.1 強(qiáng)一致性

用戶更改了什么數(shù)據(jù),讀出來(lái)就是什么數(shù)據(jù),對(duì)系統(tǒng)性能影響大。其實(shí)現(xiàn)方式常為加鎖的方式,比如節(jié)點(diǎn)一的數(shù)據(jù)被更改,給其它節(jié)點(diǎn)上的該數(shù)據(jù)加鎖,直到改變的數(shù)據(jù)同步成功再釋放鎖。

2.1.2 弱一致性

系統(tǒng)在寫入成功后,不承諾立即可以讀到寫入的值,也不承諾多久之后數(shù)據(jù)能夠達(dá)到一致,但會(huì)盡可能地保證到某個(gè)時(shí)間級(jí)別(比如秒級(jí)別)后,數(shù)據(jù)能夠達(dá)到最終一致性即可。

最終一致性:不考慮所有的中間狀態(tài)的影響,只保證當(dāng)沒(méi)有新的更新之后,經(jīng)過(guò)一段時(shí)間之后,最終系統(tǒng)內(nèi)所有副本的數(shù)據(jù)是正確的。
例子:比如銀行轉(zhuǎn)賬,A扣了錢后,經(jīng)過(guò)很長(zhǎng)時(shí)間,B收到錢。只要最終的狀態(tài)是正確的就行,其它方面可以降低要求。

最終一致性根據(jù)更新數(shù)據(jù)后各進(jìn)程訪問(wèn)到數(shù)據(jù)的時(shí)間和方式的不同包含下面的幾種方式:

1) 讀寫一致性

讀寫一致性:用戶讀取自己寫入結(jié)果的一致性,保證用戶永遠(yuǎn)能夠第一時(shí)間看到自己更新的內(nèi)容。
例子:比如我們發(fā)一條朋友圈,朋友圈的內(nèi)容是不是第一時(shí)間被朋友看見(jiàn)不重要,但是一定要顯示在自己的列表上.
解決方案:

  1. 一些特定的內(nèi)容我們每次都去主庫(kù)讀取。(主庫(kù)壓力大)

  2. 設(shè)置一個(gè)更新時(shí)間窗口,在剛剛更新的一段時(shí)間內(nèi),我們默認(rèn)都從主庫(kù)讀取,過(guò)了這個(gè)窗口之后,再挑選最近有過(guò)更新的從庫(kù)進(jìn)行讀取

  3. 直接記錄用戶更新的時(shí)間戳,在請(qǐng)求的時(shí)候把這個(gè)時(shí)間戳帶上,凡是最后更新時(shí)間小于這個(gè)時(shí)間戳的從庫(kù)都不予以響應(yīng)。

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

單調(diào)讀一致性:本次讀到的數(shù)據(jù)不能比上次讀到的舊。由于主從節(jié)點(diǎn)更新數(shù)據(jù)的時(shí)間不一致,導(dǎo)致用戶在不停地刷新的時(shí)候,有時(shí)候能刷出來(lái)(請(qǐng)求到已經(jīng)同步了的節(jié)點(diǎn)),再次刷新之后會(huì)發(fā)現(xiàn)數(shù)據(jù)不見(jiàn)了(又請(qǐng)求到了還未同步的節(jié)點(diǎn)),再刷新又可能再刷出來(lái),就好像遇見(jiàn)靈異事件一樣。

解決方案:就是根據(jù)用戶ID計(jì)算一個(gè)hash值,再通過(guò)hash值映射到機(jī)器。同一個(gè)用戶不管怎么刷新,都只會(huì)被映射到同一臺(tái)機(jī)器上。

3) 因果一致性

指的是:如果節(jié)點(diǎn) A 在更新完某個(gè)數(shù)據(jù)后通知了節(jié)點(diǎn) B,那么節(jié)點(diǎn) B 之后對(duì)該數(shù)據(jù)的訪問(wèn)和修改都是基于 A 更新后 的值。同時(shí),和節(jié)點(diǎn) A 無(wú)因果關(guān)系的節(jié)點(diǎn) C 的數(shù)據(jù)訪問(wèn)則沒(méi)有這樣的限制。

2.2:CAP理論

CAP 理論含義是,一個(gè)分布式系統(tǒng)不可能同時(shí)滿足一致性(C:Consistency),可用性(A: Availability)和分區(qū)容錯(cuò) 性(P:Partition tolerance)這三個(gè)基本需求,最多只能同時(shí)滿足其中的2個(gè)。

  • C 一致性:分布式系統(tǒng)中所有的節(jié)點(diǎn)(或副本)數(shù)據(jù)一致(這里的一致性指的是強(qiáng)一致性)

目標(biāo):若數(shù)據(jù)寫入主數(shù)據(jù)庫(kù)成功, 則從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)也成功,若數(shù)據(jù)寫入主數(shù)據(jù)庫(kù)失敗,則向從數(shù)據(jù)庫(kù)查詢也失敗
實(shí)現(xiàn):主數(shù)據(jù)庫(kù)寫入數(shù)據(jù)后對(duì)從數(shù)據(jù)庫(kù)加鎖,直到從數(shù)據(jù)庫(kù)同步成功再釋放鎖
分布式一致性的特點(diǎn):

  1. 寫操作會(huì)有一定的延遲,因?yàn)榇嬖跀?shù)據(jù)同步的過(guò)程

  2. 同步過(guò)程中會(huì)對(duì)資源暫時(shí)鎖定

  3. 若數(shù)據(jù)同步失敗,請(qǐng)求這個(gè)數(shù)據(jù)會(huì)返回失敗信息,而不是舊數(shù)據(jù)

  • A 可用性:Reads and writes always succeed. 系統(tǒng)一直可用

目標(biāo):立即響應(yīng)數(shù)據(jù)庫(kù)查詢請(qǐng)求(不考慮同步),不能出現(xiàn)響應(yīng)超時(shí)或錯(cuò)誤。
實(shí)現(xiàn):寫入數(shù)據(jù)到主數(shù)據(jù)庫(kù)后,不考慮從數(shù)據(jù)庫(kù)的數(shù)據(jù)是否已經(jīng)同步了,在讀取從數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí)直接返回?cái)?shù)據(jù)即可,即使數(shù)據(jù)是舊數(shù)據(jù)也行。

  • P 分區(qū)容錯(cuò)性:在系統(tǒng)節(jié)點(diǎn)或網(wǎng)絡(luò)分區(qū)故障時(shí),仍然能夠提供滿足一致性和可用性的服務(wù)

目標(biāo):主數(shù)據(jù)庫(kù)同步數(shù)據(jù)到從數(shù)據(jù)庫(kù)即使失敗,也不能影響寫操作;其中一個(gè)節(jié)點(diǎn)掛掉不會(huì)影響另一個(gè)節(jié)點(diǎn)提供服務(wù)。

Partition tolerance(分區(qū)容錯(cuò)性)的實(shí)現(xiàn):

  1. 使用異步的方式將主數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)

  2. 添加數(shù)據(jù)庫(kù)節(jié)點(diǎn),當(dāng)中間的一個(gè)從節(jié)點(diǎn)掛掉時(shí),由另一個(gè)從節(jié)點(diǎn)提供服務(wù)

2.2.1 CAP只能滿足其中二種

  1. 舍棄A,瞞足CP(一致性和容錯(cuò)性)
    一個(gè)系統(tǒng)保證了一致性和分區(qū)容錯(cuò)性,舍棄可用性。也就是說(shuō)在極端情況下,允許出現(xiàn)系統(tǒng)無(wú)法訪問(wèn)的情況出現(xiàn),這個(gè) 時(shí)候往往會(huì)犧牲用戶體驗(yàn),讓用戶保持等待,一直到系統(tǒng)數(shù)據(jù)一致了之后,再恢復(fù)服務(wù)。

  2. 舍棄C,滿足AP(可用性及容錯(cuò)性)
    大部分的分布式系統(tǒng)的設(shè)計(jì),保證高可用和分區(qū)容錯(cuò),但是會(huì)犧牲一致性。

  3. 舍棄P,滿足CA(一致性及可用性)
    如果要舍棄P,那么就是要舍棄分布式系統(tǒng),CAP也就無(wú)從談起了,回到了傳統(tǒng)的單機(jī)服務(wù)了。

2.3:BASE理論

BASE理論:全稱:Basically Available(基本可用),Soft state(軟狀態(tài)),和 Eventually consistent(最終一致性)三個(gè) 短語(yǔ)的縮寫;是對(duì)CAP理論的一個(gè)協(xié)調(diào),對(duì)CAP理論中一致性及可用性權(quán)衡的結(jié)果,讓CAP三種條件都達(dá)到不錯(cuò)的效果,而不用必須三選二。

BASE理論的意義在于:我們不必在A或C中做出選擇,可以實(shí)現(xiàn)部分的A和C,是對(duì) CAP 中 AP 的一個(gè)擴(kuò)展。

BASE理論的核心思想是:即使無(wú)法做到強(qiáng)一致性,但每個(gè)應(yīng)用都可以根據(jù)自身業(yè)務(wù)特點(diǎn),采用適當(dāng)?shù)姆绞絹?lái)使系統(tǒng)達(dá)到最終一致性

  • Basically Available(基本可用)
    當(dāng)分布式系統(tǒng)在出現(xiàn)不可預(yù)知故障的時(shí)候,允許損失部分可用性——但不等價(jià)于系統(tǒng)完全不可用。
    例如:出現(xiàn)故障時(shí),使用搜索功能響應(yīng)時(shí)間可以適當(dāng)增加一二秒;雙十一時(shí),為了保護(hù)系統(tǒng)穩(wěn)定性,會(huì)引導(dǎo)部分用戶到一個(gè)降級(jí)頁(yè)面。

  • Soft state(軟狀態(tài))
    軟狀態(tài):允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認(rèn)為該狀態(tài)不影響系統(tǒng)的整體可用性,即允許系統(tǒng)在多個(gè)不同節(jié)點(diǎn)的數(shù)據(jù)副本之間進(jìn)行數(shù)據(jù)同步的過(guò)程中存在延遲。
    例如:外賣配送狀態(tài),對(duì)用戶來(lái)說(shuō)有配送中狀態(tài)。

  • Eventually consistent(最終一致性)
    最終一致性強(qiáng)調(diào)的是系統(tǒng)中所有的數(shù)據(jù)副本,在經(jīng)過(guò)一段時(shí)間的同步后,最終能夠達(dá)到一個(gè)一致的狀態(tài)。而不需要實(shí)時(shí)保證系統(tǒng)數(shù)據(jù)的強(qiáng)一致性。 例如:轉(zhuǎn)賬不會(huì)立即到賬,會(huì)經(jīng)過(guò)一段時(shí)間后數(shù)據(jù)同步成功,但最終一定會(huì)成功。

關(guān)于大數(shù)據(jù)分布式的簡(jiǎn)介及理論是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI