due time દ્વારા keyed time-bucketed / priority queue માં tasks સ્ટોર કરો, માત્ર હમણાં due tasks ને poll કરો, અને તેમને at-least-once delivery સાથે idempotent workers ને સોંપો. દર tick પર 10M 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
