Definición
Un sistema distribuido, también conocido como computación distribuida, es un sistema con múltiples componentes ubicados en diferentes máquinas que se comunican y coordinan acciones para aparecer como un único sistema coherente ante el usuario final.
Resumen
Las máquinas que forman parte de un sistema distribuido pueden ser ordenadores, servidores físicos, máquinas virtuales, contenedores o cualquier otro nodo que pueda conectarse a la red, tener memoria local y comunicarse mediante el paso de mensajes.
Hay dos formas generales en las que funcionan los sistemas distribuidos:
- Cada máquina trabaja hacia un objetivo común y el usuario final ve los resultados como una unidad cohesionada.
- Cada máquina tiene su propio usuario final y el sistema distribuido facilita la compartición de recursos o servicios de comunicación.
Aunque los sistemas distribuidos pueden ser a veces oscuros, suelen tener tres características principales: todos los componentes se ejecutan de forma concurrente, no hay un reloj global y todos los componentes fallan independientemente de los demás.
Beneficios y desafíos de los sistemas distribuidos
Hay tres razones por las que los equipos generalmente deciden implementar sistemas distribuidos:
- Escalabilidad horizontal-Debido a que la computación ocurre de forma independiente en cada nodo, es fácil y generalmente barato añadir nodos y funcionalidades adicionales según sea necesario.
- Fiabilidad-La mayoría de los sistemas distribuidos son tolerantes a los fallos ya que pueden estar formados por cientos de nodos que trabajan juntos. El sistema generalmente no experimenta ninguna interrupción si una sola máquina falla.
- Rendimiento-Los sistemas distribuidos son extremadamente eficientes porque las cargas de trabajo se pueden dividir y enviar a múltiples máquinas.
- Programación-Un sistema distribuido tiene que decidir qué trabajos deben ejecutarse, cuándo deben ejecutarse y dónde deben ejecutarse. Los programadores, en última instancia, tienen limitaciones, lo que conduce a un hardware infrautilizado y a tiempos de ejecución impredecibles.
- Latencia: cuanto más distribuido esté su sistema, más latencia puede experimentar con las comunicaciones. Esto a menudo lleva a los equipos a hacer concesiones entre la disponibilidad, la consistencia y la latencia.
- Observabilidad: la recopilación, el procesamiento, la presentación y la supervisión de las métricas de uso del hardware para grandes clústeres es un reto importante.
Sin embargo, los sistemas distribuidos no están exentos de desafíos. Los complejos procesos de diseño arquitectónico, construcción y depuración que se requieren para crear un sistema distribuido eficaz pueden ser abrumadores.
Tres desafíos más que puede encontrar incluyen:
Cómo funciona un sistema distribuido
Las arquitecturas de hardware y software se utilizan para mantener un sistema distribuido. Todo debe estar interconectado-las CPUs a través de la red y los procesos a través del sistema de comunicación.
Tipos de sistemas distribuidos
Los sistemas distribuidos generalmente caen en uno de los cuatro modelos de arquitectura básicos diferentes:
- Cliente-servidor-Los clientes se ponen en contacto con el servidor para obtener datos, luego los formatean y los muestran al usuario final. El usuario final también puede realizar un cambio desde el lado del cliente y confirmarlo en el servidor para hacerlo permanente.
- Tres niveles: la información sobre el cliente se almacena en un nivel intermedio en lugar de en el cliente para simplificar la implementación de la aplicación. Este modelo de arquitectura es el más común para las aplicaciones web.
- Niveles-Generalmente se utiliza cuando una aplicación o servidor necesita reenviar solicitudes a servicios empresariales adicionales en la red.
- Peer-to-peer-No se utilizan máquinas adicionales para proporcionar servicios o gestionar recursos. Las responsabilidades se distribuyen uniformemente entre las máquinas del sistema, conocidas como pares, que pueden servir como cliente o servidor.
Ejemplo de un sistema distribuido
Los sistemas distribuidos tienen un sinfín de casos de uso, siendo algunos de ellos los sistemas de banca electrónica, los juegos masivos en línea y las redes de sensores.
StackPath utiliza un sistema distribuido particularmente grande para alimentar su servicio de red de entrega de contenidos. Cada uno de nuestros puntos de presencia (PoPs) tiene nodos que forman un sistema distribuido mundial. Y para proporcionar una entrega de contenido de primera clase, StackPath almacena el contenido más reciente y frecuentemente solicitado en las ubicaciones de borde más cercanas al lugar donde se está utilizando.
Sistemas distribuidos en el borde
Con los servicios de computación de borde de StackPath, las máquinas virtuales y los contenedores, los usuarios pueden crear sus propios sistemas distribuidos. Al interconectar las máquinas virtuales y los contenedores, al tiempo que se aprovecha la velocidad y la agilidad que ofrece la computación en el borde, su sistema puede manejar miles de solicitudes simultáneas a la velocidad del rayo.
Consignas clave
- Los sistemas distribuidos pueden estar formados por cualquier máquina capaz de conectarse a una red, tener memoria local y comunicarse pasando mensajes.
- Al repartir las solicitudes y las cargas de trabajo, los sistemas distribuidos pueden soportar muchas más solicitudes y trabajos de computación que un sistema único estándar.
- Puede crear su propio sistema distribuido a la velocidad del rayo interconectando los contenedores de computación de borde de StackPath y las máquinas virtuales.
- .