tasks کو time-bucketed / priority queue میں store کریں جو due time سے keyed ہو، صرف وہی tasks poll کریں جو ابھی due ہیں، اور انہیں idempotent workers کو at-least-once delivery کے ساتھ دیں۔ ہر tick پر کبھی 1 کروڑ rows scan نہ کریں — fire time کے حساب سے index کریں تاکہ ہر poll صرف due چیزوں کو چھوئے۔
فن تعمیر
API ─▶ Task store (DB/Redis ZSET, score = due_ts) ── 10M tasks, sharded
│
Poller (leader per partition) ── ZPOPMIN due<=now ──▶ Ready queue (Kafka)
│ leader election (etcd/ZK) │
▼ ▼
other pollers idle/standby Worker pool (idempotent)
└─ ack ✔ / retry ✖ ─▶ DLQ
