Cómo ser bueno en informática distribuida

Esta es una pregunta bastante amplia, por lo que podría significar una serie de cosas diferentes. Voy a interpretarlo como “Quiero construir sistemas distribuidos, ¿qué necesito saber?”

Te sugiero que comiences leyendo algunos documentos importantes en el campo.

La temporalidad (el flujo del tiempo) es un desafío serio en los sistemas distribuidos porque queremos saber cuándo sucedió algo.

Entonces, comencemos con los relojes Lamport: http://amturing.acm.org/p558-lam…

Otro modelo que se usa con frecuencia son los relojes vectoriales:

http://zoo.cs.yale.edu/classes/c…

http://citeseerx.ist.psu.edu/vie…

O un servidor horario:

http://www.cs.utexas.edu/~mok/cs…

Otro desafío es proporcionar algún mecanismo para garantizar un comportamiento consistente ante fallas. En una sola computadora, generalmente no hay partes que desaparezcan y se espera un avance. En un sistema distribuido, las cosas fallan todo el tiempo (el problema de la escala).

Entonces, ¿cómo construimos un sistema en el que podamos llegar a un acuerdo de que algo ha sucedido? Este es el problema del consenso. Una solución común aquí es el protocolo Paxos.

http: //lamport.azurewebsites.net…

Hay otros enfoques, pero Paxos lo ayudará a comenzar. Es engañosamente simple (lo que significa que es difícil hacerlo bien).

Apache Zookeeper es un modelo de servidor centralizado (Apache ZooKeeper – Home)

Mover datos es un gran problema. Una posibilidad es construir un gran sistema de archivos distribuido. Ha habido varios de ellos (NFS y Andrew se hicieron en los años 80, por ejemplo). Resulta que son difíciles de conseguir y terminas con varios cuellos de botella, generalmente en la red o en el disco. Los sistemas de archivos de alto rendimiento como Lustre, CephFS, ZFS, etc. han sido comunes, por lo que, los sindicatos, pensaron que probablemente argumentaría que la solución de almacenamiento compartido en VMS fue probablemente la primera (usaron un administrador de bloqueo distribuido).

Google resolvió este problema cambiando las aplicaciones. En lugar de crear un sistema de archivos, crearon una biblioteca y lo llamaron el “Sistema de archivos de Google”. http://xpgc.vicp.net/course/svt/…

Esta idea se convirtió en la base de Apache Hadoop.

Esta es realmente solo una lista de inicio, pero debería generar muchas preguntas sobre sistemas distribuidos.

El MIT tiene un programa de estudios para su clase, con lecturas en línea. 6.824 Horario: Primavera 2014

Los sistemas distribuidos son difíciles de construir.