<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Distributed Systems on Rik Kisnah - Blog</title><link>https://www.rik-kisnah.ai/tags/distributed-systems/</link><description>Recent content in Distributed Systems on Rik Kisnah - Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 24 Jan 2023 09:00:00 -0800</lastBuildDate><atom:link href="https://www.rik-kisnah.ai/tags/distributed-systems/feed.xml" rel="self" type="application/rss+xml"/><item><title>Design a Distributed Job Scheduler</title><link>https://www.rik-kisnah.ai/teach/systems/design-a-distributed-job-scheduler/</link><pubDate>Tue, 24 Jan 2023 09:00:00 -0800</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-a-distributed-job-scheduler/</guid><description>A to-do list many workers pull from. Run each job once, on time, even when a worker dies half way through. The three words that make it work: lease, retry, idempotent.</description></item><item><title>Design an Object Store</title><link>https://www.rik-kisnah.ai/teach/systems/design-an-object-store/</link><pubDate>Tue, 09 Nov 2021 09:00:00 -0800</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-an-object-store/</guid><description>Put a file in, get the same bytes back ten years later, from any of a hundred million files, after a hundred disks have died. Separate the names from the bytes, cut every file into pieces with spares, and check the pieces forever.</description></item><item><title>Design a Distributed Lock</title><link>https://www.rik-kisnah.ai/teach/systems/design-a-distributed-lock/</link><pubDate>Tue, 11 May 2021 09:00:00 -0700</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-a-distributed-lock/</guid><description>Only one process at a time may touch the thing. Easy on one machine. Across a network, the lock holder can die, pause, or believe it still holds the lock when it does not. Leases, fencing tokens, and the honest answer: a lock cannot make an unsafe operation safe.</description></item><item><title>Design a Unique ID Generator</title><link>https://www.rik-kisnah.ai/teach/systems/design-a-unique-id-generator/</link><pubDate>Tue, 11 Feb 2020 09:00:00 -0800</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-a-unique-id-generator/</guid><description>Hand out numbers that are unique across a thousand machines, roughly in time order, without those machines ever talking to each other. Pack a timestamp, a machine id and a counter into 64 bits and you are done. Then the clock goes backwards.</description></item><item><title>Consistent Hashing</title><link>https://www.rik-kisnah.ai/teach/systems/consistent-hashing/</link><pubDate>Tue, 19 Mar 2019 09:00:00 -0800</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/consistent-hashing/</guid><description>Put the servers on a clock face. Put each key on the clock face too. Walk clockwise to find its server. Add a server and only the keys just behind it move. This is how caches, key-value stores and load balancers all share work without a reshuffle.</description></item><item><title>Design a Rate Limiter</title><link>https://www.rik-kisnah.ai/teach/systems/design-a-rate-limiter/</link><pubDate>Tue, 20 Mar 2018 09:00:00 -0700</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-a-rate-limiter/</guid><description>A jar of tickets that refills every second. Take one to enter. When the jar is empty, wait. Then the real questions: where does the jar live, and what happens when the jar breaks?</description></item><item><title>Design a Message Queue</title><link>https://www.rik-kisnah.ai/teach/systems/design-a-message-queue/</link><pubDate>Tue, 12 Sep 2017 09:00:00 -0700</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-a-message-queue/</guid><description>A post box between the person who writes letters and the person who reads them. The writer does not wait, the reader does not lose letters, and nobody has to be awake at the same time. Then: what if the post box burns down?</description></item><item><title>Design a Key-Value Store</title><link>https://www.rik-kisnah.ai/teach/systems/design-a-key-value-store/</link><pubDate>Tue, 07 Feb 2017 09:00:00 -0800</pubDate><guid>https://www.rik-kisnah.ai/teach/systems/design-a-key-value-store/</guid><description>A giant dictionary spread across many machines. Put a value under a key, get it back later, even when machines die. Partition, replicate, and decide what &amp;rsquo;later&amp;rsquo; means when two copies disagree.</description></item></channel></rss>