免费国产美女一级A作爱播放免费,日本动漫精品一区二区三区,ⅩⅩ国产全无遮挡无码,国产精品无码视频2020

  • <delect id="1z9bx"><center id="1z9bx"><ruby id="1z9bx"></ruby></center></delect>

      1. <u id="1z9bx"><sub id="1z9bx"></sub></u>

      2. 分布式數(shù)據(jù)庫(kù) sql(分布式數(shù)據(jù)庫(kù)sqlserver)

        發(fā)布時(shí)間:2024-03-02
        本文主要介紹分布式數(shù)據(jù)庫(kù)sql(分布式數(shù)據(jù)庫(kù)sqlserver),下面一起看看分布式數(shù)據(jù)庫(kù)sql(分布式數(shù)據(jù)庫(kù)sqlserver)相關(guān)資訊。
        盡管nosql運(yùn)動(dòng)沒(méi)有給分布式數(shù)據(jù)處理帶來(lái)根本性的技術(shù)變革,但它也導(dǎo)致了對(duì)各種協(xié)議和算法的鋪天蓋地的研究和實(shí)踐。在本文中,我將對(duì)nosql數(shù)據(jù)庫(kù)的分布式特征進(jìn)行系統(tǒng)的描述。系統(tǒng)的可擴(kuò)展性是推動(dòng)nosql運(yùn)動(dòng)發(fā)展的主要原因,包括分布式系統(tǒng)的協(xié)調(diào)、故障轉(zhuǎn)移、資源管理等諸多特性。這讓nosql聽(tīng)起來(lái)像一個(gè)大籃子,一切都可以留在nosql運(yùn)動(dòng)。雖然分布式數(shù)據(jù)處理并沒(méi)有帶來(lái)根本性的技術(shù)變革,但它仍然會(huì)導(dǎo)致對(duì)各種協(xié)議和算法的絕大多數(shù)研究和實(shí)踐。正是通過(guò)這些努力,逐漸總結(jié)出了一些行之有效的數(shù)據(jù)庫(kù)建設(shè)方法。在本文中,我將對(duì)nosql數(shù)據(jù)庫(kù)的分布式特征進(jìn)行系統(tǒng)的描述。接下來(lái),我們將研究一些分布式策略,如故障檢測(cè)中的復(fù)制。這些策略用粗體字標(biāo)出,分為三段:1。數(shù)據(jù)一致性. nosql需要分布式系統(tǒng)的一致性、容錯(cuò)性和性能、低延遲和高可用性的平衡。一般來(lái)說(shuō),數(shù)據(jù)一致性是一個(gè)必要的選項(xiàng),所以這一節(jié)主要是關(guān)于數(shù)據(jù)復(fù)制和數(shù)據(jù)恢復(fù)。2。數(shù)據(jù)放置。數(shù)據(jù)庫(kù)產(chǎn)品應(yīng)該能夠應(yīng)對(duì)不同的數(shù)據(jù)分布、集群拓?fù)浜陀布渲?。在本?jié)中,我們將討論如何分配和調(diào)整數(shù)據(jù)的分布,為及時(shí)解決問(wèn)題提供持續(xù)的保證,有效的查詢和保證集群中資源的均衡使用,如內(nèi)存和硬盤空間。3.對(duì)等系統(tǒng)。很多數(shù)據(jù)庫(kù)產(chǎn)品都采用了leader election等技術(shù)來(lái)實(shí)現(xiàn)強(qiáng)容錯(cuò)和數(shù)據(jù)一致性。然而,即使分布式數(shù)據(jù)庫(kù)(沒(méi)有中心)應(yīng)該遵循它們的全局狀態(tài),并檢測(cè)故障和拓?fù)渥兓?,本?jié)也將介紹幾種技術(shù)來(lái)保持系統(tǒng)的一致性。數(shù)據(jù)一致性眾所周知,分布式系統(tǒng)經(jīng)常會(huì)遇到網(wǎng)絡(luò)隔離或延遲。在這種情況下,隔離部分不可用。因此,在不犧牲一致性的情況下保持高可用性是不可能的。這一事實(shí)通常被稱為上限理論。但是,一致性在分布式系統(tǒng)中是一件非常昂貴的事情,所以我們經(jīng)常需要做出一些讓步,不僅是為了可用性,也是為了各種權(quán)衡,為了研究這些權(quán)衡,我們注意到分布式系統(tǒng)的一致性問(wèn)題是由數(shù)據(jù)隔離和復(fù)制引起的,所以我們將從復(fù)制的特性入手。可用性u(píng)3002in在網(wǎng)絡(luò)隔離的情況下,其余的仍然可以響應(yīng)讀寫請(qǐng)求。讀寫延遲,讀寫請(qǐng)求可以短時(shí)間處理。閱讀和寫作的可塑性。讀寫壓力可以通過(guò)多個(gè)節(jié)點(diǎn)來(lái)平衡。容錯(cuò)。讀寫請(qǐng)求的處理不依賴于任何特定的節(jié)點(diǎn)。數(shù)據(jù)持久性:特定條件下的節(jié)點(diǎn)故障不會(huì)導(dǎo)致數(shù)據(jù)丟失。統(tǒng)一u3002c協(xié)調(diào)的作用比以前復(fù)雜得多,所以我們需要詳細(xì)討論一些不同的觀點(diǎn)。但是我們贏了。;不涵蓋許多一致性和并發(fā)模型,因?yàn)檫@超出了本文的范圍。我只能用一些簡(jiǎn)單的功能組成一個(gè)精簡(jiǎn)的系統(tǒng)。從讀寫的角度來(lái)看,數(shù)據(jù)庫(kù)的基本目標(biāo)是使副本的收斂時(shí)間盡可能短,即向所有副本交付更新以保證最終一致性的時(shí)間。除了這種弱保證,還有一個(gè)更強(qiáng)的一致性特性:寫后寫一致性。在數(shù)據(jù)項(xiàng)x上寫的效果,在后續(xù)對(duì)x的讀操作中總能看到,讀后讀一致性。在讀取數(shù)據(jù)項(xiàng)x之后,x的后續(xù)讀取操作應(yīng)該返回與第一個(gè)返回值相同或更新的值。寫一致性。分區(qū)數(shù)據(jù)庫(kù)中經(jīng)常發(fā)生寫。數(shù)據(jù)庫(kù)應(yīng)該能夠處理這種,并確保不同的分區(qū)不會(huì)處理多個(gè)寫請(qǐng)求:原子被寫入。如果數(shù)據(jù)庫(kù)提供api,寫操作只能是單個(gè)原子賦值。避免的方法是找出每個(gè)數(shù)據(jù)的最新版本,這使得所有節(jié)點(diǎn)在更新結(jié)束時(shí)獲得相同的版本,但與更新后的順序無(wú)關(guān)。由網(wǎng)絡(luò)故障和延遲引起的節(jié)點(diǎn)的不同順序更新。數(shù)據(jù)的版本可以由用戶指定的代表通過(guò)時(shí)間戳或值來(lái)表示。這是卡桑德拉使用它的。原子化讀寫應(yīng)用的變化。有時(shí)需要讀-修改-寫順序操作,而不是單個(gè)原子寫操作。如果兩個(gè)客戶端讀取相同版本的數(shù)據(jù),并且修改后的數(shù)據(jù)被修改并寫回其中,則根據(jù)原子寫入模式,更新時(shí)間將覆蓋前一時(shí)間。在某些情況下,這種行為是不正確的(例如,兩個(gè)客戶端使用相同的新值添加一個(gè)列表值)。該數(shù)據(jù)庫(kù)至少提供了兩種解決辦法:預(yù)防。讀-修改-寫可以認(rèn)為是一個(gè)特例,所以分布式鎖,或者與paxos一致的協(xié)議可以解決這個(gè)問(wèn)題。這項(xiàng)技術(shù)支持原子讀取重寫語(yǔ)義和任意隔離級(jí)別的事務(wù)。另一種方法是避免分布式并發(fā)寫操作,寫一個(gè)特定數(shù)據(jù)項(xiàng)的節(jié)點(diǎn)(可以是全局主節(jié)點(diǎn),也可以是分區(qū)主節(jié)點(diǎn))。為了避免,數(shù)據(jù)庫(kù)必須犧牲網(wǎng)絡(luò)隔離的可用性。這種方法常用于許多系統(tǒng)中,以提供強(qiáng)一致性保證(例如,大多數(shù)關(guān)系數(shù)據(jù)庫(kù)、hbase、mondb)。檢測(cè)、數(shù)據(jù)庫(kù)跟蹤、并發(fā)更新和回滾的一個(gè)或兩個(gè)版本由客戶保留。并發(fā)更新通常與向量時(shí)鐘跟蹤(這是一種樂(lè)觀鎖定)或完整版本的版本歷史保持相關(guān)聯(lián)。采用這種方法的危險(xiǎn),伏地魔couchdb?,F(xiàn)在讓我們 讓我們仔細(xì)看看常用的復(fù)制技術(shù)和分類,并根據(jù)它們的特點(diǎn)來(lái)描述它們。第一張圖描述了不同的技術(shù)以及不同技術(shù)之間的權(quán)衡。協(xié)調(diào)系統(tǒng)的一致性、可擴(kuò)展性、可用性和延遲之間的邏輯關(guān)系。附圖詳細(xì)描述了每項(xiàng)技術(shù)。復(fù)合因子為4,讀/寫協(xié)調(diào)。服務(wù)器可以是外部客戶端或內(nèi)部代理節(jié)點(diǎn)。根據(jù)各方共識(shí),我們將采用由弱到強(qiáng)的技術(shù):在策略上,(a,反熵)一致性最弱,寫的時(shí)候會(huì)選擇任意一個(gè)節(jié)點(diǎn)更新。讀取時(shí),如果新數(shù)據(jù)沒(méi)有傳輸?shù)焦?jié)點(diǎn)并通過(guò)后臺(tái)反熵協(xié)議讀取,那么仍然讀取舊數(shù)據(jù)(反熵協(xié)議將在下一節(jié)詳細(xì)介紹):過(guò)大的傳播延遲使得使用的數(shù)據(jù)很難同步,所以典型的用法是檢測(cè)和維護(hù)的計(jì)劃輔助功能。cassandra使用一種反熵算法來(lái)調(diào)用數(shù)據(jù)庫(kù)的拓?fù)浣Y(jié)構(gòu)和各個(gè)節(jié)點(diǎn)之間的一些其他元數(shù)據(jù)信息。一致性保證弱:即使沒(méi)有失敗,也會(huì)出現(xiàn)寫和讀寫差異。網(wǎng)絡(luò)隔離下的高可用性和健壯性,異步批處理逐一替代,性能優(yōu)異。持久性很弱,因?yàn)樾聰?shù)據(jù)起初只是一個(gè)副本。(b)上述模式的一個(gè)改進(jìn)是異步向所有可用節(jié)點(diǎn)發(fā)送更新,同時(shí)任意節(jié)點(diǎn)接收到一個(gè)更新數(shù)據(jù)請(qǐng)求,也視為方向反熵。與簡(jiǎn)單的反熵相比,該方法大大提高了一致性,只犧牲了一點(diǎn)點(diǎn)性能,但形式一致性和持久性保持不變。如果由于網(wǎng)絡(luò)故障或節(jié)點(diǎn)故障而無(wú)法獲得某些節(jié)點(diǎn),更新將最終通過(guò)反熵傳播過(guò)程傳遞到該節(jié)點(diǎn)。(c)在以前的模式中,使用快速轉(zhuǎn)移技術(shù)可以更好地處理一個(gè)節(jié)點(diǎn)的操作失敗,無(wú)效節(jié)點(diǎn)的更新被記錄在一個(gè)附加的代理節(jié)點(diǎn)中,表明一旦更新被傳遞到該節(jié)點(diǎn),該特征節(jié)點(diǎn)是可用的。這提高了一致性并減少了復(fù)制時(shí)間。(d),讀寫一次,因?yàn)樵诟轮?,提示切換的節(jié)點(diǎn)也可能失效。在這種情況下,必須通過(guò)所謂的讀取修復(fù)來(lái)確保一致性,每個(gè)讀取操作都將啟動(dòng)一個(gè)異步過(guò)程,并向存儲(chǔ)數(shù)據(jù)的所有節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)摘要(如簽名或哈希)。如果發(fā)現(xiàn)各個(gè)節(jié)點(diǎn)返回的摘要不一致,那么各個(gè)節(jié)點(diǎn)的數(shù)據(jù)版本就會(huì)統(tǒng)一。我們稱之為一次性讀寫結(jié)合a、b、c、d的技術(shù)。它們不提供嚴(yán)格的一致性保證,但作為一種自帶的方法,已經(jīng)應(yīng)用到實(shí)踐中。上述策略(例如,讀取和寫入)是一種啟發(fā)式增強(qiáng),用于減少?gòu)?fù)制的收斂時(shí)間。為了保證更大的一致性,需要犧牲可用性來(lái)保證閱讀和寫作有一定的重疊。通常的做法是同時(shí)寫w份而不是一份,讀r份。首先,您可以配置寫入副本的數(shù)量w 1。其次,由于r w是綁定節(jié)點(diǎn)之間的重疊讀寫,在數(shù)據(jù)的多個(gè)副本中至少會(huì)有一個(gè)新數(shù)據(jù)被讀取(w = 2,r = 3,n = 4)。這樣,在執(zhí)行讀寫請(qǐng)求時(shí),它們可以保證一致性(讀寫用戶的一致性),但不能保證全局一致性。根據(jù)下圖的例子,r = 2,w = 2,n。= 3,因?yàn)閮蓚€(gè)寫賦值的更新是非事務(wù)。當(dāng)更新未完成時(shí),您可以讀取兩個(gè)舊值或一個(gè)新值。對(duì)于某些讀取延遲,設(shè)置不同的r和w值可以調(diào)整寫入延遲和寫入持續(xù)時(shí)間,反之亦然。如果wn/2可以確保原子讀重寫在檢測(cè)到時(shí)處于反轉(zhuǎn)模式。嚴(yán)格來(lái)說(shuō),這種模型可以容忍單個(gè)節(jié)點(diǎn)失效,但是網(wǎng)絡(luò)隔離的容錯(cuò)性不好。在實(shí)踐中,這種近似的方法經(jīng)常被用來(lái)犧牲一些一致性來(lái)提高某些場(chǎng)景的可用性。讀取數(shù)據(jù)時(shí),讀取所有副本(讀取數(shù)據(jù)或檢查匯總)可以緩解讀取一致性問(wèn)題。這確保了只要至少一個(gè)節(jié)點(diǎn)上的數(shù)據(jù)被更新,讀者就可以看到新數(shù)據(jù)。但在網(wǎng)絡(luò)隔離的情況下,這種保障就不起作用了。(g,主從)這種技術(shù)通常用于提供讀寫的連續(xù)重寫作為原子寫或檢測(cè)級(jí)別,以達(dá)到預(yù)防的級(jí)別,需要使用集中管理模式或鎖。最簡(jiǎn)單的策略是將一個(gè)主從式的特定數(shù)據(jù)項(xiàng)的路徑復(fù)制到一個(gè)中心節(jié)點(diǎn),然后順序執(zhí)行。在這種情況下,主節(jié)點(diǎn)將成為瓶頸,所以我們必須將數(shù)據(jù)劃分到獨(dú)立的部門(不同的塊,不同的主),以提供可擴(kuò)展性。(h)更新多個(gè)副本的方法可以使用事務(wù)控制技術(shù)來(lái)避免寫。著名的方法是使用兩階段提交協(xié)議。但是,兩階段提交并不完全可靠,因?yàn)槿藶楣收峡赡軙?huì)導(dǎo)致資源阻塞paxos的提交。協(xié)議是更可靠的選擇,但會(huì)損失一些性能。在此基礎(chǔ)上,下一個(gè)小步驟是在一個(gè)事務(wù)中讀取所有副本并更新副本。它提供了很強(qiáng)的容錯(cuò)能力,但是會(huì)損失一些性能和可用性。以上分析中的一些取舍需要再次強(qiáng)調(diào)。一致性和可用性,cap理論給出了嚴(yán)格的權(quán)衡,在網(wǎng)絡(luò)隔離的情況下,數(shù)據(jù)庫(kù)既可以設(shè)置數(shù)據(jù),又可以接受數(shù)據(jù)丟失的風(fēng)險(xiǎn)。一致性和可伸縮性,可以看出即使是一致的讀寫保證也會(huì)降低副本集的可伸縮性。只有在原子寫模式下,才能以相對(duì)可擴(kuò)展的處理寫。原子讀重寫模型避免了,增加了臨時(shí)全局鎖的數(shù)據(jù)量。這表明,數(shù)據(jù)或操作之間的依賴,即使在小范圍或短時(shí)間內(nèi),也會(huì)損害的可擴(kuò)展性。因此,設(shè)計(jì)良好的數(shù)據(jù)模型和單獨(dú)存儲(chǔ)的數(shù)據(jù)的可伸縮性非常重要。一致性和延遲,如上所述,當(dāng)數(shù)據(jù)庫(kù)需要提供強(qiáng)一致性或持久性時(shí),應(yīng)該偏向于讀寫所有的復(fù)制技術(shù),但明顯與請(qǐng)求延遲一致,與副本數(shù)量成反比,所以使用這種技術(shù)會(huì)是一種更客觀的衡量標(biāo)準(zhǔn)。故障轉(zhuǎn)移和一致性/可擴(kuò)展性/延遲。有趣的是,容錯(cuò)和一致,和拖延都不是暴力。通過(guò)合理地放棄一些性能和一致性性,集群可以容忍盡可能多的節(jié)點(diǎn)故障。這種折衷和paxos協(xié)議的區(qū)別是顯而易見(jiàn)的。在另一個(gè)例子中,這種折衷是添加特定的一致性保證,例如使用嚴(yán)格的會(huì)話進(jìn)程讀寫,但這增加了故障轉(zhuǎn)移的復(fù)雜性。反熵協(xié)議和謠言傳播算法let s從以下幾點(diǎn)入手:有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)有一個(gè)副本,每個(gè)節(jié)點(diǎn)可以單獨(dú)處理更新請(qǐng)求,每個(gè)節(jié)點(diǎn)定期與其他節(jié)點(diǎn)同步。在此期間,所有副本將保持一致。如何完成同步過(guò)程,何時(shí)開(kāi)始同步,如何選擇同步對(duì)象,如何交換數(shù)據(jù)。我們假設(shè)兩個(gè)節(jié)點(diǎn)總是用新版本的數(shù)據(jù)覆蓋舊數(shù)據(jù),或者保留兩個(gè)版本用于應(yīng)用層處理。這個(gè)問(wèn)題常見(jiàn)于數(shù)據(jù)一致性維護(hù)和集群狀態(tài)同步,比如集群成員信息分發(fā)。雖然該負(fù)責(zé)人介紹,監(jiān)控?cái)?shù)據(jù)庫(kù)和同步方案可以解決這個(gè)問(wèn)題,但分散數(shù)據(jù)庫(kù)可以提供更好的容錯(cuò)能力。集中的主要方法是使用設(shè)計(jì)良好的傳染協(xié)議,該協(xié)議相對(duì)簡(jiǎn)單,但它提供了良好的收斂時(shí)間,并且可以容忍任何節(jié)點(diǎn)故障和網(wǎng)絡(luò)隔離。雖然有許多感染類型的算法,但我們只關(guān)注反熵協(xié)議,因?yàn)閚osql數(shù)據(jù)庫(kù)使用它。反熵協(xié)議假設(shè)同步將根據(jù)固定的時(shí)間表來(lái)執(zhí)行。每個(gè)節(jié)點(diǎn)定期選擇另一個(gè)節(jié)點(diǎn)交換數(shù)據(jù)以消除差異。根據(jù)一定的規(guī)則,有三種反熵協(xié)議:推、拉和組合。推送協(xié)議的原理是簡(jiǎn)單地選擇一個(gè)隨機(jī)的節(jié)點(diǎn)來(lái)發(fā)送數(shù)據(jù)。這顯然是愚蠢的,把所有的數(shù)據(jù)放在實(shí)際應(yīng)用中,所以節(jié)點(diǎn)一般以如下所示的工作。作為同步發(fā)起者的節(jié)點(diǎn)準(zhǔn)備數(shù)據(jù)的摘要,該摘要被包括在a的數(shù)據(jù)指紋中。在接收到摘要之后,節(jié)點(diǎn)b將數(shù)據(jù)與本地?cái)?shù)據(jù)和作為摘要返回的數(shù)據(jù)進(jìn)行比較,返回最終的摘要,向b發(fā)送一個(gè),向b更新一個(gè),然后更新數(shù)據(jù)。拉模式和混合方法之間的協(xié)議是相似的,如上圖所示。反熵協(xié)議提供了良好的收斂時(shí)間和可擴(kuò)展性。下圖顯示了在100個(gè)節(jié)點(diǎn)的集群中傳播更新的結(jié)果。在每次迭代中,每個(gè)節(jié)點(diǎn)只與一個(gè)隨機(jī)選擇的節(jié)點(diǎn)相關(guān)聯(lián)??梢?jiàn)拉模式收斂比的推方法理論上是可以證明的,還有一個(gè)問(wèn)題,收斂到底。經(jīng)過(guò)多次迭代,雖然幾乎所有的節(jié)點(diǎn)都過(guò)去了,但仍有一些不受影響的混合方法。它比簡(jiǎn)單的推挽方法更有效,所以在實(shí)際應(yīng)用中,反熵是可擴(kuò)展的,平均轉(zhuǎn)換時(shí)間的增加是簇大小的對(duì)數(shù)函數(shù)形式。雖然這些技術(shù)看起來(lái)很簡(jiǎn)單,但仍然有許多研究專注于不同約束下的反熵協(xié)議的性能,其中使用了更有效的網(wǎng)絡(luò)拓?fù)涠皇请S機(jī)選擇。使用有限的傳輸速率調(diào)整網(wǎng)絡(luò)帶寬,或者使用高級(jí)規(guī)則選擇數(shù)據(jù)同步。匯總計(jì)算也面臨挑戰(zhàn),數(shù)據(jù)庫(kù)將保持更新。用于匯總計(jì)算的新日志。在上一節(jié)中,我們假設(shè)兩個(gè)節(jié)點(diǎn)總是合并它們的數(shù)據(jù)版本,但是解決更新并不容易,所有副本最終都能達(dá)到語(yǔ)義正確的值也就不足為奇了。讓 假設(shè)一個(gè)例子來(lái)說(shuō)明這個(gè)問(wèn)題:數(shù)據(jù)庫(kù)維護(hù)一個(gè)邏輯全局計(jì)數(shù)器,每個(gè)節(jié)點(diǎn)可以增加或減少這個(gè)數(shù)字。雖然每個(gè)節(jié)點(diǎn)都可以保持它的局部值,但是這些地方不能通過(guò)簡(jiǎn)單的加減運(yùn)算來(lái)合并。假設(shè)有三個(gè)節(jié)點(diǎn)a、b和c,每個(gè)節(jié)點(diǎn)執(zhí)行額外的操作。如果你取b的值加到本地副本,那么c得到b的值,然后c得到值,然后c的最終值是4,這是不對(duì)的。解決這個(gè)問(wèn)題的方法是使用類似于向量時(shí)鐘的數(shù)據(jù)結(jié)構(gòu)來(lái)保持每個(gè)節(jié)點(diǎn)對(duì)計(jì)數(shù)器。class inverse { int plus } int minus international node _ id increment{ node _ id plus { } } minus{ node _ id minus { } } get{ return and(sum)-and(負(fù)號(hào))} merge(counter other){我在1。max_id {plus {i max = max (plus {},其他。加{})減去最大值(減{,},再減} } } cassandra也是類似的設(shè)計(jì)。一個(gè)更復(fù)雜和最終一致的數(shù)據(jù)結(jié)構(gòu)也可以用一個(gè)狀態(tài)或基于復(fù)制理論來(lái)設(shè)計(jì)。比如提到了一系列這樣的數(shù)據(jù)結(jié)構(gòu),包括:counter(加減)set(加減運(yùn)算)graph(加一條邊)。這一部分重點(diǎn)介紹分布式數(shù)據(jù)庫(kù)中控制數(shù)據(jù)放置的算法,這些算法負(fù)責(zé)將數(shù)據(jù)項(xiàng)映射到適當(dāng)?shù)奈锢砉?jié)點(diǎn),在節(jié)點(diǎn)之間遷移數(shù)據(jù)以及全局分配資源(如內(nèi)存)。平衡數(shù)據(jù)我們通過(guò)簡(jiǎn)單的協(xié)議提供集群節(jié)點(diǎn)之間的無(wú)縫數(shù)據(jù)遷移。當(dāng)集群擴(kuò)展時(shí)(例如添加新節(jié)點(diǎn)(節(jié)點(diǎn)故障轉(zhuǎn)移)和一些停機(jī)時(shí)間)或平衡數(shù)據(jù)時(shí)(節(jié)點(diǎn)間不均勻的數(shù)據(jù)分布),通常會(huì)出現(xiàn)這種情況。場(chǎng)景描述圖1如下——三個(gè)節(jié)點(diǎn)和三個(gè)節(jié)點(diǎn)的數(shù)據(jù)是隨機(jī)分布的(假設(shè)數(shù)據(jù)是核心值)。如果數(shù)據(jù)庫(kù)不支持?jǐn)?shù)據(jù)的內(nèi)部平衡,則數(shù)據(jù)庫(kù)實(shí)例會(huì)在每個(gè)節(jié)點(diǎn)中發(fā)布,如圖b所示。這需要對(duì)停止遷移的數(shù)據(jù)庫(kù)實(shí)例進(jìn)行手動(dòng)集群擴(kuò)展,這會(huì)移動(dòng)到新節(jié)點(diǎn)并在新節(jié)點(diǎn)開(kāi)始,如圖所示。雖然數(shù)據(jù)庫(kù)監(jiān)控每一條記錄,但是包括mondb、oracle coherence、redis clust——,將鍵(通常是哈希)映射到物理節(jié)點(diǎn),鍵的哈希值空間是一個(gè)有序的定長(zhǎng)二進(jìn)制字符串。很明顯,這個(gè)范圍內(nèi)的每個(gè)鍵都會(huì)映射到圖a的一個(gè)三節(jié)點(diǎn)副本,值空間會(huì)封閉成一個(gè)環(huán),沿著環(huán)順時(shí)針?lè)较颍钡剿懈北径加成涞綄?duì)應(yīng)的節(jié)點(diǎn),如圖b所示,換句話說(shuō),你會(huì)位于節(jié)點(diǎn)b,因?yàn)樵赽的范圍內(nèi),第一個(gè)副本要放在c,第二個(gè)副本放在一,以此類推。這種結(jié)構(gòu)的優(yōu)點(diǎn)是增加或刪除一個(gè)節(jié)點(diǎn),因?yàn)樗槐3窒噜弲^(qū)域的數(shù)據(jù)平衡。如圖c所示,添加節(jié)點(diǎn)d只會(huì)影響數(shù)據(jù)項(xiàng)x和y是否受影響。同樣的,節(jié)點(diǎn)b的移除(或者b只失效)會(huì)影響y和x的副本,不會(huì)影響x本身。但這種有利有弊,即經(jīng)濟(jì)負(fù)擔(dān)由鄰居節(jié)點(diǎn)承擔(dān),會(huì)移動(dòng)大量數(shù)據(jù)。每個(gè)節(jié)點(diǎn)映射到一個(gè)范圍而不是一個(gè)范圍,這不是問(wèn)題。可以在一定程度上降低影響,如圖d所示,這是一種權(quán)衡。重新平衡數(shù)據(jù)時(shí)避免過(guò)載。但是,與基于模塊的映射相比,它適當(dāng)?shù)販p少了總體平衡的數(shù)量。維護(hù)一個(gè)完全一致的大型哈希環(huán)集群并不容易。這對(duì)于相對(duì)較小的數(shù)據(jù)庫(kù)集群來(lái)說(shuō)沒(méi)有問(wèn)題,研究如何在對(duì)等網(wǎng)絡(luò)中將數(shù)據(jù)放置與路由網(wǎng)絡(luò)結(jié)合起來(lái)是很有趣的。比較好的例子是chord算法,它使得環(huán)的完整性認(rèn)可單個(gè)節(jié)點(diǎn)的搜索效率。chord算法也采用了環(huán)映射關(guān)鍵節(jié)點(diǎn)的思想,在這方面類似于一致性哈希。不同的是,一個(gè)特定的節(jié)點(diǎn)維護(hù)一個(gè)鏈表,鏈表中節(jié)點(diǎn)和環(huán)的邏輯位置是相乘的(如下圖所示),這就使得用兩點(diǎn)搜索定位鍵w只需要很少的網(wǎng)絡(luò)跳數(shù)。這張圖片是一個(gè)由16個(gè)節(jié)點(diǎn)組成的集群,描述了節(jié)點(diǎn)a如何尋找放置在節(jié)點(diǎn)d上的密鑰..(a)描述了路由,(b)描述了節(jié)點(diǎn)a、b和c的環(huán)的部分圖像。在參考文獻(xiàn)中,有關(guān)于分布式系統(tǒng)中的數(shù)據(jù)復(fù)制的更多信息。根據(jù)多個(gè)屬性進(jìn)行數(shù)據(jù)分片當(dāng)使用哈希訪問(wèn)數(shù)據(jù)時(shí),一致的數(shù)據(jù)放置策略是有效的,但會(huì)更加復(fù)雜。當(dāng)查詢多個(gè)屬性時(shí),一個(gè)簡(jiǎn)單的方法(使用mondb)是使用主鍵分配的數(shù)據(jù),而不考慮其他屬性。結(jié)果是基于主鍵的查詢可以路由到合適的節(jié)點(diǎn),但是查詢效率的不平衡會(huì)導(dǎo)致以下問(wèn)題:有一個(gè)數(shù)據(jù)集,其中每個(gè)數(shù)據(jù)都有很多屬性和對(duì)應(yīng)的值。是否存在一種數(shù)據(jù)分布策略,允許盡可能少地執(zhí)行具有任意數(shù)量屬性的查詢,這提供了一種解決方案。其基本思想是將每個(gè)屬性視為多維空間中的一個(gè)軸和映射區(qū)域在空間中的一個(gè)物理節(jié)點(diǎn),查詢將匹配到幾個(gè)相鄰區(qū)域空間中的一個(gè)超平面,因此只有這些區(qū)域中的查詢是相關(guān)的。讓 讓我們看一下參考示例。每個(gè)數(shù)據(jù)是一個(gè)用戶 的信息,它有三個(gè)屬性,名、姓和號(hào)碼。這些屬性被視為三維空間中可行數(shù)據(jù)分布策略圖的每個(gè)象限中的一個(gè)物理節(jié)點(diǎn),查詢name = john對(duì)應(yīng)一個(gè)貫穿四個(gè)象限的平面。是的,只有四個(gè)節(jié)點(diǎn)參與查詢處理。對(duì)應(yīng)于具有兩個(gè)屬性約束的查詢的直線穿過(guò)兩個(gè)象限。如最后一幅圖所示,只有兩個(gè)節(jié)點(diǎn)將參與處理。這種方法的問(wèn)題是空間象限增加了屬性數(shù)量的指數(shù)函數(shù)。所以只有幾個(gè)屬性的查詢會(huì)被投影到很多空間區(qū)域,也就是很多服務(wù)器上,更多的屬性數(shù)據(jù)項(xiàng)會(huì)被分成幾個(gè)屬性相對(duì)較少的子項(xiàng),每個(gè)子項(xiàng)會(huì)被映射到多維空間中的一個(gè)獨(dú)立空間,而不是整個(gè)數(shù)據(jù),可以在一定程度上緩解這個(gè)問(wèn)題。這種映射可以為節(jié)點(diǎn)提供更好的查詢,但是增加了集群的協(xié)調(diào)性。因?yàn)檫@種情況下的數(shù)據(jù)會(huì)分散在幾個(gè)獨(dú)立的子空間中,每個(gè)子空間對(duì)應(yīng)幾個(gè)物理節(jié)點(diǎn),所以數(shù)據(jù)更新必須考慮問(wèn)題。鈍化副本有些應(yīng)用對(duì)隨機(jī)讀取有很強(qiáng)的需求,要求所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中。在這種情況下,通常是從節(jié)點(diǎn)從每個(gè)段復(fù)制數(shù)據(jù)兩次以上,因?yàn)槊總€(gè)數(shù)據(jù)都在主節(jié)點(diǎn)和從節(jié)點(diǎn)的一部分來(lái)代替主節(jié)點(diǎn),從節(jié)點(diǎn)的內(nèi)存大小應(yīng)該和主節(jié)點(diǎn)的一樣。如果系統(tǒng)可以容忍短期中斷或性能下降,那么當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),它也可以是不可分的。下圖描述了4個(gè)節(jié)點(diǎn)上的16個(gè)數(shù)據(jù)段,每個(gè)節(jié)點(diǎn)在內(nèi)存中都有一個(gè)部分,在硬盤上也有一個(gè)副本。灰色箭頭突出顯示了節(jié)點(diǎn)2上的分段副本。其他節(jié)點(diǎn)上的切片也會(huì)被復(fù)制。紅色箭頭描述了將副本加載到內(nèi)存中時(shí)節(jié)點(diǎn)2的故障。集群中的副本是均勻分布的,這可以將活動(dòng)副本的故障存儲(chǔ)在幾個(gè)保留內(nèi)存的節(jié)點(diǎn)中。在上圖中,集群只保留1/3的內(nèi)存,可以承受單節(jié)點(diǎn)故障。特別指出的是,復(fù)制激活(從硬盤加載到內(nèi)存)需要一定的時(shí)間,這會(huì)導(dǎo)致性能下降或短時(shí)間內(nèi)部分?jǐn)?shù)據(jù)服務(wù)中斷和恢復(fù)。系統(tǒng)協(xié)調(diào)在本節(jié)中,我們將討論這兩種技術(shù)都與系統(tǒng)協(xié)調(diào)有關(guān)。分布式協(xié)調(diào)是一個(gè)比較大的領(lǐng)域,很多人研究了幾十年。在本文中,只涉及兩種實(shí)用技術(shù)。分布式鎖、內(nèi)容一致性協(xié)議和其他基本技術(shù)可以在許多書(shū)籍或網(wǎng)絡(luò)資源中找到。故障檢測(cè)和容錯(cuò)分布式系統(tǒng)的基本功能。其實(shí)所有基于心跳故障檢測(cè)協(xié)議的通信機(jī)制原理都很簡(jiǎn)單。組件定期發(fā)送心跳監(jiān)視信息,如果在一段時(shí)間內(nèi)沒(méi)有接收到心跳信息,則監(jiān)視過(guò)程(或由監(jiān)視組件監(jiān)視的輪詢過(guò)程)被視為失敗。此外,真正的分布式系統(tǒng)還有其他一些功能需求。自適應(yīng)故障檢測(cè)應(yīng)該能夠處理臨時(shí)網(wǎng)絡(luò)故障和延遲,以及改變負(fù)載和帶寬的集群拓?fù)?。但是,這是非常困難的,因?yàn)闆](méi)有辦法知道長(zhǎng)期無(wú)響應(yīng)的過(guò)程是否是真正的失敗。因此,在故障檢測(cè)和故障識(shí)別中需要權(quán)衡的時(shí)間(確定一個(gè)真正的故障需要多長(zhǎng)時(shí)間,也就是經(jīng)過(guò)一個(gè)無(wú)響應(yīng)過(guò)程后多長(zhǎng)時(shí)間才會(huì)被認(rèn)為是故障)和誤報(bào)率的權(quán)重是權(quán)衡因素。乍一看,故障檢測(cè)只需要輸出一個(gè)指示監(jiān)控進(jìn)程是否工作的布爾值,但在實(shí)際應(yīng)用中不受e的影響。讓 讓我們看看mapreduce的參考示例。有一個(gè)分布式應(yīng)用程序,它有一個(gè)主節(jié)點(diǎn)和多個(gè)工作節(jié)點(diǎn)。主節(jié)點(diǎn)維護(hù)一個(gè)工作列表并分配工作列表中的工作節(jié)點(diǎn),主節(jié)點(diǎn)可以區(qū)分不同程度的故障。如果主節(jié)點(diǎn)懷疑工作節(jié)點(diǎn)被掛起,他不會(huì)再把工作分配給該節(jié)點(diǎn)。其次,隨著時(shí)間的推移,如果沒(méi)有收到節(jié)點(diǎn)的心跳信息,主節(jié)點(diǎn)會(huì)將工作重新分配給其他節(jié)點(diǎn)。最后,主節(jié)點(diǎn)確認(rèn)該節(jié)點(diǎn)出現(xiàn)故障,并且所有相關(guān)資源都被釋放。可擴(kuò)展性和健壯性。故障檢測(cè)作為一個(gè)系統(tǒng)的功能,應(yīng)該能夠隨著系統(tǒng)而擴(kuò)展。它應(yīng)該是強(qiáng)大的、一致的,即即使通信失敗,系統(tǒng)中的所有節(jié)點(diǎn)也應(yīng)該有一致的看法(即所有節(jié)點(diǎn)都應(yīng)該知道哪些節(jié)點(diǎn)不可用,哪些節(jié)點(diǎn)可用,不,認(rèn)知節(jié)點(diǎn)不能出現(xiàn)在節(jié)點(diǎn)a不可用的一部分節(jié)點(diǎn),而節(jié)點(diǎn)的其他部分不知道情況)。所謂累積故障檢測(cè)器可以解決第一個(gè)問(wèn)題。cassandra做了一些修改,并應(yīng)用到產(chǎn)品的基本工作過(guò)程中,具體如下:對(duì)于每個(gè)監(jiān)測(cè)資源,計(jì)算探測(cè)器記錄的心跳信息的到達(dá)時(shí)間,統(tǒng)計(jì)預(yù)測(cè)范圍內(nèi)到達(dá)時(shí)間的均值和方差。假設(shè)到達(dá)時(shí)間的分布已知(下圖包含一個(gè)正態(tài)分布的公式),我們可以計(jì)算心跳延遲的概率(當(dāng)前時(shí)間t_now的最后到達(dá)時(shí)間tc之差),用這個(gè)概率來(lái)判斷是否存在故障。對(duì)數(shù)函數(shù)可以調(diào)整以提高可用性。在這種情況下,輸出1意味著誤判(節(jié)點(diǎn)故障)的概率是10%,2是1%,以此類推。根據(jù)重要程度的不同,要按級(jí)別組織監(jiān)控區(qū)域。這個(gè)區(qū)域是謠言通信協(xié)議或中央容錯(cuò)庫(kù)的同步,可以滿足可擴(kuò)展性的要求,防止心跳信息在網(wǎng)絡(luò)中泛濫。如下圖所示,6個(gè)故障檢測(cè)器組成了兩個(gè)區(qū)域,這兩個(gè)區(qū)域通過(guò)謠言傳播協(xié)議或者像城市動(dòng)物園這樣強(qiáng)大的庫(kù)連接在一起。協(xié)調(diào)運(yùn)動(dòng)協(xié)調(diào)活動(dòng)是強(qiáng)一致性數(shù)據(jù)庫(kù)的一項(xiàng)重要技術(shù)。一種是利用主從結(jié)構(gòu)組織系統(tǒng)中主要節(jié)點(diǎn)的故障恢復(fù),另一種是在網(wǎng)絡(luò)隔離的情況下斷開(kāi)少數(shù)節(jié)點(diǎn),避免。欺負(fù)算法是一種相對(duì)簡(jiǎn)單的協(xié)調(diào)移動(dòng)算法,mondb使用這種算法來(lái)確定一個(gè)主副本集。欺負(fù)算法的主要思想是,集群中的每個(gè)成員都可以聲明自己被協(xié)調(diào)并通知其他節(jié)點(diǎn),其他節(jié)點(diǎn)可以選擇接受這個(gè)聲明或者拒絕進(jìn)入?yún)f(xié)調(diào)者的競(jìng)爭(zhēng)。節(jié)點(diǎn)的其他節(jié)點(diǎn)都可以協(xié)調(diào),節(jié)點(diǎn)判斷誰(shuí)該贏。根據(jù)某些屬性,這個(gè)屬性可以是一個(gè)靜態(tài)id,也可以是一個(gè)像上次事務(wù)id一樣的可測(cè)更新(最新的節(jié)點(diǎn)會(huì)贏)。下面的例子演示了欺負(fù)算法的執(zhí)行。使用靜態(tài)id作為度量,id較大的節(jié)點(diǎn)將勝出:在初始集群中,有5個(gè)節(jié)點(diǎn),節(jié)點(diǎn)5是公認(rèn)的協(xié)調(diào)器。假設(shè)節(jié)點(diǎn)5和節(jié)點(diǎn)2掛機(jī),三個(gè)節(jié)點(diǎn)同時(shí)被發(fā)現(xiàn)。兩個(gè)節(jié)點(diǎn)開(kāi)始發(fā)送的消息的id。選擇節(jié)點(diǎn)4、節(jié)點(diǎn)2、節(jié)點(diǎn)3,并排除節(jié)點(diǎn)2和節(jié)點(diǎn)3。此時(shí),節(jié)點(diǎn)1的節(jié)點(diǎn)5發(fā)送選舉失敗。具有較大id的所有節(jié)點(diǎn)的感知信息。節(jié)點(diǎn)2、3和4,節(jié)點(diǎn)1和節(jié)點(diǎn)4都被消除。發(fā)送選舉信息的節(jié)點(diǎn)5沒(méi)有響應(yīng),因此節(jié)點(diǎn)4宣布它當(dāng)選為宣布此消息的另一個(gè)節(jié)點(diǎn)。協(xié)調(diào)活動(dòng)中涉及的節(jié)點(diǎn)數(shù)量,確保集群中至少有一半的節(jié)點(diǎn)參與選舉。這樣就保證了網(wǎng)絡(luò)協(xié)調(diào)器選擇的網(wǎng)絡(luò)中只有一部分節(jié)點(diǎn)可以被隔離(假設(shè)網(wǎng)絡(luò)被劃分為不同的區(qū)域,這些區(qū)域互不相連,選舉結(jié)果的協(xié)調(diào)器會(huì)導(dǎo)致節(jié)點(diǎn)數(shù),課程協(xié)調(diào)器會(huì)有一個(gè)比較大的區(qū)域,前提是可用節(jié)點(diǎn)的面積是集群中原來(lái)節(jié)點(diǎn)數(shù)的一半。如果集群被分成幾個(gè)塊,則不能選擇具有更大節(jié)點(diǎn)總數(shù)的節(jié)點(diǎn)協(xié)調(diào)器。當(dāng)然,預(yù)計(jì)在這種情況下,集群可以繼續(xù)提供服務(wù)。
        了解更多分布式數(shù)據(jù)庫(kù)sql(分布式數(shù)據(jù)庫(kù)sqlserver)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。
        上一個(gè):喝普洱茶時(shí)可以同時(shí)喝其他的茶嗎?
        下一個(gè):指定監(jiān)護(hù)人的條件是什么

        聚眾擾亂交通秩序罪的主體與客體?
        CPEV-S-對(duì)絞通信電纜RS485雙絞屏蔽電纜
        石竹草石竹繁殖方法
        公司可以不設(shè)立法人嗎
        分枝級(jí)數(shù)
        玩忽職守犯罪中的職責(zé)如何確定
        黑松苗木培育灌溉技術(shù)
        檸檬的作用
        內(nèi)蒙古web云服務(wù)器
        高利貸公司上班違法嗎