Build log
Distributed job scheduler: the design decisions in depth
Why the jobs table is the queue, why MySQL and not Postgres, why Cassandra only for history, and how leases, fencing tokens and idempotency keys keep at-least-once honest. With the alternatives I rejected and the SQL behind each decision.
onSystem Design postsDatabase Internals postsGo posts
12 min read · Part 2 of Building a distributed job scheduler