基本原理
- RabbitMQ提供了一種QOS(服務質量保證)功能。
在非自動確認消息的前提下,如果一定數目的消息還未被消費確認,則不進行新消息的消費。 - 我們可以將該消息數量設置為商品的庫存數量,並給消息設置過期時間;
- 開啟手動應答模式,在執行完秒殺后,對消息進行應答;這樣,秒殺的並發量將大大降低;假設每秒內有10000個請求去秒殺100件商品,則在服務器未執行完秒殺之前,最多只有100個請求發送到服務器,其他請求要么過期進入死信隊列,要么等待前面的請求得到響應后再發送。對消息進行限流,可以有效緩解數據庫的壓力。
- 對於過期的消息,我們放入死信隊列中,創建消費者,對消息進行消費。若無庫存,則直接返回秒殺結束的消息,否則,繼續進行秒殺操作。
- 使用websocket實現,服務器與客戶端的通信,服務器可以提供webSocket將秒殺結果發送給客戶端。