調度程序和背景任務
(部分: 業務和管理)
1)任命
調度器和背景任務為平臺提供了非用戶操作:定期計算,工件發布,清算和隊列回放。目標是確定性,抗故障性和可審計性。
2)任務分類
基於時間:按計劃(cron/Calendar):清算,關閉RTP窗口,上載,存檔。
事件驅動:總線觸發器(PaymentsSettled, PriceListUpdated)。
One off/Ad-hoc:TTL的一次性喬巴。
Long-running: backof/sags,流媒體編譯。
維護:按鍵旋轉、備份、索引、緩存加熱。
3)體系結構(參考)
組件:1.Scheduler(控制平面):存儲時間表,CAL/cron,服務窗口,時區,限制器。
2.Dispatcher: Plan →隊列(per-priority/tenant/region),設置截止日期,等效鍵。
3.工作人員:任務池下的靜態/自動軌道;heartbeats, leases.
4.Queue/Bus:FIFO/修飾,DLQ,延遲消息。
5.Locker/Coordination:分布式鎖定(leases), lead-election (Raft/ZK/Consul)。
6.Vault/KMS:JIT秘密,TTL短。
7.Observability: traces/metrics/logs, dashbords, alerts.
8.審計/WORM:不變的執行收據,Merkle切片。
模式:outbox/CDC,idempotency,補償(sags),backpressure,電路斷路器。
4)時間表: cron和日歷
Cron v3:秒/分鐘/小時/天/月/天/周;支持「/5」,範圍,列表。
日歷/例外:商業日歷,「沈默窗口」,假期/DST。
時間段:在任務上保留「tz」;在tenant的本地時間運行。
多區域:帶有漂移/重新選舉的per-Region或「領先區域+追隨者」時間表的副本。
5)隊列,優先級,SLA
優先級類別:P0(關鍵),P1,P2,P3;個別的worker池。
SLA/截止日期:「must_start_by」,「must_finish_by」;通行證-升級/轉發。
配額和公平性:任務/分鐘/特南特的帽子,「bursta」的令牌,noisy-neighbors的隔離。
延遲任務:「不早於」(延遲/可視性時間)。
6)競爭性和鎖定
Leases:租用自動擴展(heartbeat);超時-重新發布。
Mutex/信號器:per資源(例如,「價格表x僅寫一個騙子」)。
搖搖欲墜:通過「tenant/region/hash(key)」;用於緩存和數據局部性的粘性路由。
領導引理:一位領導者發布「系統性」喬巴(例如「關閉所有RTP窗口」),追隨者發布熱站。
7)可靠性: retrais、idementity、dedup
等效鍵:「(task_type,business_id,窗口)」;重播→相同的收據。
Retrai:指數背靠背+擠壓,嘗試限制,錯誤策略(retry/cancel/compensate)。
Poison-pill:N失敗後快速轉移到DLQ,對所有者表示贊賞。
Dedup:窗口的TTL上的seen-cache(內存+KV)。
Exactly once效果:通過交易日誌/收據確認副作用。
8)管理冗長而艱巨的任務
Chunking:按蹦床、支票/續集細分。
時間盒裝:CPU/IO/網絡 egress限制;中斷並保持進展。
傳奇/補償:服務間步驟的「undo」語義。
Concurrency-caps: 對類型/tenant/地區的同時任務限制。
9)可觀察性和指標
Traces:「trace_id」,傳奇步驟,外部調用。
Metrics (SLI):
Success Rate, error-rate, retry-rate.
Lag直到開始,隊列(長度,p95年齡)。
Latency p50/p95, time-to-complete.
按任務計算1k,egress/ingress。
DLQ rate, poison-pill rate.
SLO(示例):- P0開始≤ 60秒,P1 ≤ 5分鐘;Success ≥ 99.5%;DLQ ≤ 0.1%;Freshness(opershina)≤ 30與p95。
10)審計和可證明性
收據:「receipt_hash」開始/成功/錯誤,關鍵類型(付款,價格表,RTP)的DSSE簽名。
WORM:存儲執行日誌和任務清單。
Custody-of-Chain:誰交付/批準/更改時間表;SoD檢查。
11)安全性和可用性
RBAC/ABAC/ReBAC:誰創建/批準/運行;SoD:「創建付款」≠「批準」。
JIT秘訣:竊聽者通過跳過任務請求具有短TTL的令牌。
隔離:per-tenant/region/網格鍛煉池;sandbox表演。
PII衛生:蒙面/令牌,禁止初學者。
12) FinOps和成本
compute/storage/egress上的預算/上限。
按隊列和SLO排列的Autoscale Workers。
存儲類:熱(7-30天)→ OLAP (6-24個月)→存檔。
成本獎勵計劃:「廉價時鐘」的啟動窗口,egress限制。
13)數據模型(簡化)
14) API合同(管理/集成)
「POST/schedules」-創建時間表(cron/cal, tz,窗口)。
「POST/jobs」-臨時交付;返回「job_id」,「receipt_hash」。
"GET/jobs/{id}-狀態/日誌/收據。
「POST/jobs/{id}/cancel」-帶補償的取消。
「GET/queues/stats」-長度,瀉湖,p95。
Вебхуки: `JobStarted`, `JobSucceeded`, `JobFailed`, `JobDroppedToDLQ`, `SLOViolated`.
15)花花公子(典型場景)
Retry-storm:包括全球支持,提升成癮時間,包括電路斷路器,擊球。
DLQ雪崩:停止接收,優先考慮DLQ分析,緩沖新任務。
領導者倒臺:重新當選,對「雙重出版物」的平均水平進行驗證,進行審計。
提供商Zavis (PSP/KYC):通往儲備的路線,降低投票率/webhook,將交易轉移到檢疫。
泄露的竊賊秘密:召回鑰匙,輪換,在30天內搜索「異常」發射,咆哮正確。
16) iGaming/fintech特點
付款/付款:帶收據的異步喬布斯,隔離「灰色」交易,帶有重復數據消除的隊列。
RTP窗口/限制:日歷關閉,觀察到vs理論RTP,漂移時自動暫停促銷。
價格表/FX/Tax:時間表發布、工件版本、高速緩存強制失效。
附屬機構:轉換對賬,webhook的去世,行為/簽名,爭議托管。
17)質量度量(示例集)
Schedule Adherence:在窗口中啟動的任務比例≥ 99%。
Queue Lag p95:P0 ≤ 60 c,P1 ≤ 5分鐘。
Success/Retry/DLQ Rate: ≥ 99.5% / ≤ 0.4% / ≤ 0.1%.
Idempotency Errors: ≤ 0.01%.
Cost/1k jobs和Egress/job-在預算範圍內。
審計完成:100%的關鍵任務與收據。
18) RACI
19)實施支票
- 確定任務類別,優先級和SLA;定義日歷和時間表。
- 部署Scheduler/Dispatcher/Queue/Workers,並帶有Lead-Election和Sharding。
- 引入冪等性,retrai,DLQ,補償(傳奇)。
- 為用戶配置RBAC/ABAC/ReBAC, SoD和JIT秘密。
- 啟用traces/metrics/logs、dashbords和alerts;SLO и error-budget.
- 關鍵類型的簽名收據(DSSE)和WORM日誌。
- 按成本計算的Autoscale和Cap Alerta (計算/存儲/egress)。
- 花花公子:retry-storm, DLQ雪崩,領導者失敗,提供商退化。
- 測試:每個花花公子的GameDay,註入延遲/錯誤。
- 定期瀏覽時間表、排隊和ROI自動化。
20) FAQ
為什麼cron還不夠?
如果沒有隊列,等效性,鎖定和審計,cron就會中斷故障和時區。
可以將基於時間和活動的驅動程序結合起來嗎?
是的:cron-接管保險;事件-用於反應性。
如何實現「整整一天」?
按鍵,交易效果日誌,收據和偶數副作用。
如何處理「長期」喬布斯?
Chank, Checkpoints, Time-boxing,可以中斷和繼續.
怎麼不要「吃掉」預算?
自動排隊和SLO,重型喬布便宜的手表,僵硬的egress/compute帽。
摘要:規劃師和背景任務是平臺的生產管道。通過內置時間表和隊列、等效性、鎖定和可觀察性、添加收據/審計、隔離特南特和FinOps控制,您可以在任何區域和負載中獲得可預測的運行時間表、快速恢復和合法的操作。