java處理高并發(fā)訂單 支撐日活百萬用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計其數(shù)據(jù)庫架構(gòu)? ?
支撐日活百萬用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計其數(shù)據(jù)庫架構(gòu)? ?以MySQL為列:1:要支持高并發(fā)系統(tǒng),必須涉及事務(wù),所以數(shù)據(jù)庫引擎必須選擇InnoDB。InnoDB支持事務(wù),事務(wù)級別取決于業(yè)務(wù)。如果業(yè)務(wù)
支撐日活百萬用戶的高并發(fā)系統(tǒng),應(yīng)該如何設(shè)計其數(shù)據(jù)庫架構(gòu)? ?
以MySQL為列:
1:要支持高并發(fā)系統(tǒng),必須涉及事務(wù),所以數(shù)據(jù)庫引擎必須選擇InnoDB。InnoDB支持事務(wù),事務(wù)級別取決于業(yè)務(wù)。如果業(yè)務(wù)數(shù)據(jù)一致性要求非常高,事務(wù)將開啟序列化級別,這將完全隔離事務(wù),但會導(dǎo)致對鎖資源的競爭加劇。MySQL的性能在一定程度上降低了。
2:數(shù)據(jù)庫分為主數(shù)據(jù)庫和從數(shù)據(jù)庫。主數(shù)據(jù)庫負(fù)責(zé)寫入數(shù)據(jù),集群數(shù)據(jù)庫負(fù)責(zé)讀取數(shù)據(jù)。注意主從數(shù)據(jù)庫的數(shù)據(jù)一致性。
3:冷熱數(shù)據(jù)分離,美團、饑餓部分設(shè)計采用冷熱數(shù)據(jù)分離。以訂單為例,出庫單的主要業(yè)務(wù)場景是查詢。數(shù)據(jù)查詢越向前,概率越低。這是冷數(shù)據(jù)。正在交易的訂單是熱點數(shù)據(jù),需要隨時查詢和更新。冷數(shù)據(jù)可以放入redis緩存。這將提高查詢效率。
4:數(shù)據(jù)表設(shè)計,充分利用索引查詢。businesssql避免返回?zé)o用的行和列,禁止使用select*query,在查詢時增加限制,并盡可能返回滿足要求的行。對于復(fù)雜的SQL,請考慮拆分SQL。拆分SQL有一個優(yōu)點。對于重復(fù)查詢SQL,將第二次查詢放入MySQL緩沖區(qū),避免重復(fù)磁盤操作,提高訪問性能。
5:子數(shù)據(jù)庫和子表。例如,業(yè)務(wù)數(shù)據(jù)按月份分類。在一定程度上,增加、刪除、修改和檢查的壓力將得到緩解。
希望對您有所幫助。謝謝您。
如何開發(fā)設(shè)計B2C商城平臺-電商平臺開發(fā)?
首先要確定B2C平臺在商業(yè)上的定位,在商品類上是全品類還是垂直品類,在商業(yè)模式上是自營模式還是平臺模式。其次,在技術(shù)上,有必要根據(jù)上述確定的定位和模式來界定職能范圍。最好畫一個產(chǎn)品原型(基于產(chǎn)品原型設(shè)計工具,如墨刀和Axer),然后交給技術(shù)團隊進行研發(fā)。當(dāng)然,還有更多的問題需要考慮,比如設(shè)計目標(biāo)(高并發(fā)、高可用、安全性、系統(tǒng)可擴展性、分布式),需要實現(xiàn)場景(App、微信公眾號、H5、PC端),是否需要考慮國際化(多語種、多幣種、多時區(qū))等等打開。
由于電子商務(wù)有其特殊的領(lǐng)域知識,它基本上是這個領(lǐng)域的標(biāo)準(zhǔn)配置。例如,產(chǎn)品價格體系必須是多維的,產(chǎn)品促銷必須是靈活的,必須支持各種頁面的內(nèi)容定制(CMS),必須提供物流和支付功能的集成,必須提供購物車和結(jié)算系統(tǒng)等等。有鑒于此,有成熟的開源系統(tǒng)供您使用,比如PHP領(lǐng)域的Magento和NopCommerce領(lǐng)域的NopCommerce。網(wǎng)域,非常經(jīng)典。