查ICP網(wǎng):全新的綜合網(wǎng)站備案信息查詢網(wǎng)
Copyright ? 2008-2028 www.mshuangcha.com [ 查icp] All Rights Reserved.
高并發(fā)有什么解決方法?
1:系統(tǒng)拆分,將一個(gè)系統(tǒng)拆分為多個(gè)子系統(tǒng),用dubbo來(lái)搞。然后每個(gè)系統(tǒng)連一個(gè)數(shù)據(jù)庫(kù),這樣本來(lái)就一個(gè)庫(kù),現(xiàn)在多個(gè)數(shù)據(jù)庫(kù),這樣就可以抗高并發(fā)。
2:緩存,必須得用緩存。大部分的高并發(fā)場(chǎng)景,都是讀多寫(xiě)少,那你完全可以在數(shù)據(jù)庫(kù)和緩存里都寫(xiě)一份,然后讀的時(shí)候大量走緩存不就得了。畢竟人家redis輕輕松松單機(jī)幾萬(wàn)的并發(fā)啊。沒(méi)問(wèn)題的。所以你可以考的慮考慮你的項(xiàng)目里,那些承載主要請(qǐng)求讀場(chǎng)景,怎么用緩存來(lái)抗高并發(fā)。
3:MQ(消息隊(duì)列),必須得用MQ??赡苣氵€是會(huì)出現(xiàn)高并發(fā)寫(xiě)的場(chǎng)景,比如說(shuō)一個(gè)業(yè)務(wù)操作里要頻繁搞數(shù)據(jù)庫(kù)幾十次,增刪改增刪改,瘋了。那高并發(fā)絕對(duì)搞掛你的系統(tǒng),人家是緩存你要是用redis來(lái)承載寫(xiě)那肯定不行,數(shù)據(jù)隨時(shí)就被LRU(淘汰掉最不經(jīng)常使用的)了,數(shù)據(jù)格式還無(wú)比簡(jiǎn)單,沒(méi)有事務(wù)支持。所以該用mysql還得用mysql啊。那你咋辦?用MQ吧,大量的寫(xiě)請(qǐng)求灌入MQ里,排隊(duì)慢慢玩兒,后邊系統(tǒng)消費(fèi)后慢慢寫(xiě),控制在mysql承載范圍之內(nèi)。所以你得考慮考慮你的項(xiàng)目里,那些承載復(fù)雜寫(xiě)業(yè)務(wù)邏輯的場(chǎng)景里,如何用MQ來(lái)異步寫(xiě),提升并發(fā)性。MQ單機(jī)抗幾萬(wàn)并發(fā)也是ok的。
處理高并發(fā)另三種方法
分庫(kù)分表
可能到了最后數(shù)據(jù)庫(kù)層面還是免不了抗高并發(fā)的要求,好吧,那么就將一個(gè)數(shù)據(jù)庫(kù)拆分為多個(gè)庫(kù),多個(gè)庫(kù)來(lái)抗更高的并發(fā);然后將一個(gè)表拆分為多個(gè)表,每個(gè)表的數(shù)據(jù)量保持少一點(diǎn),提高sql跑的性能。
讀寫(xiě)分離
這個(gè)就是說(shuō)大部分時(shí)候數(shù)據(jù)庫(kù)可能也是讀多寫(xiě)少,沒(méi)必要所有請(qǐng)求都集中在一個(gè)庫(kù)上吧,可以搞個(gè)主從架構(gòu),主庫(kù)寫(xiě)入,從庫(kù)讀取,搞一個(gè)讀寫(xiě)分離。讀流量太多的時(shí)候,還可以加更多的從庫(kù)。
solrCloud
SolrCloud(solr 云)是Solr提供的分布式搜索方案,可以解決海量數(shù)據(jù)的 分布式全文檢索,因?yàn)榇罱思?,因此具備高可用的特性,同時(shí)對(duì)數(shù)據(jù)進(jìn)行主從備份,避免了單點(diǎn)故障問(wèn)題。可以做到數(shù)據(jù)的快速恢復(fù)。并且可以動(dòng)態(tài)的添加新的節(jié)點(diǎn),再對(duì)數(shù)據(jù)進(jìn)行平衡,可以做到負(fù)載均衡。