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

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供秦安網(wǎng)站建設(shè)、秦安做網(wǎng)站、秦安網(wǎng)站設(shè)計(jì)、秦安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、秦安企業(yè)網(wǎng)站模板建站服務(wù),十多年秦安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
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ù)讀寫分離?
一主多從,讀寫分離,主動(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),一般來(lái)說(shuō):
- 每個(gè)數(shù)據(jù)庫(kù)之間沒(méi)有數(shù)據(jù)重合,沒(méi)有類似binlog同步的關(guān)聯(lián)
- 所有數(shù)據(jù)并集,組成全部數(shù)據(jù)
- 會(huì)用算法,來(lái)完成數(shù)據(jù)分割,例如“取?!?/li>
一個(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)題
- 如果面臨的是“讀性能瓶頸”問(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)更合適
【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】
戳這里,看該作者更多好文
網(wǎng)站名稱:1分鐘,啥是數(shù)據(jù)庫(kù)讀寫分離架構(gòu)?
文章來(lái)源:http://m.fisionsoft.com.cn/article/ccejhpg.html


咨詢
建站咨詢
