tps多少算高性能 支撐日活百萬(wàn)用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計(jì)其數(shù)據(jù)庫(kù)架構(gòu)? ?
支撐日活百萬(wàn)用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計(jì)其數(shù)據(jù)庫(kù)架構(gòu)? ?以MySQL為列:1:要支持高并發(fā)系統(tǒng),必須涉及事務(wù),所以數(shù)據(jù)庫(kù)引擎必須選擇InnoDB。InnoDB支持事務(wù),事務(wù)級(jí)別取決于業(yè)務(wù)。如果業(yè)務(wù)
支撐日活百萬(wàn)用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計(jì)其數(shù)據(jù)庫(kù)架構(gòu)? ?
以MySQL為列:
1:要支持高并發(fā)系統(tǒng),必須涉及事務(wù),所以數(shù)據(jù)庫(kù)引擎必須選擇InnoDB。InnoDB支持事務(wù),事務(wù)級(jí)別取決于業(yè)務(wù)。如果業(yè)務(wù)數(shù)據(jù)一致性要求非常高,事務(wù)將開啟序列化級(jí)別,這將完全隔離事務(wù),但會(huì)導(dǎo)致對(duì)鎖資源的競(jìng)爭(zhēng)加劇。MySQL的性能在一定程度上降低了。
2:數(shù)據(jù)庫(kù)分為主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)。主數(shù)據(jù)庫(kù)負(fù)責(zé)寫入數(shù)據(jù),集群數(shù)據(jù)庫(kù)負(fù)責(zé)讀取數(shù)據(jù)。注意主從數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性。
3:冷熱數(shù)據(jù)分離,美團(tuán)、饑餓部分設(shè)計(jì)采用冷熱數(shù)據(jù)分離。以訂單為例,出庫(kù)單的主要業(yè)務(wù)場(chǎng)景是查詢。數(shù)據(jù)查詢?cè)较蚯埃怕试降?。這是冷數(shù)據(jù)。正在交易的訂單是熱點(diǎn)數(shù)據(jù),需要隨時(shí)查詢和更新。冷數(shù)據(jù)可以放入redis緩存。這將提高查詢效率。
4:數(shù)據(jù)表設(shè)計(jì),充分利用索引查詢。businesssql避免返回?zé)o用的行和列,禁止使用select*query,在查詢時(shí)增加限制,并盡可能返回滿足要求的行。對(duì)于復(fù)雜的SQL,請(qǐng)考慮拆分SQL。拆分SQL有一個(gè)優(yōu)點(diǎn)。對(duì)于重復(fù)查詢SQL,將第二次查詢放入MySQL緩沖區(qū),避免重復(fù)磁盤操作,提高訪問性能。
5:子數(shù)據(jù)庫(kù)和子表。例如,業(yè)務(wù)數(shù)據(jù)按月份分類。在一定程度上,增加、刪除、修改和檢查的壓力將得到緩解。
希望對(duì)您有所幫助。謝謝您。
數(shù)據(jù)庫(kù)高并發(fā)寫入,怎么降低數(shù)據(jù)庫(kù)的壓力?
您可以將數(shù)據(jù)寫入MQ,然后從MQ緩慢地將其寫入數(shù)據(jù)庫(kù)。主流的MQ,比如Kafka和rocketmq,橫向擴(kuò)展非常方便
給你提供幾個(gè)想法:
1。靜態(tài)網(wǎng)站頁(yè)面。靜態(tài)頁(yè)面是。HTML(。HTM等),不需要由web服務(wù)器解析。它只需要生成一次,然后每次直接下載到客戶端,效率更高。
2. 網(wǎng)站的web服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、圖片服務(wù)器和文件服務(wù)器是分開的。通過(guò)服務(wù)器的專業(yè)化分工,以提高網(wǎng)站的訪問速度。因?yàn)橄螺d圖片和文件時(shí),會(huì)給IIS、Apache等服務(wù)器帶來(lái)很大壓力。
3. 設(shè)置一個(gè)特殊的數(shù)據(jù)緩存服務(wù)器。將大量的數(shù)據(jù)放入緩存數(shù)據(jù)區(qū),在訪問量較小時(shí)保存數(shù)據(jù),降低連接數(shù)據(jù)庫(kù)的直接操作成本。
4. 數(shù)據(jù)庫(kù)集群,數(shù)據(jù)庫(kù)表哈希。面對(duì)大量的訪問量,大型網(wǎng)站會(huì)出現(xiàn)數(shù)據(jù)庫(kù)瓶頸。此時(shí),一個(gè)數(shù)據(jù)庫(kù)很快就無(wú)法滿足應(yīng)用的需要,因此需要使用數(shù)據(jù)庫(kù)集群或數(shù)據(jù)庫(kù)表哈希來(lái)分散壓力。
5. 鏡像。映像是提高大型網(wǎng)站性能和數(shù)據(jù)安全性的一種方法。圖像技術(shù)可以解決不同的網(wǎng)絡(luò)接入提供商和接入?yún)^(qū)域所帶來(lái)的用戶接入速度的差異。例如,中國(guó)網(wǎng)和教育網(wǎng)的差異促使許多網(wǎng)站在教育網(wǎng)中建立形象網(wǎng)站,數(shù)據(jù)可以定期或?qū)崟r(shí)更新。
6. 負(fù)載平衡。負(fù)載均衡將是大型網(wǎng)站解決高負(fù)載訪問和大量并發(fā)請(qǐng)求的高端解決方案。
7. 最新:CDN加速技術(shù)。什么是CDN?CDN的全稱是content distribution network。其目的是在現(xiàn)有的互聯(lián)網(wǎng)上增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到離用戶最近的網(wǎng)絡(luò)“邊緣”,讓用戶就近獲得所需內(nèi)容,提高用戶訪問網(wǎng)站的響應(yīng)速度。CDN不同于image,因?yàn)樗萯mage更智能,或者可以用它來(lái)比喻:CDN=更智能的image cache流量分流。