task हरूलाई due time अनुसार key गरिएको time-bucketed / priority queue मा भण्डारण गर्नुहोस्, अहिले due भएका task मात्र poll गर्नुहोस्, र at-least-once delivery सहित idempotent worker हरूलाई सुम्पनुहोस्। हरेक tick मा 1 करोड 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
