2 Punkte von GN⁺ 2024-10-21 | 1 Kommentare | Auf WhatsApp teilen
  • Der Kern beim Lernen verteilter Systeme liegt weniger in bestimmten Technologien als in einem Wandel der Denkweise; diese Liste führt thematisch durch die Probleme, die beim Entwurf von Systemen in Internetgröße auftreten
  • Die Materialien sind gegliedert in Designphilosophie, Latenz, Fallstudien großer Systeme von Amazon und Google, Konsistenzmodelle, Theorie, Tools, Infrastruktur, Storage, Konsensalgorithmen, Gossip-Protokolle und P2P
  • CAP, die Vermeidung von 2PC, eventual consistency und optimistische Replikation zeigen die operativen Trade-offs, weil Konsistenz und Verfügbarkeit kaum gleichzeitig maximiert werden können
  • Die Google-Papers liefern Implementierungsbeispiele für große verteilte Systeme wie MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon und Mesa; die Amazon-Materialien behandeln zugleich den Wandel zu einer servicebasierten Architektur und die Organisationskultur
  • Wer Paxos, Raft, FLP, Lamport Clock, Byzantine Generals sowie Chord, Kademlia und Pastry in dieser Reihenfolge liest, kann die Themen Konsens, Zeit, Replikation und Routing als zusammenhängenden Bogen einordnen

Denkweise und Designperspektive

Latenz und Services in Internetgröße

Google-System-Papers und Konsistenzmodelle

Theorie, Sprachen, Infrastruktur, Storage

Konsens, Gossip, P2P

1 Kommentare

 
GN⁺ 2024-10-21
Hacker-News-Kommentare
  • Diese Liste wirkt etwas veraltet; ich empfehle Heidi Howards Leseliste zu Distributed Consensus
    https://github.com/heidihoward/distributed-consensus-reading...

  • Es kam mir seltsam vor, dass Googles MapReduce als die „Rocket Science“ dieses Bereichs dargestellt wird
    Beim Nachsehen stellte sich heraus, dass diese Liste von 2014 stammt [1]; heute hat sich die Lage stark verändert, daher ist Vorsicht geboten
    [1] https://news.ycombinator.com/from?site=dancres.github.io

    • Mit diesem Wissen ist der Kontext deutlich klarer. Seit Erscheinen dieser Liste sind 10 Jahre vergangen, und schon damals war das MapReduce-Paper bereits 10 Jahre alt
  • Es gibt eine Meta-Liste von Leselisten zu verteilten Systemen, die ich vor etwa 10 Jahren erstellt habe
    Auch diese Liste habe ich ungefähr 10 Jahre zu spät ergänzt, und wer weiß, wie viele der Einträge, die ich gesammelt habe, heute noch erreichbar sind
    https://gist.github.com/macintux/6227368

  • Ebenfalls sehenswert ist https://ferd.ca/a-distributed-systems-reading-list.html, wo die ursprüngliche Liste erwähnt wird

    • Man muss klarstellen, für wen solche Listen eigentlich gedacht sind. Meiner Meinung nach ist das keine Liste für jemanden, der einfach „verteilte Systeme lernen“ will
      Für Leute, die Grenzen ausloten oder neue Ansätze suchen, kann sie hilfreich sein; für alle anderen fühlt es sich so an, als würde man fragen, wie man quadratische Gleichungen löst, und bekäme 100 Papers zur Kategorientheorie
      Fred Herberts Liste ist aktueller als die ursprüngliche, aber nach seinen eigenen Worten ebenfalls nicht vollständig. Er nennt „Designing Data-Intensive Applications“ als Pflichtlektüre, sagt aber sinngemäß, dass man für echtes Verständnis zuerst viele Papers lesen müsse
      Wenn solche Listen als Voraussetzung fürs Verständnis präsentiert werden, kann das wie künstliches Hochsetzen der Einstiegshürde wirken
      Dank der über Jahrzehnte gewachsenen Arbeit anderer muss man nicht 100 Papers über Nanokernel lesen, um ein effektiver Linux-Nutzer zu werden. Ein gutes Betriebssystem von Grund auf zu bauen, ist weiterhin schwierig, aber 99 % müssen das nicht tun; es reicht, vorhandene Tools sicher zu beherrschen
      Bei verteilten Systemen ist es ähnlich: Wenn man nicht die Forschungsfront vorantreibt, muss es nicht derart schwierig sein
      Software Engineers, die statt tief in die Forschung einzusteigen lieber Praxiserfahrung sammeln wollen, sollten mit NATS [1] oder YugaByte [2] etwas bauen oder ein praktisches Tutorial wie [3] durcharbeiten
      Auch „Designing Data-Intensive Applications“ ist lesenswert. Es ist eines dieser Bücher, die bei jedem erneuten Lesen besser werden; man kann es einfach lesen, auch ohne 100 Papers gelesen zu haben. Wenn man auf unverständliche Stellen stößt, kann man Fragen stellen und sich Hilfe holen, und die riesigen Leselisten ruhig überspringen
      1: https://nats.io/
      2: https://www.yugabyte.com/
      3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
  • Und trotzdem keine Erwähnung von CRDT-Technologie?

    • Weil das Material 10 Jahre alt ist