task-গুলোকে due time দিয়ে key করা একটি time-bucketed / priority queue-তে সংরক্ষণ করুন, কেবল এখন due task-গুলো poll করুন, এবং at-least-once delivery সহ idempotent worker-দের কাছে হস্তান্তর করুন। প্রতি tick-এ কখনও ১ কোটি row 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
