Plate III · Filed under
Distributed Systems
Distributed Systems
7 entries
- 001
Transactional outbox pattern: events that never go missing
Write to the database, then publish to Kafka, and one of them will eventually fail. How an outbox table makes the write and the event a single commit.
Distributed SystemsPostgreSQLReliabilityBackend - 002
Kafka consumer lag: the only metric that tells you the truth
Throughput says how fast you are. Lag says whether you are keeping up. Why lag climbs, why adding consumers stops helping, and why rebalances make it worse.
KafkaMessagingDistributed SystemsBackend - 003
Database connection pool sizing: a pool is a queue with a depth
Every request waits in line for a connection. Little's law says how long the line is, why a bigger pool makes it slower, and how exhaustion cascades.
PostgreSQLBackendPerformanceReliability - 004
Clock skew: why timestamps cannot order events across servers
Two servers never agree on the time, so the one running behind overwrites the one ahead. What each clock is for, and what to sequence with instead.
Distributed SystemsBackendReliabilityTimekeeping - 005
Backpressure: when the consumer is slower than the producer
An unbounded buffer does not fix a speed mismatch, it postpones the crash. Bounded queues, blocking sends and early rejection, and where each one belongs.
BackendDistributed SystemsReliabilityPerformance - 006
Retry storms: exponential backoff, jitter and retry budgets
How synchronised retry waves form, why exponential backoff alone does not prevent them, and what a retry budget buys you that a retry count cannot.
Distributed SystemsReliabilityBackendRetries - 007
Deadline propagation: why chained timeouts add up
A timeout is a per-hop constant. A deadline is a budget the whole request shares. Why a chain of three-second timeouts lets a request run for nine.
Distributed SystemsBackendReliabilityTimeouts