×

服務(wù)器架構(gòu)與高并發(fā)性能測(cè)試實(shí)戰(zhàn)方案(三)

  • 作者:新網(wǎng)
  • 來(lái)源:新網(wǎng)
  • 瀏覽:100
  • 2018-05-10 17:57:09

上面例子多是針對(duì)用戶存儲(chǔ)緩存,如果是公用的緩存數(shù)據(jù)需要注意一些問(wèn)題,如:公用的緩存數(shù)據(jù)需要考慮并發(fā)下的可能會(huì)導(dǎo)致大量命中DB查詢,可以使用管理后臺(tái)更新緩存,或者DB查詢的鎖住操作。

 其他業(yè)務(wù):

002UASMrzy7605pjKJv15&690.jpg

<div
上面例子多是針對(duì)用戶存儲(chǔ)緩存,如果是公用的緩存數(shù)據(jù)需要注意一些問(wèn)題,如:公用的緩存數(shù)據(jù)需要考慮并發(fā)下的可能會(huì)導(dǎo)致大量命中DB查詢,可以使用管理后臺(tái)更新緩存,或者DB查詢的鎖住操作。
 
以上例子是一個(gè)相對(duì)簡(jiǎn)單的高并發(fā)架構(gòu),并發(fā)量不是很高的情況可以很好的支撐,但是隨著業(yè)務(wù)的壯大,用戶并發(fā)量增加,我們的架構(gòu)也會(huì)進(jìn)行不斷的優(yōu)化和演變,比如對(duì)業(yè)務(wù)進(jìn)行服務(wù)化,每個(gè)服務(wù)有自己的并發(fā)架構(gòu),自己的均衡服務(wù)器,分布式數(shù)據(jù)庫(kù),NoSQL主從集群,如:用戶服務(wù)、訂單服務(wù)。
 
2)消息隊(duì)列
 
秒殺、秒搶等活動(dòng)業(yè)務(wù),用戶在瞬間涌入產(chǎn)生高并發(fā)請(qǐng)求。
 
場(chǎng)景:定時(shí)領(lǐng)取紅包等。
 
說(shuō)明:
 
場(chǎng)景中的定時(shí)領(lǐng)取是一個(gè)高并發(fā)的業(yè)務(wù),像秒殺活動(dòng)用戶會(huì)在到點(diǎn)的時(shí)間涌入,DB瞬間就接受到一記暴擊,hold不住就會(huì)宕機(jī),然后影響整個(gè)業(yè)務(wù);
 
像這種不是只有查詢的操作并且會(huì)有高并發(fā)的插入或者更新數(shù)據(jù)的業(yè)務(wù),前面提到的通用方案就無(wú)法支撐,并發(fā)的時(shí)候都是直接命中DB;
 
設(shè)計(jì)這塊業(yè)務(wù)的時(shí)候就會(huì)使用消息隊(duì)列的,可以將參與用戶的信息添加到消息隊(duì)列中,然后再寫(xiě)個(gè)多線程程序去消耗隊(duì)列,給隊(duì)列中的用戶發(fā)放紅包;
 
方案如:
 
定時(shí)領(lǐng)取紅包;
 
一般習(xí)慣使用 redis的 list;
 
當(dāng)用戶參與活動(dòng),將用戶參與信息push到隊(duì)列中;
 
然后寫(xiě)個(gè)多線程程序去pop數(shù)據(jù),進(jìn)行發(fā)放紅包的業(yè)務(wù);
 
這樣可以支持高并發(fā)下的用戶可以正常的參與活動(dòng),并且避免數(shù)據(jù)庫(kù)服務(wù)器宕機(jī)的危險(xiǎn)。
 
附加:通過(guò)消息隊(duì)列可以做很多的服務(wù)。
 
如:定時(shí)短信發(fā)送服務(wù),使用sset(sorted set),發(fā)送時(shí)間戳作為排序依據(jù),短信數(shù)據(jù)隊(duì)列根據(jù)時(shí)間升序,然后寫(xiě)個(gè)程序定時(shí)循環(huán)去讀取sset隊(duì)列中的第一條,當(dāng)前時(shí)間是否超過(guò)發(fā)送時(shí)間,如果超過(guò)就進(jìn)行短信發(fā)送。
 
以上就是我們的今日分享,希望對(duì)大家有所幫助。
 

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading