tasks ను due time ద్వారా keyed అయిన time-bucketed / priority queue లో store చేయండి, ఇప్పుడు 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
