Lista de lectura sobre sistemas distribuidos
Introducción
- Lo más difícil de los sistemas distribuidos es cambiar la forma de pensar.
- Esta lista reúne materiales útiles para impulsar ese cambio.
Materiales que invitan a reflexionar
- Una colección de textos que ofrece nuevas perspectivas sobre el diseño de sistemas a gran escala.
- Harvest, Yield and Scalable Tolerant Systems: aplicación práctica de la teoría CAP.
- On Designing and Deploying Internet Scale Services: diseño y despliegue de servicios a escala de Internet.
- The Perils of Good Abstractions: la dificultad de construir APIs/interfaces perfectas.
- Chaotic Perspectives: la imprevisibilidad y el paralelismo en sistemas a gran escala.
- Data on the Outside versus Data on the Inside: dos enfoques para la gestión de datos.
- Memories, Guesses and Apologies: la incertidumbre en el procesamiento de datos.
- SOA and Newton's Universe: un enfoque filosófico de la arquitectura orientada a servicios.
- Building on Quicksand: construir sistemas sobre bases inestables.
- Why Distributed Computing?: por qué es necesaria la computación distribuida.
- A Note on Distributed Computing: conceptos básicos de la computación distribuida.
- Stevey's Google Platforms Rant: la experiencia de Google con plataformas SOA.
Latencia
- La existencia de la latencia y cómo lidiar con ella.
- Latency Exists, Cope!: el impacto arquitectónico de la latencia.
- Latency - the new web performance bottleneck: el nuevo cuello de botella del rendimiento web.
- The Tail At Scale: problemas de latencia en sistemas a gran escala.
Amazon
- Contenido interesante sobre la cultura y la organización de Amazon más que sobre la tecnología.
- A Conversation with Werner Vogels: la transición hacia una arquitectura basada en servicios.
- Discipline and Focus: más sobre la transición arquitectónica de Amazon.
- Vogels on Scalability: la visión de Vogels sobre la escalabilidad.
Google
- Tecnologías de vanguardia en sistemas distribuidos.
- MapReduce: modelo para el procesamiento de datos a gran escala.
- Chubby Lock Manager: gestión distribuida de locks.
- Google File System: sistema de archivos a gran escala.
- BigTable: sistema de almacenamiento distribuido.
- Data Management for Internet-Scale Single-Sign-On: gestión de datos para inicio de sesión único a escala de Internet.
- Dremel: análisis interactivo de datasets a escala web.
- Large-scale Incremental Processing Using Distributed Transactions and Notifications: procesamiento incremental a gran escala mediante transacciones distribuidas.
- Megastore: almacenamiento escalable y de alta disponibilidad para servicios interactivos.
- Spanner: base de datos distribuida global.
- Photon: unión de flujos de datos continuos.
- Mesa: sistema de data warehousing en tiempo real.
Modelos de consistencia
- Encontrar el equilibrio entre consistencia y disponibilidad en el diseño de sistemas.
- CAP Conjecture: compensaciones entre consistencia, disponibilidad y tolerancia a particiones.
- Consistency, Availability, and Convergence: el límite superior de la consistencia.
- CAP Twelve Years Later: la evolución de la teoría CAP.
- Consistency and Availability: la relación entre consistencia y disponibilidad.
- Eventual Consistency: consistencia eventual.
- Avoiding Two-Phase Commit: cómo evitar el commit en dos fases.
- 2PC or not 2PC, Wherefore Art Thou XA?: las limitaciones del commit en dos fases.
- Life Beyond Distributed Transactions: gestión de datos más allá de las transacciones distribuidas.
- If you have too much data, then 'good enough' is good enough: NoSQL y el futuro de la teoría de datos.
- Starbucks doesn't do two phase commit: mecanismos asíncronos.
- You Can't Sacrifice Partition Tolerance: la importancia de la tolerancia a particiones.
- Optimistic Replication: enfoque de consistencia débil.
Teoría
- Artículos que explican elementos importantes del diseño de sistemas distribuidos.
- Distributed Computing Economics: la economía de la computación distribuida.
- Rules of Thumb in Data Engineering: reglas prácticas en ingeniería de datos.
- Fallacies of Distributed Computing: falacias de la computación distribuida.
- Impossibility of distributed consensus with one faulty process: teoría FLP.
- Unreliable Failure Detectors for Reliable Distributed Systems: detectores de fallos para sistemas distribuidos confiables.
- Lamport Clocks: sincronización del tiempo en sistemas distribuidos.
- The Byzantine Generals Problem: el problema de los generales bizantinos.
- Lazy Replication: uso de semántica en servicios distribuidos.
- Scalable Agreement: ordenamiento como servicio.
- Scalable Eventually Consistent Counters over Unreliable Networks: contadores escalables con consistencia eventual sobre redes no confiables.
Lenguajes y herramientas
- Problemas de construir sistemas distribuidos con tecnologías específicas.
- Programming Distributed Erlang Applications: construcción de aplicaciones distribuidas con Erlang y OTP.
Infraestructura
- Principios sólidos para la gestión del tiempo en Internet.
Almacenamiento
- Consistent Hashing and Random Trees: hashing consistente y árboles aleatorios.
- Amazon's Dynamo Storage Service: el servicio de almacenamiento Dynamo de Amazon.
- Paxos Consensus: entender el algoritmo Paxos.
- The Part-Time Parliament: fundamentos de Paxos.
- Paxos Made Simple: explicación sencilla de Paxos.
- Paxos Made Live: perspectiva de ingeniería sobre Paxos.
- Revisiting the Paxos Algorithm: revisión del algoritmo Paxos.
- How to build a highly available system with consensus: cómo construir un sistema de alta disponibilidad con consenso.
- Reconfiguring a State Machine: reconfiguración de una máquina de estados.
- Implementing Fault-Tolerant Services Using the State Machine Approach: implementación de servicios tolerantes a fallos mediante el enfoque de máquina de estados.
Otros artículos sobre consenso
- Mencius: construcción de máquinas de estados replicadas eficientes para WAN.
- In Search of an Understandable Consensus Algorithm: versión ampliada del algoritmo RAFT.
Protocolos de rumor (Epidemic Behaviours)
- La potencia de los protocolos de comunicación basados en rumores.
- Astrolabe: tecnología para monitoreo de sistemas distribuidos y minería de datos.
- Epidemic Computing at Cornell: computación epidémica en Cornell.
- Fighting Fire With Fire: superar límites de escalabilidad usando rumores aleatorios.
- Bi-Modal Multicast: multicast bimodal.
- ACM SIGOPS Operating Systems Review: redes basadas en rumores.
- SWIM: protocolo de membresía de grupos de procesos de estilo epidémico, débilmente consistente y escalable.
P2P
- Chord: protocolo escalable de búsqueda peer-to-peer para aplicaciones de Internet.
- Kademlia: sistema de información peer-to-peer basado en la métrica XOR.
- Pastry: ubicación y enrutamiento de objetos distribuidos para sistemas peer-to-peer a gran escala.
- PAST: utilidad de almacenamiento peer-to-peer persistente a gran escala construida sobre Pastry.
- SCRIBE: infraestructura multicast distribuida a nivel de aplicación y a gran escala construida sobre Pastry.
Resumen de GN⁺
- Los sistemas distribuidos son un campo que exige cambiar la forma de pensar para resolver problemas complejos.
- A través de diversos materiales y artículos, ofrece una comprensión profunda del diseño y la implementación de sistemas distribuidos.
- Esta lista cubre diversos aspectos de los sistemas distribuidos, en especial aporta ideas sobre los modelos de consistencia y los problemas de latencia.
- Puede ser un recurso útil para desarrolladores o investigadores interesados en sistemas distribuidos.
- Como proyectos con funciones similares, se recomiendan Apache Kafka y Apache Cassandra.
Aún no hay comentarios.