如何構建延遲任務調度系統(一):需求目標

1.需求描述

之前筆者接觸過一些營銷業務場景,比如說:

  • 用戶註冊未登錄過APP第二天早上10點發一條營銷短信促活
  • 紅包過期前兩天短信通知,下午16:00發送
  • 等等定時任務處理業務。

採用的技術方案是定時任務掃數據彙總表,分頁讀取一定數量然後處理
然而隨着業務的發展,業務多元化,遇到了以下場景:

  • 拼團砍價活動過期前半小時提醒
  • 訂單提交半小時內沒有完成支付,訂單自動取消,庫存退還
  • 用戶幾天內沒有操作過系統,發放激活短信

以上場景處理時間不是固定的某個點,而是業務發生的時間推遲一段時間,針對以上的業務場景,我們考慮可以根據不同業務建表,然後每隔一段時間去定時掃表,各自處理業務。
但是隨着業務增加,表氾濫,而且此類業務其實有很多相同的地方,那麼我們可以考慮把相同邏輯抽離出來,利用延遲隊列來處理任務

2.延時隊列設計目標

  1. 可靠性:任務進入延時隊列之後,必須被執行一次
  2. 高可用性:支持多實例部署
  3. 實時性:允許一定時間誤差,當然誤差越小越好
  4. 可管理:支持消息刪除
  5. 高性能:數據量大的情況下也能保證高性能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章