常见的数据库架构
目錄
引言
一、主備架構(gòu)
二、雙主架構(gòu)
三、一主多從
四、雙主+主從架構(gòu)
引言
我們做數(shù)據(jù)庫架構(gòu)想要達(dá)到的目的:高可用,高性能,—致性,擴(kuò)展性
一、主備架構(gòu)
只有主庫提供讀寫服務(wù),備庫冗余作故障轉(zhuǎn)移用
?1、高可用分析:高可用,主庫掛了,keepalive(只是一種工具)會(huì)自動(dòng)切換到備庫。這個(gè)過程對(duì)業(yè)務(wù)層是透明的,無需修改代碼或配置
2、高性能分析:讀寫都操作主庫,很容易產(chǎn)生瓶頸。大部分互聯(lián)網(wǎng)應(yīng)用讀多寫少,讀會(huì)先成為瓶頸,進(jìn)而影響寫性能。另外,備庫只是單純的備份,資源利用率50%,這點(diǎn)方案二可解決
3、一致性分析:讀寫都操作主庫,不存在數(shù)據(jù)一致性問題
4、擴(kuò)展性分析:無法通過加從庫來擴(kuò)展讀性能,進(jìn)而提高整體性能
5、可落地分析:兩點(diǎn)影響落地使用。第一,性能一般,這點(diǎn)可以通過建立高效的索引和引入緩存來增加讀性能,進(jìn)而提高性能。這也是通用的方案。第二,擴(kuò)展性差,這點(diǎn)可以通過分庫分表來擴(kuò)展
二、雙主架構(gòu)
兩個(gè)主庫同時(shí)提供服務(wù),負(fù)載均衡(M-M)
1、高可用分析:高可用,一個(gè)主庫掛了,不影響另一臺(tái)主庫提供服務(wù)。這個(gè)過程對(duì)業(yè)務(wù)層是透明的,無需修改代碼或配置
2、高性能分析:讀寫性能相比于方案一都得到提升,提升一倍
3、一致性分析:存在數(shù)據(jù)一致性問題
4、擴(kuò)展性分析:當(dāng)然可以擴(kuò)展成三主循環(huán),但不建議(會(huì)多一層數(shù)據(jù)同步,這樣同步的時(shí)間會(huì)更長(zhǎng))。如果非得在數(shù)據(jù)庫架構(gòu)層面擴(kuò)展的話,擴(kuò)展為方案四
5、可落地分析:兩點(diǎn)影響落地使用。第一,數(shù)據(jù)一致性問題,一致性解決方案可解決問題。第二,主鍵沖突問題,ID統(tǒng)一地由分布式ID生成服務(wù)來生成可解決問題
三、一主多從
主從架構(gòu),一主多從,讀寫分離(主io問題,可拓展為mss和mha)
1、高可用分析:主庫單點(diǎn),從庫高可用。一旦主庫掛了,寫服務(wù)也就無法提供
2、高性能分析:大部分互聯(lián)網(wǎng)應(yīng)用讀多寫少,讀會(huì)先成為瓶頸,進(jìn)而影響整體性能。讀的性能提高了,整體性能也提高了。另外,主庫可以不用索引,線上從庫和線下從庫也可以建立不同的索引(線上從庫如果有多個(gè)還是要建立相同的索引,不然得不償失;線下從庫是平時(shí)開發(fā)人員排查線上問題時(shí)查的庫,可以建更多的索引)
3、一致性分析:存在數(shù)據(jù)一致性問題
4、擴(kuò)展性分析:可以通過加從庫來擴(kuò)展讀性能,進(jìn)而提高整體性能。(帶來的問題是,從庫越多需要從主庫拉取binlog日志的端就越多,進(jìn)而影響主庫的性能,并且數(shù)據(jù)同步完成的時(shí)間也會(huì)更長(zhǎng))
5、可落地分析:兩點(diǎn)影響落地使用。第一,數(shù)據(jù)一致性問題,一致性解決方案可解決問題。第二,主庫單點(diǎn)問題,需要我們?cè)谧鯩HA價(jià)格彌補(bǔ)
拓展:(mss)使用一臺(tái)做slave,分擔(dān)Master的壓力,slave中需要開啟bin-logbin,并配置log-slave-updates,slave中繼可使用black-hole的存儲(chǔ)引擎,不會(huì)把數(shù)據(jù)存儲(chǔ)到硬盤,只記錄二進(jìn)制日志
四、雙主+主從架構(gòu)
看似完美的方案(MM-ss)
1、高可用分析:高可用
2、高性能分析:高性能
3、一致性分析:存在數(shù)據(jù)一致性問題
4、擴(kuò)展性分析:可以通過加從庫來擴(kuò)展讀性能,進(jìn)而提高整體x性能。(帶來的問題同方案二)
5、可落地分析:同方案二,但數(shù)據(jù)同步又多了一層,數(shù)據(jù)延遲更嚴(yán)重
總結(jié)
- 上一篇: Vue3使用setup时使用name属性
- 下一篇: excel表格打不开是什么原因_为什么你