paint-brush
Revelando la arquitectura: ¡Documentos clave para comprender los sistemas distribuidos!por@bhavdeepsethi
715 lecturas
715 lecturas

Revelando la arquitectura: ¡Documentos clave para comprender los sistemas distribuidos!

por Bhavdeep Sethi6m2024/04/28
Read on Terminal Reader

Demasiado Largo; Para Leer

Con la llegada de Internet y los dispositivos más inteligentes, la cantidad de datos que deben procesarse se ha disparado. Actividades simples del día a día como pedir un Uber, ver un programa en Netflix, una simple búsqueda en Google, comprar en línea o interactuar con las redes sociales, todas acciones triviales que damos por sentado están impulsadas por cientos de servicios de distribución. Todos estos servicios se basan en algunos documentos fundamentales en sistemas distribuidos. Si bien esta lista definitivamente no es exhaustiva, estos son algunos de mis artículos favoritos que han tenido un impacto masivo en el mundo de los sistemas distribuidos.
featured image - Revelando la arquitectura: ¡Documentos clave para comprender los sistemas distribuidos!
Bhavdeep Sethi HackerNoon profile picture
0-item


Un sistema distribuido es aquel en el que la falla de una computadora que ni siquiera sabía que existía puede dejar su propia computadora inutilizable.


Esta famosa cita de Leslie Lamport, ganadora del premio AM Turing, resume los desafíos en la construcción y el mantenimiento de un sistema distribuido. Pero ¿por qué se necesitan sistemas tan complicados?


Con la llegada de Internet y los dispositivos más inteligentes, la cantidad de datos que deben procesarse se ha disparado. Actividades simples del día a día como pedir un Uber, ver un programa en Netflix, una simple búsqueda en Google, comprar en línea o interactuar con las redes sociales, todas acciones triviales que damos por sentado están impulsadas por cientos de servicios de distribución. Todos estos servicios se basan en algunos documentos fundamentales en sistemas distribuidos.


Si bien esta lista definitivamente no es exhaustiva, estos son algunos de mis artículos favoritos que han tenido un impacto masivo en el mundo de los sistemas distribuidos.


Teorema de la PAC

Si bien no es un artículo tradicional, Eric Brewer lo presentó por primera vez como una conjetura en un discurso de apertura en el Simposio ACM sobre Principios de Computación Distribuida (PODC) de 2000. Posteriormente, el artículo fue formalizado y probado por Nancy Lynch y Seth Gilbert en el artículo La conjetura de Brewer y la viabilidad de servicios web consistentes, disponibles y tolerantes a la partición.


El teorema CAP de Eric Brewer es un concepto fundamental en la teoría de sistemas distribuidos, que establece que es imposible que un almacén de datos distribuido proporcione simultáneamente más de dos de tres garantías: coherencia, disponibilidad y tolerancia de partición. Todos los demás artículos mencionados aquí aplican el principio anterior y hacen las concesiones necesarias en su sistema.


El teorema CAP siempre genera muchas discusiones basadas en la comprensión del artículo por parte de los lectores. " Una crítica del teorema CAP " de Martin Kleppmann proporciona un mejor marco para discutir las compensaciones.


Paxos simplificado

En este artículo fundamental de 2001, Leslie Lamport presenta el algoritmo Paxos para lograr consenso en un sistema distribuido de una manera fácil y accesible. Los protocolos de consenso basados en Paxos forman la columna vertebral de muchas bases de datos distribuidas, sistemas de almacenamiento, plataformas de mensajería y servicios de coordinación utilizados por muchas empresas de tecnología. Influyó mucho en otras tecnologías como Chubby de Google, Spanner de Google, Apache ZooKeeper, Apache BookKeeper, etc.

Paxos se utiliza comúnmente para la elección de líderes.


El sistema de archivos de Google

El documento Google File System (GFS) presenta un sistema de archivos distribuido escalable para grandes aplicaciones distribuidas con uso intensivo de datos en hardware básico, que es la base de muchos sistemas de archivos distribuidos que siguieron. GFS sirvió como una gran inspiración para HDFS, el sistema de archivos distribuido utilizado por el marco Apache Hadoop y, finalmente, Amazon S3 (aunque s3 es fundamentalmente diferente).


MapReduce: procesamiento de datos simplificado en grandes clústeres

Este artículo presenta el modelo de programación MapReduce, que demuestra un enfoque escalable para procesar conjuntos de datos a gran escala utilizando una infraestructura informática distribuida. MapReduce desempeñó un papel fundamental en la revolución del "big data", permitiendo a las organizaciones aprovechar el poder de la informática distribuida para analizar y obtener información a partir de conjuntos de datos masivos. Puede ver cómo la combinación de GFS y MapReduce permitió a Google procesar Petabytes de datos para organizar los datos de "Internet".


El documento MapReduce (junto con GFS) inspiró el desarrollo de un ecosistema completo de herramientas y bibliotecas construidas alrededor de Apache Hadoop, como Apache Hive (infraestructura de almacén de datos construida sobre Hadoop), Apache Pig (lenguaje de flujo de datos de alto nivel para Hadoop), Apache Spark (motor de procesamiento de datos en memoria), Apache HBase (base de datos NoSQL distribuida) y muchos otros.


Bigtable: un sistema de almacenamiento distribuido para datos estructurados

El documento Bigtable representa un sistema de almacenamiento distribuido para la gestión de datos estructurados en Google. Una vez que MapReduce y GFS permitieron a Google procesar datos a escala de manera rentable, el siguiente paso fue permitir el acceso a los datos de una manera confiable y altamente disponible. BigTable pudo proporcionar una solución flexible y de alto rendimiento para aplicaciones como indexación web, Google Earth y Google Finance.


Así como MapReduce revolucionó la era de los "grandes datos", el papel BigTable fue la fuerza impulsora de la era "NoSQL". Muchos de los principios de diseño y conceptos arquitectónicos presentados en el documento de Bigtable se usaron en tecnologías como "Apache HBase", "Cassandra", "MongoD", etc. Si bien algunas de estas aplicaciones pueden usar diferentes modelos de datos (por ejemplo, MongoDB), comparten principios comunes como escalabilidad horizontal, tolerancia a fallas y fragmentación automática.


Dynamo: la tienda de valor clave de alta disponibilidad de Amazon

El artículo de Dynamo presenta el diseño y la implementación de una tienda de valores clave de alta disponibilidad desarrollada por Amazon. Dynamo abordó la necesidad de acceso en tiempo real a datos altamente dinámicos, como los artículos de su carrito de compras. El documento introdujo el concepto de "consistencia eventual" como un principio central del diseño de sistemas distribuidos, lo que permite garantías de coherencia relajadas para lograr alta disponibilidad y rendimiento (¡hola teorema CAP!).


Del propio documento, "En comparación con Bigtable, Dynamo se dirige a aplicaciones que solo requieren acceso clave/valor con un enfoque principal en la alta disponibilidad donde las actualizaciones no se rechazan incluso después de particiones de red o fallas del servidor".


Al igual que BigTable, el documento de Dynamo influyó mucho en tecnologías posteriores como Riak, Voldemort, Cassandra e incluso tecnologías de transmisión de eventos como Apache Kafka.


Cassandra: un sistema de almacenamiento estructurado descentralizado

El rápido crecimiento de Facebook requirió una solución de base de datos capaz de manejar cantidades masivas de datos y soportar una gran cantidad de usuarios simultáneos. Si bien BigTable y Dynamo fueron bastante influyentes por derecho propio, Cassandra fue la primera tecnología que fue un paso por delante de las demás. Al publicarlo como una contribución de código abierto bajo la licencia Apache junto con la publicación del artículo , Facebook jugó un papel decisivo al permitir el acceso a dicha tecnología a toda la industria.


Cassandra se diferenciaba de los dos anteriores al proporcionar un modelo de coherencia ajustable, que permitía a los usuarios elegir entre una coherencia fuerte (como BigTable) y una coherencia eventual (como Dynamo) en función de los requisitos de su aplicación.


ZooKeeper: coordinación sin esperas para sistemas a escala de Internet

Este artículo presenta Apache ZooKeeper y presenta sus principios de diseño y algoritmos para proporcionar servicios de coordinación altamente confiables y escalables en sistemas distribuidos. Antes de la introducción de ZooKeeper, los desarrolladores de software a menudo tenían que implementar sus propias soluciones ad hoc para la coordinación distribuida y el consenso en sistemas distribuidos.


ZooKeeper propuso un servicio centralizado para la coordinación distribuida, ofreciendo primitivas como bloqueos distribuidos, elección de líder y gestión de configuración. Esto permitió simplificar el desarrollo de aplicaciones distribuidas al descargar una lógica de coordinación compleja a ZooKeeper. Uno de los casos de uso más comunes del uso de Zookeeper es el descubrimiento de servicios.


Apache Kafka: un sistema de mensajería distribuida para el procesamiento de registros

Este artículo presenta Apache Kafka, un sistema de mensajería distribuida diseñado para el procesamiento de flujos de eventos de alto rendimiento y tolerante a fallas. La publicación de Kafka como artículo de investigación y su lanzamiento de código abierto como proyecto Apache lo establecieron como un sistema de mensajería estándar para arquitecturas basadas en eventos y procesamiento de datos en tiempo real altamente escalable y tolerante a fallas.


Kafka introdujo un sistema de mensajería altamente escalable y tolerante a fallas diseñado para manejar grandes volúmenes de flujos de datos en tiempo real. Kafka fue bastante influyente al permitir el desarrollo de la arquitectura Lambda, que combina procesamiento por lotes y procesamiento de flujo para manejar grandes volúmenes de datos con baja latencia y alto rendimiento.


Conjuntos de datos distribuidos resilientes: una abstracción tolerante a fallos para la informática en clústeres en memoria

Este artículo presenta los conjuntos de datos distribuidos resistentes (RDD), la abstracción central de Apache Spark, que permite el procesamiento de datos en memoria tolerante a fallas en clústeres distribuidos. El motor de ejecución en memoria de Spark proporciona un rendimiento significativamente más rápido en comparación con MapReduce (que tiene un modelo de ejecución basado en disco), especialmente para algoritmos iterativos, aprendizaje automático y análisis interactivos.


Estos artículos cubren una amplia gama de temas en sistemas distribuidos, incluidos sistemas de almacenamiento, algoritmos de consenso, tolerancia a fallas y escalabilidad. Leerlos proporcionará una base sólida en los principios y prácticas de construcción y gestión de sistemas distribuidos.


Si está comenzando su viaje en sistemas distribuidos y desea aprender más, o ya es un experto y simplemente desea actualizar sus conceptos básicos, no hay mejor manera de aprender que leyendo algunos de estos artículos fundamentales sobre sistemas distribuidos.