1. 程式人生 > >搶紅包高併發問題

搶紅包高併發問題

                                            搶紅包高併發問題

我們在搭建網站時候要考慮高併發問題,比如搶紅包。當到節假日時候,人們會互相傳送紅包。

我們需要對這種高併發的請求行處理。我們需要先對傳送紅包的請求進行處理。

伺服器端處理髮紅包請求的時候先生成一個傳送紅包訂單:

對於搶紅包的時候或者節日有高併發訪問的時候,這個訂單資訊存在兩份mg訊息佇列中。防止一個訊息佇列

伺服器崩潰。然後再把訊息給redis快取。在伺服器端隨機生成紅包id。這個id可以是:ip+mac地址+時間戳+迴圈隨機數;

也可以是利用雪花演算法或者uuid來保證生成的紅包id唯一。需要4b儲存。其中伺服器端在處理髮紅包的請求的時候,

為了提高伺服器的處理效能,會在客戶端先處理請求(比如可以把紅包分割成多少份,然後傳送給伺服器端)。紅包

內容包括一些前臺傳的紅包資訊,紅包總數等。假設有200個領取紅包上限人數。需要400b來儲存搶紅包人的id。

總共不會超過1kb。那麼4g的記憶體可以儲存的訊息能有400萬。而且伺服器的記憶體更大。這樣足夠滿足接受客戶端

的高併發請求,然後交給redis備份處理。

注意事項:

1:網路傳輸的儘量傳輸字串,這樣避免字串的反序列化耗費效能。

2:讀寫redis和db是非同步操作。隔一段時間後才向資料庫裡寫入。防止頻繁的io耗費效能。

3:mg訊息佇列和redis可能是雙寫,這樣防止一份崩潰之後造成較大的損失。