Timeline of Distributed Systems

Distributed systems from self-stabilization in 1974 to FoundationDB’s published design in 2021: causality, consensus, failure limits, replicated data, large-scale storage, and cluster orchestration.

Category
Engineering & Technology
Tags
computing internet
Events
23 events 1974–2021
Generated
by gpt-6-astra
  1. 1974: Dijkstra introduces self-stabilization

    Edsger Dijkstra described distributed systems that could return to correct behavior from an arbitrary starting state. The idea framed fault recovery as a property of an algorithm, rather than requiring an external operator to restore every component to a known state.

    Wikipedia
  2. 1978: Lamport formalizes logical time

    Leslie Lamport defined a happened-before relation and logical clocks for distributed events. Systems could order operations consistently with causality without assuming synchronized physical clocks, although a scalar timestamp alone could not fully determine whether two events were causally related.

    Wikipedia
  3. 1982: Researchers formulate the Byzantine generals problem

    Leslie Lamport, Robert Shostak, and Marshall Pease studied agreement when participants could send conflicting information. Without unforgeable signatures, the paper’s agreement model required more than three times as many participants as the number of faults it could tolerate.

    Wikipedia
  4. 1984: Birrell and Nelson describe remote procedure calls

    Andrew Birrell and Bruce Nelson published an implementation of remote procedure calls, allowing programs to invoke operations on another machine through procedure-like interfaces. The design addressed naming, argument transfer, and communication failures behind the apparent simplicity of a function call.

    Wikipedia
  5. 1985: Gelernter presents Linda’s tuple spaces

    David Gelernter described Linda’s generative communication model, in which processes exchanged tuples through a shared logical space. Senders and receivers did not need to address one another directly, offering a different coordination model from explicit point-to-point messages.

    Wikipedia
  6. 1985: Chandy and Lamport capture distributed snapshots

    K. Mani Chandy and Leslie Lamport described how to record a consistent global state while a distributed computation continued. Marker messages coordinated local snapshots and in-transit messages without requiring every process to stop at the same physical instant.

    Wikipedia
  7. 1985: FLP establishes a limit on consensus

    Michael Fischer, Nancy Lynch, and Michael Paterson proved that deterministic consensus could not guarantee termination in a fully asynchronous system if even one process might crash. The result depended on those assumptions; practical protocols could use timing assumptions or other mechanisms to make progress.

    Wikipedia
  8. 1987: Herlihy and Wing define linearizability

    Maurice Herlihy and Jeannette Wing introduced linearizability in "Axioms for Concurrent Objects": each operation on a shared object appeared to take effect at one instant between its invocation and response. The condition gave concurrent implementations a correctness target that respected real-time ordering.

    Wikipedia
  9. 1988: Fidge and Mattern publish vector-clock methods

    Colin Fidge and Friedemann Mattern independently described vector-clock techniques for tracking causal relationships. Vectors could distinguish concurrent events from causally ordered ones, preserving information that a single scalar logical clock could not express.

    Wikipedia
  10. 1998: Lamport publishes the Paxos protocol

    Leslie Lamport’s "The Part-Time Parliament" presented Paxos, developed earlier, as a protocol for reaching agreement despite process failures. Intersecting quorums preserved agreement, while progress required conditions beyond unrestricted asynchronous execution.

    Wikipedia
  11. 1999: Castro and Liskov make Byzantine replication practical

    Miguel Castro and Barbara Liskov presented Practical Byzantine Fault Tolerance for replicated services. The protocol reduced the cost of agreement in ordinary operation while handling arbitrary behavior by a bounded number of replicas, rather than only crashes.

    Wikipedia
  12. 2001: Chord distributes key lookup across peers

    Ion Stoica and colleagues introduced Chord, assigning keys and nodes positions in an identifier ring. Routing tables let a node locate the peer responsible for a key without maintaining a complete directory of the network.

    Wikipedia
  13. 2002: Gilbert and Lynch prove the CAP limitation

    Seth Gilbert and Nancy Lynch formalized Eric Brewer’s conjecture about consistency, availability, and partitions. During a network partition, the modeled system could not guarantee both linearizable operations and completion of every request at a non-failing node.

    Wikipedia
  14. 2003: Google publishes its distributed file-system design

    Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung described the Google File System. Large replicated chunks, centralized metadata, and recovery from routine machine failures supported data-intensive workloads across clusters of commodity computers.

    Wikipedia
  15. 2004: MapReduce hides much of cluster coordination

    Jeffrey Dean and Sanjay Ghemawat presented MapReduce, expressing large computations as mapping and reduction steps. The runtime handled partitioning, scheduling, communication, and retries, letting application authors delegate much of the work of coordinating a cluster.

    Wikipedia
  16. 2006: Bigtable describes scalable structured storage

    Fay Chang and colleagues published Bigtable’s design as a distributed store organized by row keys, column families, and timestamps. Its data model and partitioning approach influenced later systems for large datasets that did not require a conventional relational interface.

    Wikipedia
  17. 2007: Amazon describes Dynamo’s availability tradeoffs

    Giuseppe DeCandia and colleagues presented Dynamo, a highly available key-value store that used replication, object versioning, and application-assisted conflict resolution. An internal Amazon system that backed core services such as shopping carts, it favored continued operation under failures and was distinct from the later DynamoDB service.

    Wikipedia
  18. 2011: Researchers formalize conflict-free replicated data

    Marc Shapiro and colleagues set out conditions for conflict-free replicated data types. Replicas could accept updates independently and converge once updates were delivered, provided the data type and merge or operation rules satisfied the required mathematical properties.

    Wikipedia
  19. 2011: LinkedIn publishes Kafka’s distributed-log design

    Jay Kreps, Neha Narkhede, and Jun Rao described Kafka as a distributed messaging system for log processing. Partitioned, persistent logs and consumer-managed positions supported high-throughput data pipelines and replay by independent consumers.

    Wikipedia
  20. 2012: Spanner exposes uncertainty in physical time

    Google’s Spanner paper described globally distributed transactions using replication and a clock interface called TrueTime. Explicit uncertainty bounds and commit waits helped make transaction ordering consistent with real time across data centers.

    Wikipedia
  21. 2014: Raft makes consensus easier to understand

    Diego Ongaro and John Ousterhout presented Raft, dividing replicated-log consensus into leader election, log replication, and safety rules. The protocol targeted understandability while handling crash failures; it was not designed to tolerate malicious replicas.

    Wikipedia
  22. 2015: Kubernetes releases version 1.0

    Kubernetes reached its first stable release for orchestrating containerized applications across machines. Controllers repeatedly reconciled observed cluster state with a declared desired state, making recovery and scheduling ongoing control processes rather than one-time deployment actions.

    Wikipedia
  23. 2021: FoundationDB documents deterministic simulation testing

    The FoundationDB team published its distributed transactional key-value-store design. The paper described testing a simulated cluster with reproducible schedules and injected failures, making rare fault combinations easier to investigate before changes reached production.

    Wikipedia