1. 程式人生 > >使用Redis+MQ+MySql實現商品秒殺

使用Redis+MQ+MySql實現商品秒殺

並發 緩存 高速緩存 數據處理 數據 執行時間 判斷 但是 操作

基本思路是通過Redis高速緩存來代替緩慢的數據庫操作,借此提高系統在高並發情況下的數據處理能力。
原系統:
1)秒殺請求進入後臺後被發送到消息隊列,並返回入隊成功;
2)消息隊列的消費者依次處理執行SQL處理消息隊列中的秒殺請求;
根據測試,SQL函數的執行時間約為30ms,屬於慢SQL,在1000次/s,總計50次請求下,系統能夠很快的對50萬次請求進行入隊操作,但是後續消息隊列中請求大約需要執行6小時。
修改後:
1)秒殺請求進入後臺後,判斷Redis中對應秒殺商品的庫存,若有庫存則發送到消息隊列1,返回入隊成功,否則,返回秒殺結束;
2)消息隊列1使用Redis對請求進行去重處理,去掉重復的請求後發送給消息隊列2;
3)消息隊列2使用Redis對對應秒殺商品進行減庫存操作,之後發送給消息隊列3;
4)消息隊列3執行原秒殺系統中SQL,對MySql中對應數據表進行操作;
修改後的系統由於消息隊列1、2中都是對Redis的操作,所以執行速度非常快,響應非常迅速,等到了消息隊列3時,請求數基本上已經等於秒殺的商品數,需要執行的SQL數量少了,速度自然也就快了,不會發生消息隊列的擁堵。

使用Redis+MQ+MySql實現商品秒殺