Tallenna tehtävät aikaslottiin jaettuun / prioriteettijonoon avaimena eräpäivä (due time), pollaa vain juuri nyt erääntyvät tehtävät ja anna ne idempotenteille workereille at-least-once-toimituksella. Älä koskaan skannaa 10M riviä joka tickillä — indeksoi laukaisuajan mukaan, jotta jokainen polli koskettaa vain sitä, mikä on erääntynyt.
Arkkitehtuuri
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
