Pohranite zadatke u vremenski segmentiran / prioritetni queue ključan po vremenu dospijeća, pollajte samo zadatke koji dospijevaju sada i predajte ih idempotentnim workerima uz at-least-once isporuku. Nikada ne skenirajte 10 milijuna redaka svaki tick — indeksirajte po vremenu okidanja da svaki poll dotakne samo ono što dospijeva.
Arhitektura
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
