国产精品区一区二区三|亚洲精品国产第一综合99久久|亚洲乱理伦片在线看中字|强被迫伦姧在线观看无码a片|一级做a爰全过程免费视频毛片|国产亚洲精品自在久久77

靠譜 的軟件外包伙伴

您的位置:首頁(yè)>關(guān)于我們>新聞動(dòng)態(tài)

原生分布式數據庫與中間件的區別

2019-04-26

互聯(lián)網(wǎng)和移動(dòng)應用的普及讓人們使用信息服務(wù)越來(lái)越方便,也使各類(lèi)信息系統面臨著(zhù)越來(lái)越大的數據規模和訪(fǎng)問(wèn)請求的壓力。隨著(zhù)分布式數據庫在互聯(lián)網(wǎng)行業(yè)的廣泛應用,通過(guò)分布式數據庫來(lái)擴展信息系統的處理能力,成為近年來(lái)服務(wù)提供商的一種普遍選擇。目前,分布式數據庫解決方案已經(jīng)呈現百花齊放的態(tài)勢,如何選擇合適的分布式數據庫又成為困擾決策者的一個(gè)問(wèn)題。
大勢所趨

從技術(shù)角度來(lái)看,分布式數據庫解決方案大致可以分為兩大類(lèi),即分布式數據庫中間件和原生分布式數據庫。分布式數據庫中間件是架構在多個(gè)傳統單點(diǎn)數據庫系統上的中間層解決方案,通過(guò)將數據分拆到不同的數據庫節點(diǎn)上,利用中間件來(lái)管理和訪(fǎng)問(wèn)各個(gè)數據庫中的數據,通常需要用戶(hù)參與到數據分拆和節點(diǎn)管理過(guò)程中。

互聯(lián)網(wǎng)行業(yè)最初所使用的分布式數據庫方案多是基于中間件的,在解決服務(wù)壓力問(wèn)題上也取得了較好的效果,但同時(shí)也暴露出不少問(wèn)題。

原生分布式數據庫是指從架構設計、底層存儲和查詢(xún)處理均面向分布式數據管理需求,數據庫集群作為一個(gè)整體對外提供服務(wù),用戶(hù)無(wú)需關(guān)注集群內部的實(shí)現細節。由于原生數據庫系統開(kāi)發(fā)的難度大,最初的版本通常功能簡(jiǎn)單,限制了其應用的場(chǎng)景。隨著(zhù)版本的不斷成熟,原生分布式數據庫已經(jīng)展現出了取代分布式數據庫中間件的趨勢。

本文將從數據可靠性、副本同步和服務(wù)可用性等幾個(gè)方面進(jìn)行分析,對比兩種方案的區別。


數據可靠性

幾乎所有的分布式數據庫解決方案都宣稱(chēng)可以在普通PC服務(wù)器集群上實(shí)現超過(guò)高端共享存儲的數據可靠性。這一點(diǎn)都是通過(guò)冗余來(lái)實(shí)現的,即將數據進(jìn)行分片,然后將每個(gè)分片復制出n個(gè)副本,并且存儲在集群中的n個(gè)不同節點(diǎn)上,當集群中宕機的節點(diǎn)數少于n時(shí),總能保證有一個(gè)副本的數據不會(huì )丟失。由于節點(diǎn)宕機等原因導致分片副本的數量少于n時(shí),需要通過(guò)將副本復制到新節點(diǎn)來(lái)保證副本數量。

在分布式數據庫中間件方案中,由于底層的每個(gè)節點(diǎn)都是一個(gè)獨立的數據庫系統,中間件很難實(shí)現分片副本在不同節點(diǎn)間的復制,因此多利用底層數據庫的主備同步機制為每個(gè)節點(diǎn)配置獨立的備份節點(diǎn)。

為了實(shí)現更好的數據可靠性,通常需要一主兩備3個(gè)副本,這樣會(huì )導致服務(wù)器利用率降低和管理的復雜性升高。對于原生分布式數據庫系統來(lái)說(shuō),系統支持數據的自動(dòng)分片,以及分片副本在集群節點(diǎn)間的自動(dòng)遷移和復制,實(shí)現負載均衡,在服務(wù)器利用率和管理復雜性上均明顯優(yōu)于中間件方案。
副本同步

多副本技術(shù)雖然保證了分布式數據庫中的數據可靠性,但同時(shí)帶來(lái)了副本同步的問(wèn)題,即如何保證數據分片不同副本的同步更新。具體實(shí)現副本同步的技術(shù)可以分為四類(lèi):

a)更新主副本,同步復制到從副本:數據副本有主從之分,所有的更新發(fā)生在主副本,當更新被同步復制到從副本后,更新完成。

b)更新主副本,異步復制到從副本:數據副本有主從之分,所有的更新發(fā)生在主副本,且即時(shí)生效,主副本的更新以異步方式復制給從副本。

c)并發(fā)更新不同副本:數據副本無(wú)主從之分,數據更新可以發(fā)生在任何副本,并且更新可以同步或異步方式復制到其它副本。

d)集中保存更新,定期合并副本:數據副本無(wú)主從之分,所有的更新被保存在集群中的特定節點(diǎn)上,定期被合并到各個(gè)副本中。

不同的原生分布式數據庫系統根據針對的應用場(chǎng)景不同,可以選擇其中的一種或多種實(shí)現技術(shù),并且技術(shù)實(shí)現的細節對用戶(hù)透明。對于分布式數據庫中間件來(lái)說(shuō),由于其數據副本是依賴(lài)于底層數據庫的主從復制機制實(shí)現的,只可能采用技術(shù)a或者b,并且用戶(hù)需要對每個(gè)節點(diǎn)的主從復制進(jìn)行配置和監控。


服務(wù)可用性

服務(wù)可用性是指集群中的任何一個(gè)或多個(gè)節點(diǎn)宕機都不會(huì )影響數據庫服務(wù)的可用性。在分布式數據庫系統中,通常都會(huì )有管理節點(diǎn)和服務(wù)節點(diǎn)兩類(lèi)角色。管理節點(diǎn)負責感知集群中各節點(diǎn)的狀態(tài),實(shí)現管理數據分布和節點(diǎn)上下線(xiàn)等功能;服務(wù)節點(diǎn)中保存數據分片副本,對外提供數據庫服務(wù)??扇萑体礄C節點(diǎn)的角色和數量是影響分布式數據庫可用性的重要因素,一般來(lái)說(shuō)管理節點(diǎn)宕機會(huì )直接影響服務(wù)可用性,而少于數據副本數量的服務(wù)節點(diǎn)宕機不會(huì )影響服務(wù)可用性。

在原生分布式數據庫系統中,管理節點(diǎn)通常是輕節點(diǎn),僅需維護數據分布等少量的元數據,通過(guò)心跳和租約機制監控集群中其它節點(diǎn)的狀態(tài)。為了避免管理節點(diǎn)宕機造成的單點(diǎn)故障,原生分布式數據庫中會(huì )部署多個(gè)管理節點(diǎn),然后采用Paxos協(xié)議來(lái)自動(dòng)選舉主管理節點(diǎn)。所有服務(wù)節點(diǎn)是對等的,通過(guò)心跳機制與主管理節點(diǎn)保持通訊,少于數據副本數量的服務(wù)節點(diǎn)宕機不會(huì )影響服務(wù)可用性。通過(guò)向主管理節點(diǎn)注冊,可以方便地添加新的節點(diǎn),從而實(shí)現良好的擴展性。

在分布式數據庫中間件方案中,中間件節點(diǎn)不僅需要維護數據分布等元數據,還需要實(shí)現查詢(xún)解析、查詢(xún)重寫(xiě)和結果聚合等功能。

近來(lái),也有一些分布式數據庫中間件開(kāi)始將管理功能和服務(wù)功能分離成單獨的管理節點(diǎn)和中間件節點(diǎn),然后采用Paxos協(xié)議來(lái)自動(dòng)選舉主管理節點(diǎn)。底層的數據庫節點(diǎn)雖然負責存儲數據,但并不能直接對外提供服務(wù),必須和中間件節點(diǎn)配合才能對外提供服務(wù)。由于底層數據庫節點(diǎn)的容災是依賴(lài)于各自的主備同步機制,因此,任何一個(gè)數據庫節點(diǎn)的主備庫同時(shí)宕機都會(huì )導致整個(gè)系統的服務(wù)不可用。

綜合來(lái)看,影響分布式數據庫中間件解決方案服務(wù)可用性的因素要比原生分布式數據庫更多并且更復雜,需要用戶(hù)花費更多的精力去配置和管理。
跨節點(diǎn)訪(fǎng)問(wèn)

將數據分片后冗余存儲于集群中的各個(gè)節點(diǎn),是分布式數據庫實(shí)現大規模數據的可靠存儲的有效手段。然而,當用戶(hù)需要在一個(gè)事務(wù)中同時(shí)訪(fǎng)問(wèn)位于不同節點(diǎn)上的數據時(shí),如何保證事務(wù)的ACID特性成為所有解決方案的共同難題。有一些分布式數據庫中間件產(chǎn)品建議用戶(hù)對數據進(jìn)行劃分,避免出現跨節點(diǎn)訪(fǎng)問(wèn)數據,從一定程度上來(lái)緩解這個(gè)難題;在無(wú)法避免跨節點(diǎn)訪(fǎng)問(wèn)數據時(shí),通過(guò)最終一致性和補償機制來(lái)解決。然而,一方面這種思路大幅度增加了用戶(hù)使用的難度,另一方面,很多場(chǎng)景下是無(wú)法應用最終一致性和補償機制的。


目前,兩階段提交協(xié)議(2PC)是公認的解決這一難題的有效手段。2PC是一種阻塞協(xié)議,即當事務(wù)處理過(guò)程中出現協(xié)調者故障時(shí),部分參與者的事務(wù)會(huì )處于未決狀態(tài),影響到所涉及數據的可用性,必須等待協(xié)調者恢復后才能解決。對于分布式數據庫中間件來(lái)說(shuō),底層的節點(diǎn)都是獨立的數據庫系統,有各自的日志系統和事務(wù)處理機制,只能在中間件節點(diǎn)上來(lái)實(shí)現2PC,其實(shí)現的難度相當于重寫(xiě)一個(gè)數據庫引擎,所實(shí)現的效率也難以與原生數據庫相媲美。因此,雖然有部分分布式數據庫中間件也提供2PC的支持,但通常不建議用戶(hù)使用或者建議用戶(hù)自行解決使用過(guò)程中的未決事務(wù)。
數據快照

分布式系統中的時(shí)間同步是一個(gè)難以解決的問(wèn)題。使用NTP協(xié)議或原子鐘對每個(gè)節點(diǎn)的時(shí)鐘進(jìn)行同步,能夠滿(mǎn)足對時(shí)效性要求不高的應用需求,但對于毫秒級的交易系統來(lái)說(shuō),所存在的誤差仍然是不可接受的。在分布式數據庫系統中,基于各節點(diǎn)的時(shí)間來(lái)獲取一個(gè)全局的數據快照是不可行的,存在著(zhù)數據不一致的風(fēng)險。通常的解決辦法是設置一個(gè)全局協(xié)調者,來(lái)為所有的事務(wù)分配全局唯一的事務(wù)號,這個(gè)事務(wù)號可以作為一個(gè)邏輯時(shí)間來(lái)使用。

對于原生分布式數據庫系統,全局唯一事務(wù)號分配機制是集成在事務(wù)處理過(guò)程中的,并沒(méi)有額外的處理開(kāi)銷(xiāo)。而對于分布式數據庫中間件來(lái)說(shuō),底層的每個(gè)數據庫節點(diǎn)都有自己獨立的事務(wù)處理機制,如果不設置全局協(xié)調者來(lái)分配全局唯一的事務(wù)號,則在不停機的狀態(tài)下用戶(hù)無(wú)法獲取統一的全局數據快照;如果設置全局協(xié)調者來(lái)分配事務(wù)號,一方面會(huì )增加額外申請事務(wù)號的開(kāi)銷(xiāo),另一方面還需要對底層數據庫節點(diǎn)的事務(wù)處理機制進(jìn)行改造,使其必須按照事務(wù)號順序執行事務(wù),這都會(huì )對極大地影響數據庫的性能。
小結

分布式數據庫中間件技術(shù)是十多年前伴隨互聯(lián)網(wǎng)應用的興起而發(fā)展起來(lái)的,幫助很多互聯(lián)網(wǎng)企業(yè)有效地解決了控制成本和應對服務(wù)壓力等問(wèn)題,也誕生了很多優(yōu)秀的中間件產(chǎn)品,但同時(shí)也暴露出對應用開(kāi)發(fā)的侵入、功能性能受限和管理運維難度大等問(wèn)題。究其原因,這類(lèi)技術(shù)是在特定的歷史時(shí)期利用現有數據庫產(chǎn)品來(lái)解決問(wèn)題的一種應用級方案,雖然其中用到了一些數據庫實(shí)現技術(shù),但本質(zhì)上并不是一個(gè)數據庫系統。原生分布式數據庫系統從誕生之初便是針對大規模數據存儲和高并發(fā)數據訪(fǎng)問(wèn)而設計的系統級解決方案,假以時(shí)日,它一定會(huì )取代中間件成為這一領(lǐng)域的主流技術(shù)。

     [返回首頁(yè)] [打印] [上一篇]   下一篇
国产精品区一区二区三|亚洲精品国产第一综合99久久|亚洲乱理伦片在线看中字|强被迫伦姧在线观看无码a片|一级做a爰全过程免费视频毛片|国产亚洲精品自在久久77