自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)庫(kù)讀寫分離架構(gòu),為什么我不喜歡

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

RD:?jiǎn)螏?kù)數(shù)據(jù)量太大,數(shù)據(jù)庫(kù)扛不住了,我要申請(qǐng)一個(gè)數(shù)據(jù)庫(kù)從庫(kù),讀寫分離。

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

RD:5000w左右。

DBA:讀寫吞吐量呢?

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

上周在公司聽到兩個(gè)技術(shù)同學(xué)討論,感覺對(duì)讀寫分離解決什么問(wèn)題沒(méi)有弄清楚,有些奔潰。

另外,對(duì)于互聯(lián)網(wǎng)某些業(yè)務(wù)場(chǎng)景,并不是很喜歡數(shù)據(jù)庫(kù)讀寫分離架構(gòu),一些淺見見文末。

一、讀寫分離

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

數(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è)“分組”。

2. 分組架構(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)讀性能。

二、水平切分

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

數(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ù)分割,例如“取模”

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

2. 水平切分架構(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ì)雪崩。不過(guò)幸好,云上的緩存一般都提供高可用的服務(wù)。

四、總結(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)更合適

你有沒(méi)有用讀寫分離,你的思考是什么呢?

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2018-01-09 18:46:44

數(shù)據(jù)庫(kù)架構(gòu)讀寫分離

2020-07-28 10:45:51

數(shù)據(jù)庫(kù)三范式MySQL

2015-10-26 09:58:53

程序員主流

2018-10-16 16:45:05

數(shù)據(jù)庫(kù)讀寫分離

2012-04-04 22:07:12

Android

2022-06-04 15:28:42

微服務(wù)架構(gòu)編程語(yǔ)言

2022-12-15 09:44:29

數(shù)據(jù)庫(kù)利器

2020-05-26 10:42:31

數(shù)據(jù)庫(kù)讀寫分離數(shù)據(jù)庫(kù)架構(gòu)

2021-01-30 10:51:07

Python編程語(yǔ)言開發(fā)

2019-10-23 15:53:16

JavaScript可選鏈對(duì)象

2018-02-24 19:37:33

Java8數(shù)據(jù)庫(kù)中間件

2017-03-14 13:12:19

2022-12-05 07:51:24

數(shù)據(jù)庫(kù)分庫(kù)分表讀寫分離

2009-06-04 17:33:08

EJB 3.1EJB 3.0

2020-12-11 09:20:01

數(shù)據(jù)庫(kù)架構(gòu)緩存

2019-08-28 10:53:35

JavaScriptOptional Ch代碼

2010-08-23 09:46:17

開發(fā)者

2024-09-20 07:38:00

數(shù)據(jù)庫(kù)性能策略

2020-03-24 14:16:18

ProxySQLMySQL數(shù)據(jù)庫(kù)

2023-09-14 08:00:00

基于主干的開發(fā)分支模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)