溫馨提示×

溫馨提示×

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

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

分布式數(shù)據(jù)庫中間件DDM的示例分析

發(fā)布時間:2021-12-28 16:10:09 來源:億速云 閱讀:289 作者:柒染 欄目:云計算

分布式數(shù)據(jù)庫中間件DDM的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

進(jìn)入云計算時代,傳統(tǒng)的數(shù)據(jù)庫在性能和容量等方面已無法滿足企業(yè)的要求,隨著數(shù)據(jù)量的不斷驟增,易于擴(kuò)展、拆分的數(shù)據(jù)庫解決方案對于企業(yè)的云化轉(zhuǎn)型更是顯得尤為重要。為使企業(yè)應(yīng)用上云更簡單,分布式數(shù)據(jù)庫中間件DDM(Distributed Database Middleware)專注解決企業(yè)在上云過程中面臨的的數(shù)據(jù)庫瓶頸難題,不但更能輕松滿足水平拆分、擴(kuò)容、讀寫分離等業(yè)務(wù)需求,同時也比傳統(tǒng)方案更具性價比。接下來讓我們一起零距離解密DDM。

DDM是什么?

DDM專注于解決數(shù)據(jù)庫分布式擴(kuò)展問題,它突破了傳統(tǒng)數(shù)據(jù)庫的容量和性能瓶頸,實(shí)現(xiàn)海量數(shù)據(jù)高并發(fā)訪問。DDM提供了對應(yīng)用透明的數(shù)據(jù)庫讀寫分離、自動的數(shù)據(jù)分片、靈活的彈性伸縮等分布式數(shù)據(jù)庫能力。

DDM如何定義讀寫分離?

從數(shù)據(jù)庫的角度來說,對于大多數(shù)應(yīng)用來說,從集中到分布,最基本的一個需求不是數(shù)據(jù)存儲的瓶頸,而是在于計算的瓶頸,即SQL查詢的瓶頸,在沒有讀寫分離的系統(tǒng)上,很可能高峰時段的一些復(fù)雜SQL查詢就導(dǎo)致數(shù)據(jù)庫系統(tǒng)陷入癱瘓,從保護(hù)數(shù)據(jù)庫的角度來說,我們應(yīng)該盡量避免沒有主從復(fù)制機(jī)制的單節(jié)點(diǎn)數(shù)據(jù)庫。傳統(tǒng)讀寫分離解決方案耦合應(yīng)用代碼,擴(kuò)容讀節(jié)點(diǎn)或修改讀寫分離策略等需要修改應(yīng)用代碼,升級應(yīng)用程序,非常復(fù)雜。DDM實(shí)現(xiàn)了透明讀寫分離,應(yīng)用實(shí)現(xiàn)讀寫分離不需要修改代碼,為了保證讀一致性, 默認(rèn)情況在事務(wù)中的讀全部分發(fā)到主節(jié)點(diǎn)。事務(wù)外的讀分發(fā)從節(jié)點(diǎn)。寫分發(fā)主節(jié)點(diǎn)。在應(yīng)用程序需求復(fù)雜時,DDM提供了hint可由程序自主控制sql的讀寫分離邏輯。此外,后端DB如果部分節(jié)點(diǎn)故障了,DDM會自動摘除故障節(jié)點(diǎn),自動進(jìn)行主從切換,對應(yīng)用無感知。

 分布式數(shù)據(jù)庫中間件DDM的示例分析

( 附改造前后構(gòu)架對比圖)

應(yīng)用在微服務(wù)架構(gòu)下,服務(wù)會拆分的比原來更多,與數(shù)據(jù)庫的連接數(shù)也會增加很多,這是否同樣是分布式數(shù)據(jù)庫中間件需要解決的一個重要問題?

對的。舉個栗子,比如某應(yīng)用的最大連接數(shù)是2000,未做服務(wù)化拆分前,應(yīng)用程序獨(dú)享2000個數(shù)據(jù)連接,假設(shè)拆分成100個微服務(wù),那么為了保證總的連接數(shù)不超過MySQL的最大連接數(shù),那么每個微服務(wù)能配置的最大連接數(shù)就是20.這對應(yīng)用幾乎是不可接受。市面上很多分庫分表中間件如Cobar、Atlas等,對后端MySQL的連接池管理是基于分片來實(shí)現(xiàn)的,而不具備整個MySQL實(shí)例的共享互通,抗并發(fā)能力被嚴(yán)重削弱。而DDM是真正基于MySQL實(shí)例模式實(shí)現(xiàn)的,一個MySQL實(shí)例下的所有數(shù)據(jù)庫共享一個連接池。這個對于分片來講,能避免有些庫的連接很空閑,有些庫的連接不夠用的情況,最大限度提高并行性。其中涉及到session級別的屬性由DDM自動維護(hù),應(yīng)用程序無感知。

在這種共享模式下連接數(shù)有上限嗎?

DDM的前端連接與MySQL連接對比起來相對輕量級,可以相對輕松支持上萬的連接。當(dāng)然,為了防止單個用戶濫用資源,支持設(shè)置前端最大連接數(shù)限制。

分布式數(shù)據(jù)庫中間件DDM的示例分析

( 附遷移流程圖)

 

在路由切換速度和內(nèi)容準(zhǔn)確性上DDM有哪些考慮?

關(guān)于切換路由速度,雖然業(yè)內(nèi)很多號稱毫秒級,一般是省略了數(shù)據(jù)校驗(yàn),或者只校驗(yàn)條數(shù)。號稱是算法精巧已經(jīng)測試比較充分了。DDM認(rèn)為即使測試已經(jīng)充分了也難以保證百分之一百保證不出問題。所以DDM通過設(shè)計了快速的校驗(yàn)算法,對數(shù)據(jù)的內(nèi)容進(jìn)行校驗(yàn),即使數(shù)據(jù)有一點(diǎn)點(diǎn)不一樣,算法也能校驗(yàn)出來,同時充分利用了RDS的計算能力提高校驗(yàn)的速度。

在一般的大型應(yīng)用里,有的表數(shù)據(jù)量很大,有的表數(shù)據(jù)量少且不怎么更新,DDM是如何做到不同類型場景的支持?

針對業(yè)務(wù)會遇到的實(shí)際場景,DDM設(shè)計了三種表類型:分片表:針對那些數(shù)據(jù)量很大的表,需要切分到多個分片庫的表,這樣每個分片都有一部分?jǐn)?shù)據(jù),所有分片構(gòu)成了完整的數(shù)據(jù);單表:針對數(shù)據(jù)量相對比較少,沒有和其他分片表join查詢的需求。單表數(shù)據(jù)保存在默認(rèn)當(dāng)一個分片上,這種設(shè)計可以盡量兼容單表自身的復(fù)雜查詢;全局表:針對數(shù)據(jù)量和更新都比較少,但是和其它分片表有join的需求。全局表每個分片上保存一份完全一樣的數(shù)據(jù),這樣可以解決與分片表的join直接下推到RDS上執(zhí)行。

 

在分布式條件下,原有數(shù)據(jù)庫中的主鍵約束將無法使用,是不是需要引入外部機(jī)制保證數(shù)據(jù)唯一性標(biāo)識,那么這種全局唯一序列DDM是如何保證的呢?

DDM 全局唯一序列,使用方法與 MySQL的AUTO_INCREMENT 類似。目前 DDM 可以保證該字段全局唯一和有序遞增,但不保證連續(xù)性。目前DDM設(shè)計了2種類型的序列機(jī)制,DB和TIME。DB方式的序列是指通過DB來實(shí)現(xiàn),需要注意步長的設(shè)置,步長直接關(guān)系到序列的性能,步長的大小決定了一次批量取序列的大小。TIME序列使用了時間戳加機(jī)器編號的生成方式,好處是無需通訊即可保證唯一性。

DDM在運(yùn)維監(jiān)控方面的優(yōu)勢?

DDM: 采用傳統(tǒng)中間件運(yùn)維完全需要自己運(yùn)維,一般中間件專注核心功能,較少考慮運(yùn)維和圖形化界面的操作。DDM充分利用云化的優(yōu)勢,提供了對實(shí)例、邏輯庫、邏輯表、分片算法等的全面圖形化界面操作。同時可以在線查看慢SQL等監(jiān)控內(nèi)容,方便對系統(tǒng)進(jìn)行針對性的性能調(diào)優(yōu)。

 

未來DDM會往什么方向發(fā)展?

DDM未來方向?qū)Ψ植际绞聞?wù)、分布式查詢能力增強(qiáng)、性能的優(yōu)化等,考慮到有些特性實(shí)現(xiàn)如果只從中間件層面實(shí)現(xiàn)會限制比較多。DDM會通過與數(shù)據(jù)庫底層的修改進(jìn)行配合,一起提供更優(yōu)秀的特性來滿足用戶的業(yè)務(wù)需求。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

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

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

AI