精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何設計訂單超時自動取消

開發 前端
假如少量消息丟失,我們可以通過每天凌晨跑一次任務,批量將這些未處理的訂單批量取消。這種兜底行為工程實現簡單,同時對系統影響很小。

我們在美團 APP 下單,假如沒有立即支付,進入訂單詳情會顯示倒計時,如果超過支付時間,訂單就會被自動取消。

網上有很多八股文,很多方案其實并不太適合真實的業務場景。所以這篇文章,筆者想深入剖析如何設計訂單超時自動取消的功能,希望能帶給大家一些啟發。

圖片圖片

1 定時任務方案

首先,我們非常自然的想到定時任務的方案。

方案流程:

  1. 每隔 30 秒查詢數據庫,取出最近的 N 條未支付的訂單。
  2. 遍歷查詢出來的訂單列表,判斷當前時間減去訂單的創建時間是否超過了支付超時時間,如果超時則對該訂單執行取消操作。

定時任務方案工程實現相對簡單,但這種方案會間隔對數據庫造成一定的 IO 壓力。特別是當訂單量數據量非常高時,高頻次的查詢對數據庫的性能是個不小的考驗。

定時任務方案從功能模塊角度來講,包含調度層和業務邏輯層兩部分。

圖片圖片

網上有很多的定時任務實現策略,我們可以簡單劃分為單機版和集群版。

2 定時任務方案:單機版

我們可以使用 Timer 、ScheduledEexcutorService、Quartz 非常容易的實現定時任務。

圖片圖片

但筆者并不推薦使用單機版的方案,舉個簡單的例子:

圖片圖片

假設我們應用 A 通過 Quartz 調度三個定時任務 A、B、C  ,當集群部署時,可能出現多臺不同機器實例同時執行任務的風險。

此時,我們可以通過加鎖的方式適當規避,見下圖:

圖片圖片

但這種方式并不優雅,同時定時任務應用內調度層會經常空跑,我們預期是希望三個定時任務 A、B、C 能均勻分布應用 A的不同實例內。

好,接下來,筆者會介紹親身經歷的三種集群定時任務。

3 定時任務方案:集群版

圖片圖片

3.1 Quartz + JDBCJobStore

Quartz 可以支持集群模式,集群模式需要在數據庫中添加11張表,對業務系統有一定的侵入性。

圖片圖片

筆者曾經服務的一家彩票公司,訂單調度中心就是使用 Quartz 的集群模式,實現日均百萬訂單的調度處理。

需要特別注意的是:

基于底層數據庫悲觀鎖的機制,Quartz 的集群模式性能并不高,假如執行頻率高的任務數超過達到一定數量,存在性能問題。

3.1 Elastic-Job

ElasticJob 定位為輕量級無中心化解決方案,使用 jar 的形式提供分布式任務的協調服務。

ElasticJob 從本質上來講 ,底層任務調度還是通過 Quartz ,它的優勢在于可以依賴 Zookeeper 這個大殺器 ,將任務通過負載均衡算法分配給應用內的 Quartz Scheduler 容器,

舉例:應用A有五個任務需要執行,分別是 A,B,C,D,E。任務E需要分成四個子任務,應用部署在兩臺機器上。

圖片圖片

圖中,應用 A 在啟動后, 5個任務通過 Zookeeper 協調后被分配到兩臺機器上,通過 Quartz Scheduler 分開執行不同的任務。

相比 Quartz 集群模式,ElasticJob 的可擴展性更高,同時因為是本地內存存儲 JOB,性能非常好。

但是 ElasticJob 的控制臺非常粗糙,主要原因還是基于它的實現機制 (Quartz +  zookeeper)。

通過控制 zookeeper 節點來間接操作應用內任務執行情況,但這樣非常不靈活,所以筆者認為 ElasticJob 更多的還是定位于框架,而不是一個調度平臺。

3.3 任務調度平臺

筆者非常認可任務調度平臺這種模式。XXL-JOB 是一個使用最廣泛的分布式任務調度平臺。

圖片圖片

業務系統和調度平臺分開部署,我們在調度中心上配置應用以及其定時任務,當任務需要執行時,調度平臺會觸發業務系統的任務,業務系統執行完任務之后,反饋給調度平臺任務執行的結果。

業務系統和調度平臺都可以水平擴展實現高可用,同時在調度平臺可以配置靈活的調度策略(比如重試機制、廣播模式等)。

XXL-JOB  并不完美,因為底層依然是基于數據庫悲觀鎖的機制,雖然通過時間輪的方式做了一定程度的優化,但依然會有性能瓶頸。

很多公司比如神州專車、美團都有自己自研的任務調度平臺。這種模式非常適合多團隊協作,便于大規模調度任務的統一管理。

4 延時消息方案

延時消息是一種非常優雅的模式。訂單服務生成訂單后,發送一條延時消息到消息隊列。消息隊列在消息到達支付過期時間時,將消息投遞給消費者,消費者收到消息之后,判斷訂單狀態是否為已支付,假如未支付,則執行取消訂單的邏輯。

圖片圖片

4.1 消息隊列 RocketMQ

RocketMQ 4.X 生產者發送延遲消息代碼如下:

Message msg = new Message();
msg.setTopic("TopicA");
msg.setTags("Tag");
msg.setBody("this is a delay message".getBytes());
//設置延遲level為5,對應延遲1分鐘
msg.setDelayTimeLevel(5);
producer.send(msg);

RocketMQ 4.X 版本默認支持 18 個 level 的延遲消息, 通過 broker 端的 messageDelayLevel 配置項確定的。

圖片圖片

RocketMQ 5.X 版本支持任意時刻延遲消息,客戶端在構造消息時提供了 3 個 API 來指定延遲時間或定時時間。

圖片圖片

假如技術團隊基礎架構能力很強,筆者非常推薦使用 RocketMQ 5.X 的延遲消息功能。

4.2 自研延遲服務

基于 RocketMQ 4 內置的延遲消息只能支持幾個固定的延遲級別,快手、滴滴開發了單獨的 Delay Server 來調度延遲消息。

圖片圖片

上圖這個結構沒有直接將延遲消息發到 Delay Server,而是更換 Topic 以后存入 RocketMQ。這樣的好處是可以復用現有的消息發送接口(以及上面的所有擴展能力)。對業務來說,只需要在構造消息的時候額外指定一個延遲時間字段即可,其它用法都不變。

自研單獨的  Delay Server 不僅可以適配 RocketMQ 4.X , 也可以適配 Kafka ,同時,也可以具有非常高的性能,說實話,這個是一個非常實用且靈活的方案。

4.3 Redis 延遲隊列

Redis 延遲隊列是一個輕量級的解決方案,開源成熟的實現是 Redission 。

圖片圖片

圖中,我們定義兩個集合:

1、zset 集合

生產者將任務信息發送到 zset 集合,value 是任務編號,score 是任務執行時間戳。

2、list 集合

守護線程檢測  zset 集合中到期的任務,若任務到期,將任務編號轉移到 list 集合 , 消費者從 list 集合彈出任務,并執行任務邏輯。

筆者需要強調的是:

Redis 雖然可以實現延遲消息的功能,但 Redis 并不是真正意義上的消息隊列,在使用過程中還是有小概率會丟失消息。

5 最佳實踐

5.1 并發口訣:一鎖二判三更新

不管我們使用定時任務還是延遲消息時,不可避免的會遇到并發執行任務的情況 (比如重復消費、調度重試等)。

當我們執行任務時,我們可以按照一鎖二判三更新這個口訣來處理。

  1. 鎖定當前需要處理的訂單。
  2. 判斷訂單是否已經更新過對應狀態了
  3. 如果訂單之前沒有更新過狀態了,可以更新并完成相關業務邏輯,否則本次不能更新,也不能完成業務邏輯。
  4. 釋放當前訂單的鎖。

圖片圖片

偽代碼偽代碼

5.2 兜底意識 + 配置監控

雖然我們提到了很多的實現策略,現實實戰時依然容易出現問題,比如不合理的操作導致消息丟失。

因此,我們應該具備兜底意識。

假如少量消息丟失,我們可以通過每天凌晨跑一次任務,批量將這些未處理的訂單批量取消。這種兜底行為工程實現簡單,同時對系統影響很小。

還有一點,就是配置監控。

筆者曾經自研過任務調度系統,應用 A 接入后,從控制臺發現每隔 2 個小時調度應用 A 的任務時,經常發生超時,通過分析,發現應用 A 線程出現了死鎖。

這種問題出現的幾率非常高,因此配置監控特別要必要。

對業務系統來講,監控分為兩個層面:系統監控和業務監控。

  • 系統監控

在條件允許的情況下,建議關注性能監控,方法可用性監控,方法調用次數監控這三大類。

性能監控性能監控

上圖是性能監控的示例圖,性能監控不同時間段性能分布,實時統計 TP99、TP999 、AVG 、MAX 等維度指標,這也是性能調優的重點關注對象。

  • 業務監控

業務監控功能是從業務角度出發,各個應用系統需要從業務層面進行哪些監控,以及提供怎樣的業務層面的監控功能支持業務相關的應用系統。

具體就是對業務數據,業務功能進行監控,實時收集業務流程的數據,并根據設置的策略對業務流程中不符合預期的部分進行預警和報警,并對收集到業務監控數據進行集中統一的存儲和各種方式進行展示。

比如訂單系統中有一個定時結算的服務,每兩分鐘執行一次。我們可以在定時任務 JOB 中添加埋點,并配置業務監控,假如十分鐘該定時任務沒有執行,則發送郵件,短信給相關負責人。

6 總結

這篇文章,筆者總結了訂單超時自動取消方案的兩種流派:定時任務和延遲消息。

1、定時任務

定時任務實現策略,我們可以簡單劃分為單機版和集群版。

筆者并不認可單機版,背八股文當然可以,訂單自動取消這個業務場景,生產環境還是要慎重。

集群版有三種方式:Quartz + JDBCJobStore、ElasticJob 、XXL-JOB 。

每種方式各有優缺點,筆者更傾向于任務調度平臺 XXL-JOB 這種方式。

2、延遲消息

延時消息是一種非常優雅的模式。本文介紹了三種方式:消息隊列 RocketMQ、自研延遲服務、Redis 延遲隊列。

假如技術團隊基礎架構能力很強,筆者推薦使用 RocketMQ 或者自研延遲服務。

假如技術團隊僅僅想用輕量級的實現,可以選擇 Redis 延遲隊列。

不管是使用定時任務還是延遲消息,架構的穩定性還需要注意如下兩點:

1、并發口訣:一鎖二判三更新 ;

2、兜底意識 + 配置監控。

責任編輯:武曉燕 來源: 勇哥Java實戰
相關推薦

2023-01-30 08:12:53

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

2022-12-01 08:25:03

訂單超時定時任務

2024-12-20 08:20:46

2024-11-05 16:58:21

RabbitMQ訂單超時取消延遲隊列

2024-10-16 09:29:30

RabbitMQ延遲隊列

2025-08-01 04:10:00

RocketMQ訂單分布式

2025-09-08 09:14:31

SpringQuartz自動識別

2024-08-27 13:43:38

Spring系統業務

2024-03-28 08:32:10

美團關閉訂單輪訓

2021-09-07 08:14:26

訂單超時未支付

2023-10-09 16:35:19

方案Spring支付

2020-10-21 09:25:01

互聯網訂單自動關閉

2025-05-09 09:31:31

支付訂單Timer

2023-11-27 08:15:26

Spring訂單取消

2023-11-20 08:39:24

Spring定時任務

2024-09-12 15:43:46

C#代碼后端

2009-12-08 16:37:33

華為20億美元訂單

2024-10-14 12:05:56

2019-09-19 11:52:59

Linux腳本語言Vim

2022-03-02 15:14:09

訂單計時器持久化
點贊
收藏

51CTO技術棧公眾號

亚洲专区在线视频| 色播久久人人爽人人爽人人片视av| 国产精品国三级国产av| 成人免费视频国产免费麻豆| 午夜综合激情| 色妞久久福利网| www.四虎在线| 日韩大尺度黄色| 亚洲三级在线观看| 精品国产一区二区三区麻豆小说 | 国产在线视频欧美一区二区三区| 久草视频一区二区| 亚洲自拍偷拍网| 精品人伦一区二区色婷婷| 116极品美女午夜一级| 久久精品视频观看| 26uuu色噜噜精品一区二区| 国产日韩精品入口| 亚洲国产精品午夜在线观看| 国产日产精品_国产精品毛片| 日韩午夜电影av| 亚洲 中文字幕 日韩 无码| 俺来也官网欧美久久精品| 国产午夜精品久久久久久免费视 | 成人免费电影网址| 亚洲经典中文字幕| 99热这里只有精品2| 91亚洲视频| 欧美日韩国产色视频| 欧美与动交zoz0z| 国产日韩精品在线看| 成人国产亚洲欧美成人综合网| 成人在线精品视频| 最好看的日本字幕mv视频大全 | 亚洲美女视频在线| 亚洲一区不卡在线| 国产精品免费播放| 久久亚洲精品国产精品紫薇| 国产一区二区黄色| 亚洲爆乳无码一区二区三区| 国产在线观看一区二区| 国产精品久久久久高潮| 久久久久久久久久一级| 久久蜜桃精品| 日本久久久久亚洲中字幕| 久久国产精品系列| 亚洲国产综合在线看不卡| 欧美肥婆姓交大片| av成人免费网站| 色婷婷色综合| 最新69国产成人精品视频免费| 国产手机在线观看| 国产欧美日韩视频在线| 亚洲欧美精品在线| 国产精品成人一区二区三区电影毛片| 国产精品香蕉| 精品亚洲aⅴ在线观看| 日韩av手机在线播放| 狼人精品一区二区三区在线| 日韩不卡中文字幕| 黄色在线观看av| 国产欧美日韩精品一区二区免费| 亚洲欧美制服丝袜| 丰满的亚洲女人毛茸茸| 久久人人88| 欧美成人免费在线观看| 欧美久久久久久久久久久久| 极品中文字幕一区| 欧美一区二区三区精品电影| 黄色污污网站在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品视频网站| 国产精品一二三四五区| 处破女av一区二区| 久久亚洲免费| 婷婷成人激情| 一区二区三区在线免费| 国产无限制自拍| 电影一区二区三区| 欧美日韩成人在线一区| 能看毛片的网站| 菁菁伊人国产精品| 亚洲最大中文字幕| 九九免费精品视频| 久久综合图片| 亚洲xxxxx性| 天堂91在线| 国产精品伦理在线| 日韩人妻无码精品久久久不卡| ****av在线网毛片| 精品视频色一区| 成年人看片网站| 女优一区二区三区| 久久91亚洲人成电影网站| 国产成人亚洲精品自产在线| 美女一区二区视频| 好吊妞www.84com只有这里才有精品| 国产在线观看免费网站| 亚洲三级电影网站| www.亚洲天堂网| www.久久99| 亚洲精品自在久久| 日韩a级片在线观看| 久久裸体视频| 国产一区福利视频| 国产在线观看a| 福利视频第一区| 日韩高清在线一区二区| 精品大片一区二区| 欧美极品少妇与黑人| 最新国产中文字幕| 91美女在线视频| 四虎4hu永久免费入口| 在线观看精品| 日韩久久午夜影院| 妺妺窝人体色www婷婷| 美女精品自拍一二三四| 国产亚洲第一区| 18加网站在线| 欧美三区在线观看| 老牛影视av老牛影视av| 亚洲精品美女| 国产精品9999久久久久仙踪林| av色图一区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 秋霞在线观看一区二区三区| 黄视频在线免费看| 日韩视频国产视频| 精品无码一区二区三区蜜臀| 日韩av一区二区在线影视| 国产无套精品一区二区| 男人添女人下部高潮视频在线观看| 欧美日韩国产影片| 欧美a在线播放| 日韩在线一区二区三区| 久久综合入口| 亚洲伊人av| 日韩精品免费看| 日韩精品无码一区二区| 不卡的电视剧免费网站有什么| 无颜之月在线看| 精品国产一区二区三区性色av| 色噜噜久久综合伊人一本| 自拍偷拍第八页| 欧美国产综合色视频| 色婷婷综合久久久久中文字幕 | 日韩专区视频网站| zzijzzij亚洲日本成熟少妇| 亚洲一卡二卡在线| 国产精品久线在线观看| 手机免费看av网站| 国产精品久久久久久久| 成人中文字幕+乱码+中文字幕| 日本精品在线| 91麻豆精品91久久久久久清纯| 999福利视频| 国产乱子伦视频一区二区三区 | 综合在线影院| 亚洲一二三在线| 中文字幕第三页| 国产精品家庭影院| 一起草最新网址| 精品二区久久| 久久久免费看| 免费观看成人性生生活片 | 欧美高清视频一区| 欧美色999| 久久九九热免费视频| 亚洲欧美强伦一区二区| 午夜精品福利一区二区三区av| 人妻丰满熟妇av无码久久洗澡 | 欧美人与性动交α欧美精品济南到| 日韩欧美成人激情| 精品91久久久| 亚洲国产精品成人综合色在线婷婷 | 国产亚洲成人av| 91麻豆国产福利在线观看| 免费黄色一级网站| 在线观看免费一区二区| 国产在线精品一区二区中文| 777午夜精品电影免费看| 精品国产美女在线| 深夜福利视频网站| 欧美午夜精品久久久久久超碰| www欧美com| 久久久久亚洲综合| 爱情岛论坛亚洲自拍| 在线视频亚洲| 中文字幕一区二区三区5566| 国产精品极品在线观看| 国产精品久久久久久久一区探花 | 久久视频在线| 国产一级特黄a大片99| 国产欧美在线观看免费| 久久久免费高清电视剧观看| 福利在线午夜| 亚洲国产成人久久综合| 91无套直看片红桃| 日韩欧美国产网站| 免费在线一级片| 欧美高清在线精品一区| 蜜臀av粉嫩av懂色av| 极品少妇xxxx精品少妇偷拍| 黄色国产精品视频| 欧美区国产区| 自拍偷拍一区二区三区| 国产精品日韩精品中文字幕| 国产精品一区二区三区在线观| 成人h在线观看| 97视频国产在线| 1区2区3区在线视频| 中日韩美女免费视频网址在线观看| 亚洲av无码乱码国产麻豆 | www.久久精品.com| 欧美视频在线观看一区二区| 超碰中文字幕在线| 亚洲国产一区二区三区| 国产美女福利视频| 国产精品美女久久久久高潮| 男生裸体视频网站| 99久久免费视频.com| 色偷偷中文字幕| 久久99精品一区二区三区 | 久久久加勒比| 国产v综合v亚洲欧美久久| 三级在线看中文字幕完整版| 欧美激情一区二区三区在线视频观看| 日本三级在线视频| 在线观看国产欧美| 国产三级在线免费观看| 亚洲欧洲xxxx| 三区在线观看| 日韩国产精品一区| 天堂中文在线观看视频| 亚洲国产美女精品久久久久∴| 午夜精品久久久久久久99| 91精品欧美一区二区三区综合在| 一本色道久久综合亚洲| 欧美日韩和欧美的一区二区| a片在线免费观看| 色88888久久久久久影院按摩| 国产美女激情视频| 欧美日韩国产精品一区二区三区四区 | 自拍视频在线免费观看| 中日韩美女免费视频网址在线观看| 都市激情在线视频| 中文字幕日本欧美| 激情欧美丁香| 少妇高潮 亚洲精品| 巨骚激情综合| 亚洲欧洲午夜一线一品| 色视频在线观看| 亚洲天堂av在线免费| 成人免费在线观看| 中文字幕九色91在线| 在线日本中文字幕| 久久久精品国产一区二区| 八戒八戒神马在线电影| 久久777国产线看观看精品| 激情影院在线| 欧美在线xxx| 亚洲精品555| 亚洲影院在线看| 91九色鹿精品国产综合久久香蕉| 波多野结衣一区二区三区在线观看 | 成人在线播放视频| 最近2019中文字幕mv免费看| 超碰免费公开在线| 久久青草福利网站| 在线观看的黄色| 国产精品久久网| 色狠狠一区二区三区| 99r国产精品视频| 亚洲欧美日本伦理| 亚洲精品在线免费| 欧美三区在线| 精品视频无码一区二区三区| 精品一二三四区| yjizz视频| 国产精品毛片无遮挡高清| 九九九免费视频| 日本久久电影网| 性欧美8khd高清极品| 精品无人国产偷自产在线| 欧美私人网站| 高清欧美性猛交| 精品国产欧美日韩一区二区三区| 91视频免费网站| 思热99re视热频这里只精品| 中国人体摄影一区二区三区| 国产欧美日韩综合一区在线播放 | 成人自拍视频在线| 日本一道本视频| 亚洲一级二级三级在线免费观看| 一级黄色av片| 日韩欧美国产系列| 97视频在线观看网站| 久久久久久久久国产精品| 成人在线视频播放| 国产精品一国产精品最新章节| 成人3d精品动漫精品一二三| 97超碰在线人人| 精品一区二区三区在线播放 | 97超碰国产精品女人人人爽| 四虎精品一区二区免费| 欧美13一14另类| 欧美体内she精视频在线观看| 国产男女激情视频| 成人的网站免费观看| 希岛爱理中文字幕| 91久久精品日日躁夜夜躁欧美| 日韩一区免费视频| 欧美裸身视频免费观看| 成人黄色在线| 欧美日韩一区综合| 国产一区二区三区久久| 无码人妻一区二区三区一| 国产精品传媒入口麻豆| 国产suv精品一区二区33| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 社区色欧美激情 | 国产不卡网站| 久久久久久国产精品免费免费| 欧美国产高清| 国产探花在线观看视频| 国产精品女主播av| 亚洲国产无线乱码在线观看 | 免费看黄色av| 色乱码一区二区三区88| 亚洲 另类 春色 国产| 韩日欧美一区二区| 红杏视频成人| www.99热这里只有精品| 成人在线综合网站| 久久久精品人妻一区二区三区四| 欧美一区二区三区四区在线观看| 在线a免费看| 91精品国产综合久久久久久久久| 黑人操亚洲人| 天美星空大象mv在线观看视频| 久久久久国产免费免费 | 日韩一级免费观看| 伊人在我在线看导航| 亚洲最大成人免费视频| 欧美另类综合| 超碰男人的天堂| 精品日韩视频在线观看| 国产中文字幕在线| 国产精品久久久久久网站| 日本高清免费电影一区| 国产精品一区二区小说| 亚洲三级免费电影| 亚洲av无码一区二区三区性色| 欧美国产在线电影| 精品国产乱子伦一区二区| 欧美在线观看成人| 国产欧美日韩精品一区| 91麻豆一区二区| 欧美精品videosex性欧美| 精品中国亚洲| 三级在线视频观看| 专区另类欧美日韩| 免费看黄色一级视频| 68精品久久久久久欧美| 国产一区二区三区四区大秀| 色啦啦av综合| 亚洲国产精品影院| 国产在线日本| 91精品国产一区二区三区动漫| 极品av少妇一区二区| 欧美狂猛xxxxx乱大交3| 欧美精品 国产精品| 久久久123| 日韩欧美亚洲精品| 国产一区二区福利视频| 亚洲免费激情视频| 在线日韩第一页| 77成人影视| 一级在线免费视频| 亚洲激情男女视频| 欧美色图另类| 亚洲iv一区二区三区| 国产欧美91| 国产精品白嫩白嫩大学美女| 亚洲精美色品网站| 成人豆花视频| 欧美精品99久久| 亚洲色图.com| 九色视频在线播放| 成人欧美一区二区三区视频xxx| 久久婷婷激情| 国产性生活网站| 色爱av美腿丝袜综合粉嫩av| 嫩草国产精品入口| 日韩视频在线观看一区二区三区| 同产精品九九九| 26uuu亚洲电影在线观看| 日韩欧美亚洲区| 91视频免费看| xxxx国产精品|