溫馨提示×

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

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

如何理解數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?

發(fā)布時(shí)間:2021-11-29 09:59:41 來(lái)源:億速云 閱讀:121 作者:柒染 欄目:數(shù)據(jù)庫(kù)

如何理解數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

RD:數(shù)據(jù)量太大,數(shù)據(jù)庫(kù)扛不住了,幫忙申請(qǐng)一個(gè)從庫(kù),讀寫分離。

DBA:數(shù)據(jù)量多少?

RD:5000w左右。

DBA:讀寫吞吐量呢?

RD:讀QPS約200,寫QPS約30左右。

額,數(shù)據(jù)庫(kù)讀寫分離雖然不難,但并不是所有的“數(shù)據(jù)庫(kù)扛不住”的場(chǎng)景,都應(yīng)該用讀寫分離。今天花1分鐘簡(jiǎn)單介紹下這個(gè)場(chǎng)景。

什么是數(shù)據(jù)庫(kù)讀寫分離?

如何理解數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?

一主多從,讀寫分離,主動(dòng)同步,是一種常見的數(shù)據(jù)庫(kù)架構(gòu),一般來(lái)說(shuō):

  • 主庫(kù),提供數(shù)據(jù)庫(kù)寫服務(wù)

  • 從庫(kù),提供數(shù)據(jù)庫(kù)讀服務(wù)

  • 主從之間,通過(guò)某種機(jī)制同步數(shù)據(jù),例如mysql的binlog

一個(gè)組從同步集群通常稱為一個(gè)“分組”。

分組架構(gòu)究竟解決什么問(wèn)題?

大部分互聯(lián)網(wǎng)業(yè)務(wù)讀多寫少,數(shù)據(jù)庫(kù)的讀往往最先成為性能瓶頸,如果希望:

  • 線性提升數(shù)據(jù)庫(kù)讀性能

  • 通過(guò)消除讀寫鎖沖突提升數(shù)據(jù)庫(kù)寫性能

此時(shí)可以使用分組架構(gòu)。

一句話,分組主要解決“數(shù)據(jù)庫(kù)讀性能瓶頸”問(wèn)題,在數(shù)據(jù)庫(kù)扛不住讀的時(shí)候,通常讀寫分離,通過(guò)增加從庫(kù)線性提升系統(tǒng)讀性能。

什么是數(shù)據(jù)庫(kù)水平切分?

如何理解數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?

水平切分,也是一種常見的數(shù)據(jù)庫(kù)架構(gòu),一般來(lái)說(shuō):

  • 每個(gè)數(shù)據(jù)庫(kù)之間沒有數(shù)據(jù)重合,沒有類似binlog同步的關(guān)聯(lián)

  • 所有數(shù)據(jù)并集,組成全部數(shù)據(jù)

  • 會(huì)用算法,來(lái)完成數(shù)據(jù)分割,例如“取?!?/p>

一個(gè)水平切分集群中的每一個(gè)數(shù)據(jù)庫(kù),通常稱為一個(gè)“分片”。

水平切分架構(gòu)究竟解決什么問(wèn)題?

大部分互聯(lián)網(wǎng)業(yè)務(wù)數(shù)據(jù)量很大,單庫(kù)容量容易成為瓶頸,如果希望:

  • 線性降低單庫(kù)數(shù)據(jù)容量

  • 線性提升數(shù)據(jù)庫(kù)寫性能

此時(shí)可以使用水平切分架構(gòu)。

一句話總結(jié),水平切分主要解決“數(shù)據(jù)庫(kù)數(shù)據(jù)量大”問(wèn)題,在數(shù)據(jù)庫(kù)容量扛不住的時(shí)候,通常水平切分。

我為什么不喜歡讀寫分離?

對(duì)于互聯(lián)網(wǎng)大數(shù)據(jù)量,高并發(fā)量,高可用要求高,一致性要求高,前端面向用戶的業(yè)務(wù)場(chǎng)景,如果數(shù)據(jù)庫(kù)讀寫分離:

  • 數(shù)據(jù)庫(kù)連接池需要區(qū)分:讀連接池,寫連接池

  • 如果要保證讀高可用,讀連接池要實(shí)現(xiàn)故障自動(dòng)轉(zhuǎn)移

  • 有潛在的主庫(kù)從庫(kù)一致性問(wèn)題

  • 如何理解數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?

  • 如果面臨的是“讀性能瓶頸”問(wèn)題,增加緩存可能來(lái)得更直接,更容易一點(diǎn)

  • 關(guān)于成本,從庫(kù)的成本比緩存高不少

  • 對(duì)于云上的架構(gòu),以阿里云為例,主庫(kù)提供高可用服務(wù),從庫(kù)不提供高可用服務(wù)

所以,上述業(yè)務(wù)場(chǎng)景下,建議使用緩存架構(gòu)來(lái)加強(qiáng)系統(tǒng)讀性能,替代數(shù)據(jù)庫(kù)主從分離架構(gòu)。

當(dāng)然,使用緩存架構(gòu)的潛在問(wèn)題:如果緩存掛了,流量全部壓到數(shù)據(jù)庫(kù)上,數(shù)據(jù)庫(kù)會(huì)雪崩。因此,對(duì)緩存,一般也會(huì)做水平切分,確保不會(huì)同一時(shí)間全掛。

總結(jié)

  • 讀寫分離,解決“數(shù)據(jù)庫(kù)讀性能瓶頸”問(wèn)題

  • 水平切分,解決“數(shù)據(jù)庫(kù)數(shù)據(jù)量大”問(wèn)題

  • 對(duì)于互聯(lián)網(wǎng)大數(shù)據(jù)量,高并發(fā)量,高可用要求高,一致性要求高,前端面向用戶的業(yè)務(wù)場(chǎng)景,微服務(wù)緩存架構(gòu),可能比數(shù)據(jù)庫(kù)讀寫分離架構(gòu)更合適

關(guān)于如何理解數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向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