La computación distribuida usa 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 participe en un juego 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 comparten simultáneamente en un entorno en tiempo real.
La computación distribuida ayuda a los proveedores a distribuir ese tipo de sincronización coordinada y potencia de procesamiento de computadoras hacia un objetivo común.
Y ese es solo un ejemplo de las tantas y variadas aplicaciones para servicios informáticos distribuidos que se utilizan actualmente, incluida la creación de gráficos 3D vívidos para animaciones de video, 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 de computación más intensivas y la carga de trabajo y se enfrenta a 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 computadoras, servidores y redes para llevar a cabo tareas informáticas de tamaños y propósitos muy diversos. En sistemas de computación 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 por geografía, los componentes están vinculados a través de redes de área amplia (WAN). Los componentes de un sistema distribuido comparten información a través del 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 de la cantidad de componentes normalmente involucrados, 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 se necesitan para dar vida a su funcionalidad. Podría haber unos cuantos componentes trabajando dentro de esa cadena (o red), o la instancia podría incorporar muchos más.
Esta es una de las grandes ventajas de utilizar un sistema informático distribuido; el sistema se puede ampliar agregando más máquinas. El otro beneficio significativo es el aumento de la redundancia, de modo que si una computadora de la red falla por cualquier motivo, el trabajo del sistema continúa sin interrupción, a pesar de ese punto de falla.
Este concepto de redundancia adicional va de la mano con un énfasis en la tolerancia a fallas. La tolerancia a fallas es un proceso correctivo que permite que un sistema operativo responda y corrija una falla en el software o hardware mientras el sistema continúa funcionando. La tolerancia a fallas ha llegado a utilizarse como una medida general de la viabilidad empresarial continua ante una falla disruptiva.
Por lo tanto, los sistemas de computación distribuida no están limitados por el número de componentes. Tampoco se exige que dichos componentes estén situados físicamente cerca entre sí y conectados por redes de área local. Gracias a las capacidades aumentadas de las redes de área amplia, las computadoras de un sistema de computación distribuida pueden estar separadas por continentes mientras conservan 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 una sola computadora. 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. Una de sus principales cualidades positivas es el hecho de que la concurrencia permite la computación paralela de múltiples hilos de proceso. (La computación paralela no debe confundirse con el procesamiento paralelo, que es un proceso en el que las tareas en tiempo de ejecución se dividen en varias tareas más pequeñas).
Los aspectos negativos asociados con la concurrencia a menudo incluyen una mayor latencia e incluso cuellos de botella en los que el tráfico casi se detiene debido a la sobrecarga del sistema informático distribuido con un número excesivo de solicitudes de componentes.
La concurrencia se diferencia 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 admitir. La computación distribuida comparte dichas cargas de trabajo entre múltiples equipamientos, por lo que los grandes trabajos pueden abordarse de manera competente.
La computación distribuida opera 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 las noticias u otros factores. La computación distribuida proporciona la flexibilidad que las empresas necesitan para resistir tales aumentos repentinos.
La computación distribuida aumenta los niveles de rendimiento al dividir los grandes trabajos de procesamiento en tareas informáticas más pequeñas, que son compartidas por numerosas computadoras. Esto da como resultado una cantidad acumulativa de velocidad de procesamiento y un mayor almacenamiento total.
Si bien es cierto que la computación distribuida, con sus múltiples sistemas, tiene más costos iniciales que los sistemas de procesamiento centralizados, con el tiempo, esos costos se compensan gracias a la reducción de la latencia y los 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 informática distribuida que cada uno emplea.
Los sistemas cliente-servidor utilizan una arquitectura cliente-servidor que les permite utilizarse con más de un único sistema. En este, un cliente dirigirá la entrada al servidor en forma de solicitud. Normalmente, esta comunicación implicará un comando para que se realice una tarea determinada o una solicitud de más recursos informáticos. Luego, el servidor trabaja para cumplir esa tarea o asignar los recursos solicitados. Una vez logrado, el servidor responde al cliente con un mensaje sobre la acción realizada.
Mientras que los sistemas centralizados emplean la arquitectura cliente-servidor, un sistema peer se basa en la arquitectura peer (a menudo, llamada arquitectura peer-to-peer). Los sistemas peer usan nodos, que pueden funcionar efectivamente como cliente o servidor, ya sea al identificar necesidades y emitir solicitudes o trabajar para satisfacer esas necesidades e informar sobre las operaciones. Como su nombre lo indica, no hay jerarquía en los sistemas peer, por lo que los programas que operan en sistemas peer-to-peer pueden comunicarse libremente entre sí y transferir datos a través de redes peer.
El middleware puede considerarse como un tipo de “intermediario” que opera entre dos aplicaciones distintas, lo que quiere decir que el middleware es en sí mismo una aplicación que reside entre dos aplicaciones y proporciona servicio a ambas. El middleware también tiene un aspecto interpretativo. Funciona como un traductor entre varias aplicaciones de interoperabilidad que se ejecutan en diferentes sistemas y permite que esas aplicaciones intercambien datos libremente.
Los sistemas de tres niveles se llaman así debido a la cantidad de capas utilizadas para representar la funcionalidad de un programa. A diferencia de la arquitectura típica cliente-servidor en la que los datos se colocan dentro del 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 en uno de sus lados, mientras que la capa de presentación rodea la capa de datos en el otro lado. Los sistemas de tres niveles se utilizan de manera rutinaria en diversas aplicaciones web.
Los sistemas de N niveles, a veces denominados sistemas distribuidos de varios niveles, tienen una capacidad ilimitada para funciones de red, que enrutan a otras aplicaciones para su procesamiento. La arquitectura de los sistemas de N niveles es similar a la que se encuentra en los sistemas de tres niveles. Los sistemas de N niveles se emplean 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 albergar uno de los servidores detrás de las ofertas de servicios clave (como atención al cliente, seguridad y procesamiento de transacciones). Todo sucede de manera instantánea y perfectamente, tal como esperan los clientes bancarios.
Tanto la inteligencia artificial (IA) como el machine learning (ML) están revolucionando muchas industrias tecnológicas, pero en ningún lugar son sus efectos más pronunciados en este momento que en la propia industria informática. Ambas tecnologías, en plena expansión, recurren ampliamente a 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 computación distribuida está suministrando el músculo de procesamiento requerido.
La computación distribuida ahora se utiliza en los sectores energético y medioambiental. Por el lado de la energía, 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 utilizan la computación distribuida para reunir datos ambientales de diferentes dispositivos de entrada, como sensores y medidores inteligentes.
Los trabajadores en áreas específicas de finanzas ya están empleando sistemas informáticos distribuidos. Por ejemplo, la gestión de riesgos, en la que las instituciones financieras necesitan grandes cantidades de datos para realizar enormes cálculos que les permitan una toma de decisiones sobre probabilidades y evaluación de riesgos. La computación distribuida garantiza que las cargas computacionales se compartan de manera uniforme entre múltiples sistemas.
La informática distribuida ayudó a numerosas disciplinas científicas y contribuyó a algunos de los logros más notables de la ciencia. Algunos ejemplos son el Gran Colisionador de Hadrones, el acelerador de partículas más poderoso del mundo. Los experimentos en los que se basa dependen de cantidades extremas de recopilación y análisis de datos, lo que requiere el uso de la computación distribuida. Del mismo modo, la computación distribuida sirvió al Proyecto Genoma Humano para trazar las secuencias de ADN humano. La computación distribuida también desempeña una función esencial en el forecasting y la modelización del clima.
IBM Cloud Infrastructure Center es una plataforma de software compatible con OpenStack para gestionar la infraestructura de nubes privadas en IBM zSystems e IBM LinuxONE.
Descubra los servidores, el almacenamiento y el software diseñados para la nube híbrida y su estrategia de IA.
Encuentre una solución de infraestructura en la nube que sea adecuada para las necesidades de su negocio y escale los recursos bajo demanda.