All posts / tag
#distributed systems
-
Booking the last concert seat
A worked ticket-booking design with PostgreSQL row locks, expiring holds, payment retries, and the late confirmation that cannot take a seat back.
-
One slow consumer can stop every RabbitMQ publisher
A slow RabbitMQ consumer fills one queue until shared resource alarms block every publisher. Trace the pressure, the loss boundaries, and the safer designs.
-
Now depends on who you ask
UTC fixes how time is written down. It does not settle whose clock won, when a transaction sampled it, or which event happened first.
-
The event was delivered. The work was not.
Event fan-out can reach every subscriber while the business operation remains unfinished. See which consumers need completion state, retries, and an owner.
-
The transaction stops at the network
A database commit and an HTTP call cannot share one rollback. See what outbox, idempotency, inbox, sagas, and two-phase commit can prove after a crash.
-
Exactly once, where?
Kafka can store one record while your application charges twice. Follow acknowledgements, offsets, retries, and transactions to see what Kafka can prove.
-
Redis keys need owners
Raw Redis locks and claims had no shared owner, expiry, or failure rule. A small registry made every coordination key reviewable and operable.
-
Delayed delivery without unbounded queues
A fixed binary ladder turns arbitrary delivery delays into bounded RabbitMQ topology with message TTLs, dead-letter routing, and powers of two, without plugins.