Ahorra un 25 % (o incluso más) en tus costes de Kafka | Acepta el reto del ahorro con Kafka de Confluent
Los sistemas distribuidos son un conjunto de componentes y máquinas independientes ubicados en diferentes sistemas, que se comunican con el fin de operar como una sola unidad.
En esta introducción detallada, descubrirás cómo funcionan los sistemas distribuidos y te presentaremos varios ejemplos prácticos, las arquitecturas básicas, las ventajas, las desventajas y las soluciones habituales para el streaming distribuido en tiempo real.
Fundada por los creadores originales de Apache Kafka, Confluent es una plataforma de streaming de datos completa para la integración de datos en tiempo real, procesamiento y análisis que conecta más de 120 fuentes de datos.
También conocido como computación distribuida y bases de datos distribuidas, un sistema distribuido es una colección de componentes independientes ubicados en distintas máquinas que comparten mensajes entre sí para lograr objetivos comunes.
Por su naturaleza, de caras al usuario final, el sistema distribuido aparecerá como si fuera una única interfaz o un ordenador. La idea es que al unir distintos componentes que trabajan de forma conjunta, el sistema pueda maximizar los recursos y la información al tiempo que previene fallos: si un sistema falla, no afectará a la disponibilidad del servicio.
Hoy en día, los datos están más distribuidos que nunca y las aplicaciones modernas ya no se ejecutan de forma aislada. La gran mayoría de los productos y aplicaciones se basan en sistemas distribuidos.
Las funciones más importantes de la computación distribuida son las siguientes:
Los sistemas distribuidos modernos han evolucionado para incluir procesos autónomos que pueden ejecutarse en la misma máquina física, pero interactúan intercambiando mensajes entre sí.
Redes
El primer ejemplo de un sistema distribuido se produjo en la década de los 70, cuando se inventó Ethernet y se crearon las redes de área local (LAN). Por primera vez, los ordenadores podrían enviar mensajes a otros sistemas con una dirección IP local. Las redes peer-to-peer evolucionaron y, luego, el correo electrónico e Internet (tal como lo conocemos hoy en día) siguen siendo el ejemplo más grande, y en continuo crecimiento, de sistemas distribuidos. Igual que Internet cambió de IPv4 a IPv6, los sistemas distribuidos evolucionaron de estar basados en redes locales a depender de Internet.
Redes de telecomunicaciones
Las redes telefónicas y móviles también son ejemplos de redes distribuidas. Las redes telefónicas existen desde hace más de un siglo y comenzaron como un ejemplo temprano de una red peer-to-peer. Las redes móviles son redes distribuidas con estaciones base distribuidas físicamente en áreas denominadas celdas. A medida que las redes telefónicas han evolucionado a VOIP (voz sobre IP), continúan creciendo en complejidad como redes distribuidas.
Sistemas distribuidos en tiempo real
Muchos sectores utilizan sistemas en tiempo real que se distribuyen de forma local y global. Las aerolíneas usan sistemas de control de vuelo, Uber y Lyft usan sistemas de entrega, las plantas industriales usan sistemas de control de automatización, y las empresas de logística y comercio electrónico usan sistemas de seguimiento en tiempo real.
Procesamiento paralelo
Antiguamente había una distinción entre la computación paralela y los sistemas distribuidos. La computación paralela se centraba en cómo ejecutar software en múltiples subprocesos o procesadores que accedían a los mismos datos y memoria. Los sistemas distribuidos suponían ordenadores separados con sus propios procesadores y memoria. Con el auge de los sistemas operativos, procesadores y servicios en la nube modernos de hoy día, la computación distribuida también abarca el procesamiento paralelo.
Inteligencia artificial distribuida
La inteligencia artificial distribuida es una forma de utilizar la capacidad de computación a gran escala y el procesamiento paralelo para aprender y procesar conjuntos de datos muy grandes a través de múltiples agentes.
Sistemas de bases de datos distribuidas
Una base de datos distribuida es una base de datos que se encuentra en varios servidores o ubicaciones físicas. Los datos se pueden replicar o duplicar entre sistemas.
La mayoría de las aplicaciones populares utilizan una base de datos distribuida y deben ser conscientes de la naturaleza homogénea o heterogénea del sistema de base de datos distribuida.
Una base de datos distribuida homogénea significa que cada sistema tiene el mismo sistema de gestión de base de datos y modelo de datos. Son más fáciles de gestionar y expandir el rendimiento añadiendo nuevos nodos y ubicaciones.
Las bases de datos distribuidas heterogéneas permiten múltiples modelos de datos, diferentes sistemas de gestión de bases de datos. Las puertas de enlace se utilizan para traducir los datos entre nodos y, por lo general, se producen como resultado de la fusión de aplicaciones y sistemas.
Los sistemas distribuidos deben tener una red que conecte todos los componentes (ordenadores, hardware o software) para que puedan transferir mensajes que les permitan comunicarse entre sí.
Para entender esto, veamos los tipos de arquitecturas distribuidas, sus pros y sus contras.
Las aplicaciones y los procesos distribuidos suelen utilizar uno de los siguientes cuatro tipos de arquitectura:
Cliente-servidor:
al principio, la arquitectura de los sistemas distribuidos consistía en un servidor como recurso compartido, como una impresora, una base de datos o un servidor de sitio web. Tenía múltiples clientes (por ejemplo, usuarios trabajando en los ordenadores) que decidían cuándo usar el recurso compartido, cómo usarlo y mostrarlo, cambiar datos y enviarlo de vuelta al servidor. Los repositorios de código como git son un buen ejemplo en el que la inteligencia se sitúa en los desarrolladores que realizan los cambios en el código.
Hoy en día, la arquitectura de sistemas distribuidos ha evolucionado con las aplicaciones web. Estos son los ejemplos de arquitectura más modernos:
El objetivo principal de un sistema distribuido es permitir la escalabilidad, el rendimiento y la alta disponibilidad de las aplicaciones.
Entre las principales ventajas se incluyen:
Cada decisión de ingeniería conlleva sacrificios. La complejidad es la mayor desventaja de los sistemas distribuidos. Cuantas más máquinas, más mensajes y más datos se transmiten entre más partes, más problemas aparecen. Estas son algunas de las áreas que suelen plantear retos importantes:
Confluent es la única plataforma de streaming de datos que te permite trabajar en cualquier entorno de nube, local o híbrido. Conecta más de 120 fuentes de datos con una escalabilidad, seguridad e integraciones de nivel empresarial que te ayudarán a obtener una visibilidad en tiempo real de todos tus sistemas distribuidos.
Comienza en cuestión de minutos con una prueba gratuita de 30 días.