tasks को due time से keyed एक time-bucketed / priority queue में स्टोर करें, केवल अभी 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
