La computación distribuida utiliza numerosos recursos informáticos en diferentes ubicaciones operativas para un único propósito informático.
Los sistemas de computación distribuida hacen que las cosas sucedan a lo grande. Piénselo la próxima vez que juegue a un videojuego multijugador masivo en línea (MMO). Para gestionar eficazmente un MMO, se necesitan sistemas completos que se unan y trabajen en estrecha colaboración para ofrecer una experiencia en línea fluida que miles de jugadores compartan simultáneamente en un entorno en tiempo real.
La computación distribuida ayuda a los proveedores a reunir ese tipo de sincronización coordinada y poder de procesamiento informático hacia un objetivo común.
Y ese es solo un ejemplo de las muchas y amplias aplicaciones para servicios de computación distribuida que se utilizan ahora, incluida la creación de gráficos 3D vívidos para animaciones de vídeo, el entrenamiento de redes neuronales que imitan la funcionalidad del cerebro humano y la resolución de ecuaciones extremadamente complejas relacionadas con la química y la física.
Por lo general, el modelo de computación distribuida toma las tareas y cargas de trabajo informáticas más intensivas y se ocupa de los desafíos computacionales más serios, por lo que requiere el uso de múltiples componentes y memoria compartida.
La computación distribuida reúne múltiples ordenadores, servidores y redes para realizar tareas informáticas de tamaños y propósitos muy variados. En sistemas informáticos pequeños y distribuidos con componentes cercanos entre sí, estos componentes se pueden vincular a través de una red de área local (LAN).
En sistemas distribuidos más grandes cuyos componentes están separados geográficamente, los componentes están conectados a través de redes de área amplia (WAN). Los componentes de un sistema distribuido comparten información a través de cualquier tipo de red que se utilice. El ejemplo más conocido de un sistema distribuido es Internet. Quizás el ejemplo más controvertido de un sistema distribuido en los últimos tiempos es la criptomoneda.
Desde una perspectiva computacional, en términos del número de componentes típicamente implicados, incluso las formas más básicas de computación distribuida suelen contener tres componentes básicos:
Sin embargo, no existen reglas estrictas que limiten lo que constituye una circunstancia de computación distribuida o cuántos componentes de software son necesarios para dar vida a su funcionalidad. Puede haber unos cuantos componentes trabajando dentro de esa cadena (o red), o la instancia puede incorporar bastantes más.
Esta es una de las grandes ventajas de utilizar un sistema de computación distribuida; el sistema se puede ampliar añadiendo más máquinas. La otra ventaja significativa es el aumento de la redundancia, por lo que si un ordenador de la red falla por cualquier motivo, el trabajo del sistema continúa sin cesar, a pesar de ese punto de fallo.
Este concepto de redundancia añadida va de la mano con un énfasis en la tolerancia a fallos. La tolerancia a fallos es un proceso correctivo que permite a un sistema operativo responder y corregir un fallo en el software o el hardware mientras el sistema sigue funcionando. La tolerancia a fallos se ha convertido en una medida general de la viabilidad empresarial continua ante un fallo disruptivo.
Así pues, los sistemas informáticos distribuidos no están sujetos a límites en cuanto al número de componentes. Tampoco se exige que esos componentes estén físicamente situados cerca unos de otros y conectados por redes de área local. Gracias a las capacidades ampliadas de las redes de área extensa, los ordenadores de un sistema de computación distribuida pueden estar separados por continentes sin perder su operatividad.
El objetivo de los sistemas de computación distribuida es hacer que esa red de computación distribuida, sin importar su tamaño ni dónde se encuentren sus componentes, funcione como si fuera un solo ordenador. Esta coordinación se logra mediante un elaborado sistema de paso de mensajes entre los distintos componentes.
Los protocolos de comunicación gobiernan ese intercambio de mensajes de ida y vuelta y crean una forma de relación que existe entre estos componentes. Esta relación se conoce como "acoplamiento", que normalmente se expresa en una de dos formas:
La computación distribuida también se ocupa de los efectos positivos y negativos de la concurrencia, que es la ejecución simultánea de múltiples secuencias de instrucciones operativas. Entre sus cualidades positivas destaca el hecho de que la concurrencia permite la computación paralela de múltiples hilos de proceso. (No debe confundirse la computación paralela con el procesamiento paralelo, que es un proceso por el que las tareas de tiempo de ejecución se dividen en múltiples tareas más pequeñas).
Los aspectos negativos asociados con la simultaneidad a menudo incluyen un aumento de la latencia e incluso cuellos de botella en los que el tráfico se detiene casi por completo debido a la sobrecarga del sistema informático distribuido con un número excesivo de solicitudes de componentes.
La concurrencia difiere del concepto de multihilo, que permite que un programa siga ejecutándose mientras otras tareas se realizan en segundo plano. La concurrencia representa una mayor pérdida de recursos, ya que varios subprocesos se ejecutan al mismo tiempo y acceden a los recursos compartidos simultáneamente.
Algunas cargas de trabajo de procesamiento son enormes, y más de lo que la mayoría de los sistemas individuales pueden soportar. La computación distribuida comparte estas cargas de trabajo entre múltiples equipos, por lo que los grandes trabajos pueden ser abordados con capacidad.
La computación distribuida funciona según el concepto de activos compartidos y admite el intercambio de recursos como datos, software y hardware entre los diversos componentes dentro de esa instancia de computación distribuida.
El tráfico en línea de muchas organizaciones está sujeto a cambios rápidos y drásticos, posiblemente debido a noticias reportadas u otros factores. La computación distribuida proporciona la flexibilidad que las empresas necesitan para resistir tales aumentos.
La computación distribuida aumenta los niveles de rendimiento al dividir grandes trabajos de procesamiento en tareas informáticas más pequeñas, que son compartidas por numerosas computadoras. Esto da como resultado una cantidad acumulada de velocidad de procesamiento y un mayor almacenamiento total.
Aunque es cierto que la computación distribuida, con sus múltiples sistemas, tiene mayores costes iniciales que los sistemas de procesamiento centralizado, con el tiempo esos costes se promedian debido a las eficiencias de costes logradas a través de una menor latencia y tiempos de respuesta más rápidos, lo que en última instancia hace que la computación distribuida sea más rentable que los sistemas centralizados.
Los tipos de computación distribuida se clasifican según la arquitectura de computación distribuida que cada uno emplea.
Los sistemas cliente-servidor utilizan una arquitectura cliente-servidor que les permite utilizarse con más de un sistema. En este, un cliente dirigirá la entrada al servidor en forma de solicitud. Esta comunicación generalmente implicará un comando para que se realice una tarea particular o una solicitud de más recursos informáticos. Luego, el servidor trabaja para cumplir esa tarea o asignar los recursos solicitados. Una vez realizado esto, el servidor responde al cliente con un mensaje sobre la acción realizada.
Mientras que los sistemas centralizados utilizan una arquitectura cliente-servidor, un sistema de pares se basa en una arquitectura de pares (a menudo denominada arquitectura entre pares). Los sistemas de pares utilizan nodos, que pueden funcionar eficazmente como cliente o servidor, ya sea identificando necesidades y emitiendo solicitudes o trabajando para satisfacer esas necesidades e informar sobre las operaciones. Como su nombre indica, no hay jerarquía en los sistemas de pares, por lo que los programas que operan en sistemas entre pares pueden comunicarse libremente entre sí y transferir datos a través de redes de pares.
El middleware puede considerarse un tipo de "intermediario" que opera entre dos aplicaciones distintas, es decir, el middleware es en sí mismo una aplicación que reside entre dos aplicaciones y presta servicio a ambas. El middleware también tiene un aspecto interpretativo. Funciona como un traductor entre varias aplicaciones de interoperabilidad que se están ejecutando en diferentes sistemas y permite que esas aplicaciones intercambien datos libremente.
Los sistemas de tres niveles se llaman así por el número de capas que se utilizan para representar la funcionalidad de un programa. A diferencia de la arquitectura cliente-servidor típica en la que los datos se colocan en el sistema cliente, el sistema de tres niveles mantiene los datos almacenados en su capa intermedia, que se denomina capa de datos. La capa de aplicación rodea la capa de datos por uno de sus lados, mientras que la capa de presentación rodea la capa de datos por el otro lado. Los sistemas de tres niveles se utilizan de forma rutinaria en varias aplicaciones web.
A veces denominados sistemas distribuidos de varios niveles, los sistemas de N niveles son ilimitados en su capacidad para funciones de red, que enrutan a otras aplicaciones para su procesamiento. La arquitectura de los sistemas de N niveles es como la que se encuentra en los sistemas de tres niveles. Los sistemas de N niveles se utilizan a menudo como base arquitectónica para numerosos servicios web y sistemas de datos.
La computación distribuida permite el uso de diferentes paradigmas de programación (que pueden considerarse estilos de programación):
La banca en línea muestra la destreza de la computación distribuida al ocurrir en numerosos lugares a la vez, a menudo con diferentes ubicaciones bancarias encargadas de alojar uno de los servidores detrás de las ofertas de servicios clave (como servicio de atención al cliente, seguridad y procesamiento de transacciones). Todo sucede al instante y de manera fluida, tal como esperan los clientes del banco.
Tanto la inteligencia artificial (IA) como el machine learning (ML) están en proceso de revolucionar muchos sectores tecnológicos, pero no hay ningún lugar donde sus efectos sean más pronunciados ahora mismo que en el propio sector informático. Ambas tecnologías en expansión hacen un uso extensivo de la computación distribuida. Los algoritmos detrás de la IA y el ML necesitan grandes volúmenes de datos para entrenar sus modelos, y la informática distribuida está aportando el músculo de procesamiento que se requiere.
La computación distribuida se utiliza ahora en los sectores energético y medioambiental. En el ámbito energético, la computación distribuida está ayudando a la tecnología de redes inteligentes a regular el uso y optimizar el consumo de energía. Las redes inteligentes también están utilizando la computación distribuida para reunir datos medioambientales procedentes de diferentes dispositivos de entrada, como sensores y contadores inteligentes.
Los trabajadores de áreas específicas de las finanzas ya están utilizando sistemas de computación distribuida. Por ejemplo, la gestión de riesgos, en la que las instituciones financieras necesitan grandes cantidades de datos para ejecutar enormes cálculos que informen mejor la toma de decisiones sobre las evaluaciones de probabilidad y riesgo. La computación distribuida garantiza que las cargas computacionales se compartan uniformemente entre varios sistemas.
La computación distribuida ha ayudado a numerosas disciplinas científicas y ha contribuido a algunos de los logros más notables de la ciencia. Los ejemplos incluyen el Gran Colisionador de Hadrones, el acelerador de partículas más potente del mundo. Los experimentos detrás de esto dependen de cantidades extremas de recopilación y análisis de datos, lo que requiere el uso de computación distribuida. Del mismo modo, la computación distribuida tenía el mismo propósito para el Proyecto Genoma Humano, que se propuso mapear las secuencias del ADN humano. La computación distribuida también desempeña un papel esencial en la previsión meteorológica y la modelización del clima.
IBM Cloud Infrastructure Center es una plataforma de software compatible con OpenStack para gestionar la infraestructura de las nubes privadas en IBM zSystems e IBM LinuxONE.
Descubra servidores, almacenamiento y software diseñados para su estrategia empresarial de nube híbrida e IA.
Encuentre la solución de infraestructura en la nube adecuada para las necesidades de su empresa y escale los recursos según la demanda.