搶購時,用異步隊列處理下單,那怎么實時把下單結果通知用戶呢??
搶購時,用異步隊列處理下單,那怎么實時把下單結果<愛尬聊_頭條百科>通知用戶呢?
u_110wuai698 21小時前
client端用js輪詢一個接口,用來獲取處理狀態
testtesttestTY 21小時前
搶購最重要的是要保證庫存數據的強一致性,搶購的瞬時流量非常大,如果使用MySql等一些關系型數據庫可能會扛不住這方面的壓力。一般會結合緩存中間件進行處理,例如redis。搶購開始前,將商品和庫存數據同步到redis中,所有的搶購操作都在redis中進行處理,后臺開啟一個異步任務,定時的將庫存數據刷到數據庫中。跟著開始對訂單進行付款,由于流量較大,第三方支付系統本身也對調用端的應用限制流量,所以你這邊所說的應該是我接下來需要描述的。這里必然要使用消息隊列(也就是你所說的異步隊列),可以參考淘寶雙11的限流措施,為了保護系統不受高流量的沖擊而導致系統崩潰的問題,消息隊列做了一層緩沖保護,系統需要設計一個窗口模型,窗口模型會實時的刷新用戶辦理手續的狀態。例如,用戶下單之后準備去付款,這個時候會跳到辦事大廳的服務窗口,如果此時窗口都滿了,也就是消費者的數量達到上線了,那么需要用戶開始排隊,系統可以通過彈出等待窗口,讓用戶等待一下,一旦有空閑的線程釋放出來,用戶就可以開始支付下單。上面的是以拍下減庫存的模型進行說明,如果你們設計的系統是付款減庫存,稍微會有些出入,但是同樣也需要這樣的窗口需要告知用戶狀態,及時用戶付款成功,雖然沒及時把狀態返回給用戶,用戶能夠通過一個頁面及時查看到他的窗口狀態就可以了。