商城系统订单超时自动取消解决方案
生活随笔
收集整理的這篇文章主要介紹了
商城系统订单超时自动取消解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
功能說明
用戶下單后 30 分鐘如果沒付款自動取消掉,然后釋放庫存,下面簡單介紹訂單超時自動取消的幾種常用的方案。
1.定時輪詢
最簡單的方法,寫好取消訂單的邏輯,一般是取訂單表待付款狀態的訂單,然后做遍歷取消處理,使用Linux系統的crontab定時執行取消訂單功能。
優點:簡單快捷,業務小的可以考慮
缺點:
- 由于Linux的限制,只能精確到秒
- 輪詢頻率不能自主控制,如果運維和開發分開管理,每次調整需要運維配置修改
- 如果第一次輪詢耗時長,第二次輪詢又開始了,會造成任務重復執行
- 占用數據庫資源
- 不能并發執行
2.任務調度
一些web框架會帶有任務調度的功能,像php的Laravel框架。
優點:
- 輪詢頻率可以做到用代碼來控制,不完全依賴系統;
- 任務可以做到不重復執行
缺點:跟定時輪詢差不多
3.延遲隊列處理
如果系統有太多的訂單需要處理,那么處理的時間就要很長,假如第一次輪詢還沒結束,第二次又開始了,就會造成任務的重復執行,同時抑制占用數據庫資源,造成數據庫壓力大,用延遲隊列做取消訂單處理,設定延遲時間為提交訂單之后的30分鐘執行,效率會高很多,常用的延時隊列有
- redis(訂閱鍵的失效事件)
- 框架自帶的隊列(例如Laravel框架自帶的隊列)
- rabbitMQ延遲隊列
優點:
- 不需要對訂單表輪詢處理,減少數據庫壓力
- 不會重復執行
- 效率高
- 可配合多線程處理
- 業務量大的方便做集群
- 不依賴系統的crontab
缺點:可能需要額外安裝隊列程序
總結
以上是生活随笔為你收集整理的商城系统订单超时自动取消解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdf安装
- 下一篇: object c中的多态