tasks एका time-bucketed / priority queue मध्ये due time नुसार keyed करून साठवा, फक्त आत्ता due असलेल्या tasks poll करा, आणि त्या at-least-once delivery सह idempotent workers ना द्या. दर 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
