国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

數十萬定時任務,如何高效觸發定時和超時

開發 前端
搬運線程會去bucket中查找哪些執行時間戳的RunTimeMillis比現在的時間小,將這些記錄全部刪除;同時會解析出每個任務的Topic是什么,然后將這些任務PUSH到TOPIC對應的列表queue中。

項目產品中,大家都會有"定時任務"和"定時超時"的需求,初始階段,我們基本都是用少數的一些timer,即使是任務量越來越大的時候,我們就難免維護著大量的timer,或者進行了大量低效的掃描。

定時任務使用場景:當訂單一直處于未支付狀態時,如何及時的關閉訂單(已經使用)

如何定期檢查處于退款狀態的訂單是否已經退款成功(后期重構使用)

設計方案:

  • 整個Redis當做消息池,以KV形式存儲消息
  • 使用ZSET做優先隊列,按照Score維持優先級
  • 使用LIST結構,以先進先出的方式消費
  • ZSET和LIST存儲消息地址(對應消息池的每個KEY)
  • 使用定時器維護路由
  • 根據TTL規則實現消息延遲

咱們公司現階段就是使用的這套方法:

1.新增一個job,會job_pool中插入一條數據,記錄了業務方消費方。也會在bucket插入一條記錄,記錄執行的時間戳

2.搬運線程會去bucket中查找哪些執行時間戳的RunTimeMillis比現在的時間小,將這些記錄全部刪除;同時會解析出每個任務的Topic是什么,然后將這些任務PUSH到TOPIC對應的列表queue中

3每個topic的list都會有一個監聽線程去批量獲取list中的待消費數據,獲取到的數據全部扔給這個topic的消費線程池

4.消費線程池執行會去job_pool查找數據結構,返回給回調結構,執行回調方法。

圖片圖片

待優化的內容:

  1. 目前只有一個Queue隊列存放消息,當需要消費的消息大量堆積后,會影響消息通知的時效。改進的辦法是,開啟多個Queue,進行消息路由,再開啟多個消費線程進行消費,提供吞吐量
  2. 消息沒有進行持久化,存在風險,后續會將消息持久化到MongoDB中

一般來說還有什么其他方法實現這類需求呢?

“輪詢掃描法”

1.用一個Map<uid, last_packet_time>來記錄每一個uid最近一次請求時間last_packet_time

2.當某個用戶uid有請求包來到,實時更新這個Map

3.啟動一個timer,當Map中不為空時,輪詢掃描這個Map,看每個uid的last_packet_time是否超過30s,如果超過則進行超時處理

“多timer觸發法”

1.用一個Map<uid, last_packet_time>來記錄每一個uid最近一次請求時間last_packet_time

2.當某個用戶uid有請求包來到,實時更新這個Map,并同時對這個uid請求包啟動一個timer,30s之后觸發

3.每個uid請求包對應的timer觸發后,看Map中,查看這個uid的last_packet_time是否超過30s,如果超過則進行超時處理

方案一:只啟動一個timer,但需要輪詢,效率較低

方案二:不需要輪詢,但每個請求包要啟動一個timer,比較耗資源

ZSet(有序集合)數據結構來實現

  1. 創建ZSet:首先,你需要創建一個ZSet數據結構,其中每個訂單將作為一個成員,其分數將表示訂單的創建時間戳。你可以使用Redis等支持ZSet的數據庫來實現。
  2. 添加訂單:每當用戶創建新訂單時,將訂單添加到ZSet中,其中成員是訂單ID,分數是訂單的創建時間戳。
  3. 定時檢查訂單:定期(例如,每分鐘)執行一個程序或定時任務來檢查ZSet中的訂單。你可以使用程序來查詢ZSet,找到創建時間超過一定時間閾值的訂單,表示它們長時間未支付。
  4. 取消訂單:對于那些長時間未支付的訂單,可以將其從ZSet中刪除,并執行取消訂單的操作(例如,將訂單狀態設置為"已取消")。

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;
import java.util.Set;


public class OrderCancellationSystem {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost"); // 連接到本地Redis服務器


        // 模擬添加訂單
        addOrder(jedis, "Order1");
        addOrder(jedis, "Order2");


        // 定時任務,每分鐘檢查訂單并自動取消
        while (true) {
            cancelLongUnpaidOrders(jedis);
            try {
                Thread.sleep(60000); // 等待一分鐘再次檢查
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }


    public static void addOrder(Jedis jedis, String orderId) {
        long currentTime = System.currentTimeMillis();
        jedis.zadd("orders", currentTime, orderId);
    }


    public static void cancelOrder(String orderId) {
        // 執行取消訂單操作,例如更新訂單狀態
        System.out.println("Cancelling order: " + orderId);
    }


    public static void cancelLongUnpaidOrders(Jedis jedis) {
        long expirationTime = System.currentTimeMillis() - 3600 * 1000; // 60分鐘前的時間戳
        Set<Tuple> longUnpaidOrders = jedis.zrangeByScoreWithScores("orders", "-inf", String.valueOf(expirationTime));


        for (Tuple order : longUnpaidOrders) {
            String orderId = order.getElement();
            cancelOrder(orderId);
            jedis.zrem("orders", orderId); // 從ZSet中刪除已取消的訂單
        }
    }
}

責任編輯:武曉燕 來源: 二進制跳動
相關推薦

2017-03-13 09:12:00

TCP數據結構請求包

2024-11-04 16:01:01

2012-02-07 13:31:14

SpringJava

2009-10-28 10:05:29

Ubuntucrontab定時任務

2013-02-19 09:56:26

2024-05-13 09:49:30

.NETQuartz庫Cron表達式

2010-03-10 15:47:58

crontab定時任務

2024-09-09 08:11:12

2023-12-11 09:50:35

Linux定時器

2023-11-16 09:30:27

系統任務

2020-12-21 07:31:23

實現單機JDK

2024-12-27 08:24:55

2010-01-07 13:38:41

Linux定時任務

2022-03-28 08:31:29

線程池定時任務

2024-02-28 09:54:07

線程池配置

2023-08-13 07:44:18

GPU模型英偉達

2014-11-09 10:28:04

2021-04-16 13:20:41

ZeitLinux工具

2020-08-05 07:37:29

任務系統定時

2020-12-10 07:00:38

編程線程池定時任務
點贊
收藏

51CTO技術棧公眾號

极品校花啪啪激情久久| 色综合视频一区二区三区日韩| 综合中文字幕亚洲| 97看剧电视剧大全| 午夜不卡在线视频| 99中文字幕一区| 日韩西西人体444www| yellow在线观看网址| 久久久99免费视频| 成人在线免费视频观看| 看欧美日韩国产| 成人午夜激情在线| 日本一二三区视频免费高清| 欧美日韩国产免费一区二区| 中文字幕在线直播| 91sa在线看| 一区视频在线| 奇米影视亚洲色图| 午夜在线电影亚洲一区| 国产高清在线a视频大全| 欧美成人高清视频| 欧美特黄视频| 香港三级韩国三级日本三级| 精品国产鲁一鲁一区二区张丽| 欧美78videosex性欧美| 欧美日韩成人精品| 国产综合自拍| 可以在线看的av网站| 亚洲宅男天堂在线观看无病毒| 欧洲黄色一区| 欧美在线观看网址综合| 日日夜夜精品免费视频| 国产喷水theporn| 69精品人人人人| 97视频一区| 日本一区二区三区四区高清视频| 久久久久久久国产精品影院| 国产三区四区在线观看| 欧美巨大黑人极品精男| 亚洲毛片视频| 中文字幕av专区| 精品国偷自产国产一区| 香蕉国产成人午夜av影院| 神马影院我不卡午夜| 中文字幕亚洲在| 98色花堂精品视频在线观看| 国产精品白丝jk喷水视频一区| 久久国产夜色精品鲁鲁99| heyzo视频在线播放| 亚洲乱码国产乱码精品精| 欧美一级精品| 国产v片免费观看| 日韩一区二区影院| 999久久久免费精品国产| 青青青免费在线| 日韩精品最新网址| 日韩精品一区二区三区免费观看 | 国产伦精品一区二区三区千人斩| 日本一区免费观看| 亚洲综合视频网| 黄色精品视频网站| 美女被啪啪一区二区| 一区二区三区欧美| 综合久草视频| 亚洲欧美久久234| 精品国产1区2区| 国产区精品视频在线观看豆花| 五月天综合婷婷| 678五月天丁香亚洲综合网| 日韩激情图片| 免费男女羞羞的视频网站中文版| 正在播放国产一区| 日本女人一区二区三区| av国产在线观看| 91最新国产视频| 亚洲视频图片小说| 亚洲高清在线一区| 永久免费看av| 日韩一级免费观看| 9国产精品视频| 黄色小视频在线免费观看| 日本亚洲欧洲色α| 亚洲欧洲韩国日本视频| 99热这里只有精品首页| 99热成人精品热久久66| 久久精品国产欧美激情| 成人美女在线视频| 日本欧美日韩| 日韩亚洲欧美一区二区| 亚洲久久久久久久久久| 久久综合综合久久综合| 狂野欧美性猛交xxxxx视频| 欧美日韩一区二| 欧美www视频| 热久久久久久久| 天堂电影一区| 乱熟女高潮一区二区在线| 亚洲男人7777| www.66久久| 日韩一区二区三区精品视频第3页| 免费在线a视频| 久久久久久69| 亚洲桃色在线一区| 亚洲综合小说图片| 97影视大全免费追剧大全在线观看| 国产99久久精品一区二区永久免费 | 91大神福利视频在线| 国产精品久久久久婷婷二区次| 日韩成人18| 99免费视频| 国产精品亚洲片夜色在线| 欧美日韩亚洲成人| 亚洲三级影院| 人狥杂交一区欧美二区| 日本a视频在线观看| 久久久久久18| 午夜亚洲国产au精品一区二区| 欧美精品不卡| 欧美v亚洲v| 99精品在线免费视频| 91av视频在线播放| 一本在线高清不卡dvd| 老牛嫩草一区二区三区日本| 久久久人成影片一区二区三区在哪下载 | 日韩av片电影专区| 91福利小视频| 国产自产视频一区二区三区| 日韩一区二区三免费高清在线观看| 色免费在线视频| 1卡2卡3卡精品视频| 欧美一级视频精品观看| 国产美女娇喘av呻吟久久| 欧美在线在线| 羞羞视频在线观看| 日本不卡一区| 九九热99久久久国产盗摄| 亚洲成av人片在www色猫咪| 爽好多水快深点欧美视频| 精品国产三级| 日本免费一区二区三区最新| 亚洲综合网中心| 97视频在线观看视频免费视频 | 久久精品美女视频网站| 亚洲欧美国产77777| 亚洲国内自拍| 国产情侣一区在线| 你懂的免费在线观看| 4444在线观看| 国产精品日韩av| 亚洲老头同性xxxxx| 一区二区三区在线视频免费 | av激情在线| 国产又黄又猛视频| 99九九电视剧免费观看| 日韩经典第一页| 亚洲精品国产视频| 蜜桃一区二区三区在线| 国产suv精品一区| 91视频在线观看| 人妻少妇被粗大爽9797pw| 99久久精品免费看国产四区| 最近中文字幕2019免费| 日韩欧美在线观看视频| 99国产一区二区三精品乱码| 国精品一区二区三区| 美国十次综合久久| 中文国产字幕在线观看| 2020中文字字幕在线不卡| 亚洲精品一区二区三区蜜桃久| 91av在线网站| 亚洲欧美日韩一区二区三区在线| 亚洲成人av中文| 成人影视在线播放| 日本一区二区在线视频| 日本久久久久亚洲中字幕| 亚洲美女在线视频| 在线视频欧美精品| 国产精品久久久久毛片软件| 麻豆成人久久精品二区三区小说| 欧美呦呦网站| 精品国产三区在线| 免费毛片在线看片免费丝瓜视频 | 国产精品白丝jk喷水视频一区| 国产一区二区黑人欧美xxxx| 色偷偷久久一区二区三区| 国产无人区一区二区三区| 日本不卡视频在线观看| 天天做天天爱天天综合网2021| 成功精品影院| 久久av影院| av蜜臀在线| av黄色在线| 成年人免费在线视频| 中文字幕一区二区三区免费视频| 奇米777四色影视在线看| 欧美日韩免费精品| 国产精品美女黄网| 成人欧美一区二区三区黑人| 欧美中文在线视频| 美乳少妇欧美精品|