溫馨提示×

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

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

mysql是否支持分布式

發(fā)布時(shí)間:2020-05-28 17:26:16 來(lái)源:PHP中文網(wǎng) 閱讀:1068 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

下文主要給大家?guī)?lái)mysql是否支持分布式,希望這些內(nèi)容能夠帶給大家實(shí)際用處,這也是我編輯mysql是否支持分布式這篇文章的主要目的。好了,廢話不多說(shuō),大家直接看下文吧。

                                                           mysql是否支持分布式

首先數(shù)據(jù)庫(kù)是一個(gè)軟件,最基礎(chǔ)的功能就是數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)查詢。對(duì)于數(shù)據(jù)的處理方式如果通泛來(lái)說(shuō)是分為讀和寫(xiě),所以分布式方案的很多場(chǎng)景其實(shí)也是圍繞著這兩個(gè)維度來(lái)做的。

在開(kāi)始分布式方案前,要說(shuō)下為什么要有分布式方案。如果單機(jī)可以解決的事情,其實(shí)完全沒(méi)有必要去再考慮分布式了。如果要分,其實(shí)就不能再很自然的合起來(lái),這也是分布式方案里需要掌握的一個(gè)平衡。 現(xiàn)在行業(yè)里說(shuō)的HTAP方案,其實(shí)就是融合了OLTP+OLAP的場(chǎng)景,如果從單機(jī)的角度來(lái)說(shuō),Oracle肯定是最好的HTAP解決方案了。 但是oracle里面除了價(jià)格的問(wèn)題之外,還有一個(gè)問(wèn)題,那就是擴(kuò)展性,暫不說(shuō)sharding的細(xì)節(jié),Oracle里面的設(shè)計(jì)思想就是share everything,所以分區(qū)表的方案還是比較合適的。

但是MySQL顯然不行,因?yàn)槟銕缀趼?tīng)不到互聯(lián)網(wǎng)行業(yè)里在用分區(qū)表的方案,因?yàn)樵僭趺捶?,怎么擴(kuò)展,數(shù)據(jù)都是在單機(jī)上,況且單機(jī)性能還差強(qiáng)人意。 所以單機(jī)容量,單機(jī)性能都是一個(gè)瓶頸,那么就可以有兩個(gè)或者多個(gè)實(shí)例來(lái)分擔(dān)壓力。

我來(lái)簡(jiǎn)單舉個(gè)例子。從數(shù)據(jù)的處理角度來(lái)說(shuō),數(shù)據(jù)有讀寫(xiě)需求,那么我們的需求就可以分別對(duì)讀需求和寫(xiě)需求做擴(kuò)展。

讀需求的擴(kuò)展相對(duì)來(lái)說(shuō)簡(jiǎn)單一些,就是常說(shuō)的讀寫(xiě)分離了。這種一般的中間件都可以支持。

就如同下圖的方案里面的左下角所示,對(duì)讀的需求可以輕松實(shí)現(xiàn)讀擴(kuò)展,這里的讀擴(kuò)展是線性的,不是指數(shù)級(jí)的,對(duì)業(yè)務(wù)來(lái)說(shuō)是透明的。

難點(diǎn)就在于寫(xiě)擴(kuò)展了,寫(xiě)擴(kuò)展的核心是涉及到分布式事務(wù)的部分,能不拆就不拆,如果實(shí)在要拆,那么我們可以分不同的維度,比如對(duì)于流水型數(shù)據(jù),這類(lèi)數(shù)據(jù)的前后依賴度很低,所以寫(xiě)需求就是insert,寫(xiě)的需求比較單一。這種方式可以使用中間件的方案來(lái)輔助,做到sharding的分片方案。 我們通常理解的分布式方案其實(shí)很多也是在說(shuō)這個(gè)。這種方案的擴(kuò)展是指數(shù)級(jí)別的,比如2個(gè)節(jié)點(diǎn),變?yōu)?個(gè),4個(gè)變?yōu)?個(gè)等等,對(duì)業(yè)務(wù)算是透明的。

mysql是否支持分布式

但是還有一類(lèi)更為復(fù)雜的,那就是狀態(tài)型數(shù)據(jù),我們不能直接拆,或者說(shuō)直接分片,我們可以根據(jù)業(yè)務(wù)的維度來(lái)拆分,這種拆分就不建議直接使用中間件了。 比如一個(gè)業(yè)務(wù)如果拆分可以拆分為業(yè)務(wù)1,業(yè)務(wù)2,業(yè)務(wù)3。。。業(yè)務(wù)8,那么這8個(gè)業(yè)務(wù)的拆分邏輯建議不是做成hash的平滑方式,而是建議根據(jù)業(yè)務(wù)邏輯的優(yōu)先級(jí)和其他維度來(lái)組合,比如業(yè)務(wù)1的優(yōu)先級(jí)高,那么完全可以是一個(gè)獨(dú)立的節(jié)點(diǎn),業(yè)務(wù)3-業(yè)務(wù)6的數(shù)據(jù)量和優(yōu)先級(jí)不同,則完全可以是一個(gè)節(jié)點(diǎn)。數(shù)據(jù)的寫(xiě)入路由規(guī)則建議還是通過(guò)應(yīng)用層面來(lái)進(jìn)行處理。這是一種更加可控的方案。這種擴(kuò)展方案對(duì)應(yīng)用不是透明的,需要應(yīng)用的配合和處理。但是收益也顯然是最佳的平衡狀態(tài),比如游戲行業(yè)里很常見(jiàn)的游戲服概念,就是這種分法,所以擴(kuò)展起來(lái)可以是線性的。

如果要說(shuō)這個(gè)基礎(chǔ)之上的分布式方案,其實(shí)是把一套集群或者業(yè)務(wù)當(dāng)做一個(gè)透明的節(jié)點(diǎn),使用其他的輔助方案來(lái)達(dá)到擴(kuò)展的需求,基于關(guān)系型的分布式方案更多是基于靜態(tài)路由來(lái)處理,對(duì)于擴(kuò)容來(lái)說(shuō)還是需要做很多額外的工作,沒(méi)法做到平滑的彈性。這一點(diǎn)上自然是NoSQL,NewSQL的用武之地了。

所以在方案的選擇上,要有大局觀和更高的視野,不一定什么都是MySQL,Oracle,深耕下去自然是不錯(cuò)的,還可以考慮其他更好的方案。

對(duì)于以上關(guān)于mysql是否支持分布式,大家是不是覺(jué)得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。

向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