2 puntos por GN⁺ 2024-10-21 | 1 comentarios | Compartir por WhatsApp
  • La clave para aprender sistemas distribuidos no está tanto en una tecnología específica, sino en un cambio de mentalidad; esta lista guía por temas los problemas que aparecen al diseñar sistemas a escala de Internet
  • El material se divide en filosofía de diseño, latencia, casos de sistemas a gran escala de Amazon y Google, modelos de consistencia, teoría, herramientas, infraestructura, almacenamiento, algoritmos de consenso, protocolos de gossip y P2P
  • CAP, evitar 2PC, eventual consistency y la replicación optimista muestran los trade-offs operativos que dificultan maximizar al mismo tiempo consistencia y disponibilidad
  • La colección de artículos de Google ofrece casos de implementación de sistemas distribuidos a gran escala como MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon y Mesa, mientras que el material de Amazon también aborda la transición a una arquitectura orientada a servicios y su cultura organizacional
  • Si se sigue la lectura desde Paxos, Raft, FLP, Lamport Clock, Byzantine Generals, Chord, Kademlia y Pastry, se puede ordenar en una sola línea de pensamiento los problemas de consenso, tiempo, replicación y enrutamiento

Mentalidad y perspectiva de diseño

Latencia y servicios a escala de Internet

Papers de sistemas de Google y modelos de consistencia

  • La colección de Google reúne en un solo lugar papers de sistemas a gran escala que pueden considerarse la “rocket science” de los sistemas distribuidos, desde MapReduce hasta Mesa
    • MapReduce
    • Chubby Lock Manager
    • Google File System
    • BigTable
    • Dremel: análisis interactivo de datasets a escala web
    • Megastore: diseño para una implementación de Paxos de baja latencia entre datacenters
    • Spanner: base de datos de Google escalable, multiversión, distribuida globalmente y replicada de forma síncrona
    • Photon: joins tolerantes a fallas y escalables sobre flujos continuos de datos
    • Mesa: data warehouse georreplicado, escalable y casi en tiempo real que almacena datos clave de medición del negocio de publicidad en Internet de Google
  • “Consistency Models” está compuesto por materiales para encontrar el punto de equilibrio entre consistencia y disponibilidad según el entorno del sistema

Teoría, lenguajes, infraestructura y almacenamiento

Consenso, gossip y P2P

1 comentarios

 
GN⁺ 2024-10-21
Opiniones de Hacker News
  • Esta lista parece un poco antigua, y recomiendo la lista de lecturas sobre consenso distribuido de Heidi Howard
    https://github.com/heidihoward/distributed-consensus-reading...

  • Me pareció algo raro ver que se presentara MapReduce de Google como la “ciencia de cohetes” de este campo
    Al revisar, esta lista es de 2014 [1], así que hay que tener cuidado porque la situación cambió mucho desde entonces
    [1] https://news.ycombinator.com/from?site=dancres.github.io

    • Saber eso definitivamente pone todo en contexto. Ya pasaron 10 años desde que salió esta lista, y en ese momento ya habían pasado 10 años desde la publicación del paper de MapReduce
  • Hay una metalista de listas de lectura sobre sistemas distribuidos que armé hace unos 10 años
    También agregué esta lista unos 10 años tarde, y solo el cielo sabe cuántos de los elementos que recopilé siguen vivos hoy
    https://gist.github.com/macintux/6227368

  • También vale la pena ver https://ferd.ca/a-distributed-systems-reading-list.html, que menciona la lista original

    • Hace falta dejar claro para quién son realmente estas listas. No creo que sean listas para alguien que simplemente “quiere aprender sistemas distribuidos
      Pueden servirle a quien está empujando los límites o buscando nuevos enfoques, pero para el resto se siente como preguntar cómo resolver una ecuación cuadrática y recibir 100 papers de teoría de categorías
      La lista de Fred Herbert es más reciente que la original, pero incluso él dice que no es completa. Aunque señala “Designing Data-Intensive Applications” como lectura esencial, también habla como si para entenderla de verdad primero hubiera que leer muchos papers
      Cuando estas listas se presentan como prerequisito para entender, pueden sentirse como una forma de subir la barrera de entrada
      Gracias al trabajo de otras personas acumulado durante décadas, no hace falta leer 100 papers sobre nanokernels para convertirse en un usuario eficaz de Linux. Construir un buen sistema operativo desde cero sigue siendo difícil, pero el 99% no necesita hacerlo; basta con usar bien las herramientas que ya existen
      Con los sistemas distribuidos pasa lo mismo: si no estás empujando la frontera, no tiene por qué ser tan difícil
      Si eres un ingeniero de software que quiere experiencia práctica más que profundizar en investigación, conviene construir algo con NATS [1] o YugaByte [2], o hacer un tutorial práctico como [3]
      “Designing Data-Intensive Applications” también vale la pena. Es uno de esos libros que mejora cada vez que lo relees, así que puedes leerlo aunque no hayas leído 100 papers. Si aparece algo que no entiendes, puedes preguntar y pedir ayuda; está bien saltarse la enorme lista de lecturas
      1: https://nats.io/
      2: https://www.yugabyte.com/
      3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
  • ¿Y aun así no hay ninguna mención de la tecnología CRDT?

    • Porque es material de hace 10 años