亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

沖突的處理 - 分布式數(shù)據(jù)庫(kù)相關(guān)理論 Part5

CoorChice / 2128人閱讀

摘要:沖突的處理,也是分布式系統(tǒng)中一個(gè)重要的議題。假設(shè)負(fù)責(zé)整理新聞段子有個(gè)人王尼瑪張全蛋紙巾。第二天,張全蛋復(fù)查列表,由于紙巾的更新操作并不是在他之后的而是和他同時(shí)的,這時(shí)候就產(chǎn)生了一個(gè)沖突,需要處理。

沖突的處理,也是分布式系統(tǒng)中一個(gè)重要的議題。今天我們繼續(xù)以 Riak 為案例,看看 Riak 是怎么做沖突處理的。

Vector Clock(向量鐘)

Riak 通過(guò)一種叫做 Vector Clock 的機(jī)制來(lái)處理沖突問(wèn)題。簡(jiǎn)單來(lái)說(shuō),Vector Clock 是一段 token
Riak 這樣的分布式系統(tǒng)通過(guò)這樣的 token 來(lái)追蹤數(shù)據(jù)更新操作的先后順序。

在沖突處理中,能夠知道沖突操作(eg. 創(chuàng)建操作,更改操作)的順序,是非常重要的。
因?yàn)閷?duì)于分布式系統(tǒng)來(lái)說(shuō),不同的客戶端連接到的是不同的服務(wù)器節(jié)點(diǎn),
當(dāng)一個(gè)客戶端更新了一個(gè)服務(wù)器節(jié)點(diǎn)上的數(shù)據(jù),也許另一個(gè)客戶端也同時(shí)更新了另一個(gè)服務(wù)器節(jié)點(diǎn)上的數(shù)據(jù)。

這時(shí)候,也許你會(huì)想到:記錄每個(gè)操作的時(shí)間戳,然后依照時(shí)間戳靠后的操作來(lái)。然而要這么做的話,這里有個(gè)隱含的前提:
在這個(gè)分布式系統(tǒng)中的每個(gè)服務(wù)器節(jié)點(diǎn),時(shí)鐘都必須是完全同步的。
然而事實(shí)上,一方面這是非常困難的:需要非常大的財(cái)力物力的投入;另一方面,整個(gè)系統(tǒng)又是單點(diǎn)故障的。

所以,Riak 使用 Vector Clocks 來(lái)處理沖突。Vector Clocks 給每個(gè)寫操作(創(chuàng)建,更改,刪除) 打上一個(gè)標(biāo)簽,標(biāo)簽代表了是哪個(gè)客戶端以什么樣的順序執(zhí)行的操作。
這樣一來(lái),客戶端或者開(kāi)發(fā)者就能決定面對(duì)沖突,該怎么決定。
如果你熟悉像 Git, Subversion這樣的版本控制系統(tǒng),
這就和兩個(gè)人同時(shí)修改了同一個(gè)文件產(chǎn)生的沖突解決思路是相似的。

Vector Clock 小故事 —— Vector Clock 相關(guān)理論

暴走大事件的編輯部每周都要整理下一期里要播報(bào)的新聞段子。

假設(shè)負(fù)責(zé)整理新聞段子有3個(gè)人:王尼瑪(A), 張全蛋(B), 紙巾(C)。他們需要確定最終的新聞段子的列表。新聞段子的列表存儲(chǔ)在分布式的服務(wù)器中。

每個(gè)人用自己的終端連接數(shù)據(jù)庫(kù)。這些終端都有著唯一的標(biāo)識(shí),用來(lái)構(gòu)建 vector clock。下面就讓我們模擬一下,vector clock 是如何工作的。

首先,王尼瑪用自己的終端更新了列表

vclock: A[0]
value: ["news xx"]

然后,張全蛋先下載了這個(gè)列表,然后更新了這個(gè)列表

vclock: A[0], B[0]
value: ["news xx", "news xyy"]

張全蛋更新的同時(shí)(王尼瑪做更新之后),紙巾同樣的下載了已有的列表,做了更新。

vclock: A[0], C[0]
value: ["news xx", "news yyz"]

第二天,張全蛋復(fù)查列表,由于紙巾的更新操作并不是在他之后的(而是和他同時(shí)的),
這時(shí)候就產(chǎn)生了一個(gè)沖突,需要處理。

他拿到兩個(gè)值:

vclock: A[0], B[0]
value: ["news xx", "news xyy"]
--
vclock: A[0], C[0]
value: ["news xx", "news yyz"]

他需要解決這個(gè)沖突:于是他選擇合并這兩個(gè)值:

vclock: A[0], C[0], B[1]
value: ["news xx", "news xyy", "news yyz"]

這樣一來(lái),任何人之后獲取到的就是這個(gè)最新的合并后的值了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/17457.html

相關(guān)文章

  • VUE - MVVM - part5 - Observe

    摘要:具體代碼執(zhí)行方式進(jìn)入到的目錄下,命令行運(yùn)行即可。確保為一個(gè)對(duì)象如果對(duì)象下有則不需要再次生成函數(shù)返回該對(duì)象的實(shí)例,這里判斷了如果該對(duì)象下已經(jīng)有實(shí)例,則直接返回,不再去生產(chǎn)實(shí)例。這就確保了一個(gè)對(duì)象下的實(shí)例僅被實(shí)例化一次。 看這篇之前,如果沒(méi)有看過(guò)之前的文章,可拉到文章末尾查看之前的文章。 回顧 在 step4 中,我們大致實(shí)現(xiàn)了一個(gè) MVVM 的框架,由3個(gè)部分組成: defineRe...

    xi4oh4o 評(píng)論0 收藏0
  • 【超越白皮書3】DAG技術(shù)解析與實(shí)測(cè)

    摘要:有向無(wú)環(huán)圖,以下簡(jiǎn)稱是其中的代表之一。的去中心化和可擴(kuò)展性可認(rèn)為是一體兩面的,因?yàn)榛跀?shù)據(jù)結(jié)構(gòu)帶來(lái)的異步記賬特性,同時(shí)實(shí)現(xiàn)了高度的參與網(wǎng)絡(luò)節(jié)點(diǎn)的去中心化和交易的可擴(kuò)展性。因此,目前對(duì)于雙花問(wèn)題,需要綜合考慮實(shí)際情況進(jìn)行設(shè)計(jì)。 本報(bào)告由火幣區(qū)塊鏈研究院出品,作者:袁煜明、胡智威。原文地址 相關(guān)報(bào)告: 【超越白皮書2】EOS主網(wǎng)上線前夕的實(shí)測(cè)分析與技術(shù)建議 【超越白皮書1】EOSIO程序?qū)?..

    caikeal 評(píng)論0 收藏0
  • 用PHP寫一個(gè)最簡(jiǎn)單解釋器Part5(計(jì)算器最后一節(jié),下節(jié)開(kāi)始如何寫個(gè)腳本語(yǔ)言)

    摘要:經(jīng)過(guò)幾天的努力,用已經(jīng)實(shí)現(xiàn)了一個(gè)完整的基礎(chǔ)計(jì)算器,如下圖上代碼定義整數(shù)類型描述定義操作符號(hào)類型描述加法定義操作符號(hào)類型描述減法定義操作符號(hào)類型描述乘法定義操作符號(hào)類型描述除法定義操作符號(hào)類型描述定義操作符號(hào)類型描述定義空格用來(lái)存儲(chǔ)輸入字符的 showImg(https://segmentfault.com/img/bVbdNO5?w=900&h=377); 經(jīng)過(guò)幾天的努力,用PHP已經(jīng)...

    yanest 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<