成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

訂單超時自動取消三種方案—我們用這種!

開發 架構
假如我們接入了一種支付方式,支付的周期非常長,我們需要延長訂單的有效時間,這種情況下,大家會怎么實現訂單超時未支付自動取消呢?

大家好,我是老三,大家對電商購物應該都比較熟悉了,我們應該注意到,在下單之后,通常會有一個倒計時,如果超過支付時間,訂單就會被自動取消。

圖片

下單

今天,我們來聊聊訂單超時未支付自動取消的幾種方案。

1.定時任務

這是最容易想到的辦法,定時任務去輪詢數據庫,取消即將超時的訂單。

圖片

訂單輪詢

定時任務實現方式有很多種,大概可以分為兩類:本地定時任務和分布式定時任務。

圖片

定時任務實現

本地定時任務,適用于單機版的業務系統,實現方式非常多樣:

  • 永動機線程:開啟一個線程,通過sleep去完成定時,一些開源中間件的某些定時任務是通過這種方式實現的。
  • JDK Timer:JDK提供了Timer API,也提供了很多周期性的方法。
  • 延遲線程池:JDK還提供了延遲線程池ScheduledExecutorService,API和Timer類似。
  • Spring Task:Sprig框架也提供了一些定時任務的實現,使用起來更加簡單。
  • Quartz:Quartz框架更進一步,提供了可以動態配置的線程池。

分布式定時任務:適用于分布式的業務系統,主要的實現框架有兩種:

  • xxl-job:大眾點評的許雪里開源的,一款基于MySQL的輕量級分布式定時任務框架。
  • elastic-job:當當開發的彈性分布式任務調度系統,功能很強大,相對重一些。

定時任務實現的優點是開發起來比較簡單,但是它也有一些缺點:

  • 對數據庫的壓力很大,定時任務造成人為的波峰,執行的時刻數據庫的壓力會陡增
  • 計時不準,定時任務做不到非常精確的時間控制,比如半小時訂單過期,但是定時任務很難卡準這個點

2.被動取消

在文章開頭的那個倒計時器,大家覺得是怎么做的呢?一般是客戶端計時+服務端檢查。

什么意思呢?就是這個倒計時由客戶端去做,但是客戶端定時去服務端檢查,修正倒計時的時間。

那么,這個訂單超時自動取消,也可以由客戶端去做:

  • 用戶留在收銀臺的時候,客戶端倒計時+主動查詢訂單狀態,服務端每次都去檢查一下訂單是否超時、剩余時間
  • 用戶每次進入訂單相關的頁面,查詢訂單的時候,服務端也檢查一下訂單是否超時

圖片

被動取消

這種方式實現起來也比較簡單,但是它也有缺點:

依賴客戶端,如果客戶端不發起請求,訂單可能永遠沒法過期,一直占用庫存

當然,也可以被動取消+定時任務,通過定時任務去做兜底的操作。

3.延時消息

第三種方案,就是利用延時消息了,可以使用RocketMQ、RabbitMQ、Kafka的延時消息,消息發送后,有一定延時才會投遞。

圖片

延時消息

我們用的就是這種,消息隊列采用的是RocketMQ,其實RocketMQ延時也是利用定時任務實現的。

使用延時消息的優點是比較高效、好擴展,缺點是引入了新的技術組件,增加了復雜度。

除了上面的三種,其實還有一些其它的方式,例如本地延遲隊列、時間輪算法、Redis過期監聽……

但是我覺得,應該不會有人真考慮過在生產上使用這些方法。

這里再給大家提個小問題,假如我們接入了一種支付方式,支付的周期非常長,我們需要延長訂單的有效時間,這種情況下,大家會怎么實現訂單超時未支付自動取消呢?

參考:

[1].Java中定時任務的6種實現方式,你知道幾種?:https://juejin.cn/post/6992719702032121864

[2].訂單超時未支付自動取消8種實現方案:https://blog.csdn.net/Anenan/article/details/126368753:?

責任編輯:武曉燕 來源: 三分惡
相關推薦

2023-01-30 08:12:53

訂單超時自動取消延長訂單

2024-12-20 08:20:46

2024-02-26 08:50:37

訂單自動取消消息

2021-09-07 08:14:26

訂單超時未支付

2022-07-22 20:00:01

高可用路由

2022-03-22 10:24:48

Linux開源Elasticsea

2017-07-03 18:24:39

MySQL數據冗余

2024-04-25 12:49:22

2022-08-19 11:19:49

單元測試Python

2010-09-25 17:17:19

2010-09-08 15:49:21

SmartyCSS

2010-09-30 14:40:45

2024-05-28 08:17:54

2015-10-21 14:23:08

反模式持續部署自動化運維

2024-10-14 09:20:09

異步流式接口

2010-09-24 19:18:22

SQL索引

2011-01-18 15:35:59

jQueryJavaScriptweb

2024-11-05 16:58:21

RabbitMQ訂單超時取消延遲隊列

2024-10-16 09:29:30

RabbitMQ延遲隊列

2022-05-26 10:27:41

分布式互聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精彩 | 国产网站久久 | 欧美日韩高清 | 国产在线拍偷自揄拍视频 | 国产九九九九 | 久久99精品久久久久久国产越南 | 精品乱码一区二区三四区 | 精品国产一区二区三区免费 | 欧美黄在线观看 | 国产精品亚洲成在人线 | 在线观看国产视频 | 亚洲精品66 | 欧美激情视频一区二区三区在线播放 | 一区二区三区视频在线 | 日韩欧美一级片 | 欧美大片黄 | 老司机久久 | 热久久性 | 狠狠视频 | 国产精品久久久久久久久免费高清 | 91免费在线视频 | 91黄色免费看 | 久久高清| 波多野结衣一区二区三区 | 国产精品一区二区三区在线 | 一区二区三区久久久 | 欧美亚洲视频 | 性福视频在线观看 | 91精品国产乱码久久久久久久久 | 天天看片天天干 | 亚洲一区二区三区高清 | 亚洲丝袜天堂 | 在线观看免费黄色片 | 亚洲精品电影在线 | 日韩中文字幕一区二区三区 | 国产精品小视频在线观看 | 日韩精品成人免费观看视频 | 四虎成人精品永久免费av九九 | 久久久久久国产精品 | 国产精品久久久久久久7电影 | 中国毛片免费 |