Computación distribuida


Computación distribuida
Información sobre la plantilla
Comp dist.jpg
Concepto:Modelo de computación en paralelo donde interactúan una colección de computadoras que pueden o no estar ubicadas en distintos lugares y pertenecientes a distintos dominios de administración sobre una red distribuida de computadoras.

Computación distribuida. Modelo de computación en paralelo donde intervienen una colección de computadoras que pueden o no estar situadas en distintos lugares y pertenecientes a distintos dominios de administración sobre una red distribuida.

Estas utilizan estándares abiertos para llevar a cabo una tarea u objetivo común. Se caracteriza por su heterogeneidad o sea cada computadora posee sus componentes de software y hardware, los cuales el usuario percibe como un solo sistema.

Para el usuario todo es transparente, accede a los demás recursos de la misma manera que accede al suyo propio. Esta colección de computadoras básicamente lo que hace es dividirse el trabajo a realizar en pequeñas tareas individuales, reciben los datos necesarios para esa tarea, la hacen y devuelven los datos para unirlos en el resultado final.

Historia

La computación distribuida no es algo nuevo. Con esta tecnología, diferentes ordenadores dentro de una red comparten uno o más recursos. En uno de estos sistemas considerado ideal, todos los recursos son compartidos, convirtiendo una red de ordenadores en un potente superordenador.

Con el interfaz adecuado, acceder a uno de estos sistemas no es muy diferente de que acceder a los recursos de una máquina local. Todo ordenador autorizado tendrá acceso a una potencia de procesamiento enorme, y una gran capacidad de almacenamiento.

Al comienzo se utilizaban computadores aislados, cada uno de los cuales era capaz de ejecutar programas almacenados. La conexión de computadores aislados de forma que los datos se pudieran intercambiar fue una progresión natural. La conexión rudimentaria de computadores a través de cables fue utilizada ya en los años 60 para la compartición de ficheros. No obstante, esta práctica requiere intervención manual y no puede denominarse aplicación de computación a uno o más programas que ejecutan de forma autónoma con el objetivo de realizar una determinada tarea. Tal aplicación requiere comunicación de datos, donde dos computadores intercambien datos espontáneamente y utilicen determinado software y hardware para la realización de las tareas inherentes de dicha aplicación.[1]

La informática contribuye en gran medida a la solución de problemas en diferentes ámbitos y disciplinas, volviéndose una fuente de recursos imprescindible. La creciente necesidad de almacenamiento y procesamiento de datos que se requiere en ambiciosos proyectos de investigación científica, así como simulaciones a gran escala, toma de decisiones a partir de grandes volúmenes de información y cientos de casos que no encuentran una solución, es claramente un problema a tener en cuenta.

Como solución a estos problemas computacionales, primeramente se plantean los Clúster, pero aún así, en la actualidad la relación costo-rendimiento hace que su gran demanda tanto de computación como de espacio y gestión de almacenamiento requerido por un gran número de aplicaciones encargadas de gestionar grandes cantidades de datos de forma eficiente y sencilla, exija el uso de nuevas tecnologías como es el caso de la Computación Grid.

Estructura

Estos sistemas trabajan con el principio de los recursos combinados. Un sistema de computación distribuida usa el mismo concepto. Se comparte toda la carga a través de múltiples ordenadores para completar tareas de forma más eficiente y rápida. Es importante conocer cuáles son los recursos de un ordenador:

  • La unidad de procesador central (CPU): Realiza operaciones matemáticas y direcciona los datos a diferentes localizaciones de memoria. Puede haber más de una CPU en un equipo.
  • Memoria: En general, es un tipo de almacenamiento electrónico temporal. Mantiene datos relevantes a mano para el microprocesador. Sin la memoria, el microprocesador tendría que buscar y recuperar datos de un dispositivo de almacenamiento más permanente, como el disco duro.
  • Almacenamiento: En términos de computación distribuida, se refiere a los dispositivos de almacenamiento permanentes, como son los discos duros o bases de datos.

Normalmente, un ordenador solo puede operar dentro de los límites de sus propios recursos. Hay un límite máximo para que pueda completar una operación o cuanta información puede almacenar. La mayoría de los ordenadores son actualizables, lo cual significa que se puede añadir más potencia y capacidad a un solo equipo, pero eso sigue siendo un aumento incremental de rendimiento.

Los sistemas de computación distribuida enlazan los recursos de red todos juntos, de una forma tal, que permite a un solo ordenador heredar la potencia del resto de ordenadores en el sistema. Para un solo usuario, esto le supone un gran avance en cualquier trabajo que esté haciendo, sea del tipo que sea.

Modelos

En el contexto de Computación Distribuida se pueden distinguir los siguientes paradigmas:

  • Grid Computing: Este paradigma propone el acceso de recursos deslocalizados de diferentes tipo: cómputo, almacenamiento, instrumentos, etc.

El mismo se basa en la conformación de Organización Virtuales que comparten recursos. El nombre proviene de una analogía con la Red de Energía Eléctrica (Power Grid) ya que esta tecnología plantea el acceso a recursos computacionales en forma similar a la energía obtenida enchufando un equipo a la red.

Existen dos conceptos que se están manejando indistintamente, pero que no son exactamente equivalentes: computación Grid y computación distribuida. La computación distribuida se refiere principalmente a la infraestructura donde se manejan varios sistemas de infraestructura computacional conectados por una red, que se administran de manera individual o no,[2]; mientras que la computación Grid sigue la filosofía de que los recursos computacionales se comparten y administran independientemente de la zona geográfica donde se ubiquen los equipos, generalmente muy heterogéneos entre sí.[3]

  • High Performance Computing (HPC): En este paradigma se prima la ejecución lo más rápido posible de las tareas. Conceptos tales como paralelización y multiproceso entran dentro de este ámbito, y su aplicación directa es hacer que cálculos que pueden durar semanas en un solo equipo se repartan entre varios, dividiendo el trabajo a realizar.
  • High Throughput Computing (HTC): En este paradigma se prima la ejecución de la mayor cantidad posible de tareas. Conceptos como gestión de colas y de recursos son parte de este ámbito, y su aplicación directa pasa por la realización de la mayor cantidad de trabajos a lo largo del tiempo.

La Tecnología Grid Computing incluye como casos particulares a la Computación de Alto Rendimiento (HPC) y a la de Alta Disponibilidad (HTC). El paradigma de HTC puede utilizarse con facilidad cuando se tiene una multitud de cálculos de tamaño mediano / pequeño, y se quiere agilizar la gestión de todos ellos. [4]

Términos en una red distribuida

  • Clúster: Es un conjunto de computadoras interconectadas con dispositivos de alta velocidad que actúan en conjunto usando el poder de cómputo de varios CPU en combinación para resolver ciertos problemas. Aparecen ante clientes y aplicaciones como un solo sistema. Aunque los Clústers no son tan flexibles en cuanto a la heterogeneidad de hardware y sistemas operativos sobre los cuales se implementan.
  • XML: Es el lenguaje de marcada extensible, y se trata de un lenguaje de ordenador que describe otros datos y que es leíble por los computadores.
  • Los nodos de control: Para saber lo que es esto, diremos que un nodo es cualquier dispositivo conectado a una red, que puede transmitir, recibir y enrutar datos. Los nodos de control dependen en lenguajes XML, como por ejemplo WSDL. La información en estos lenguajes le dicen al nodo de control como manejar los datos y las aplicaciones.
  • Los HUBs: Un punto dentro de una red donde varios dispositivos se conectan entre si.
  • IDE: Lo podemos llamar un entorno de desarrollo integrado. Se trata de las herramientas y funciones que los programadores informáticos necesitan para crear las aplicaciones para una plataforma.
  • Interoperabilidad: Se refiera a la habilidad de software para poder operar en entornos completamente diferentes. Por ejemplo, una red de ordenadores puede incluir ordenadores Macintosh y PCs. Sin la interoperabilidad de software, estos ordenadores no podrían trabajar juntos porque son sistemas operativos y arquitecturas distintas.
  • Estándares abiertos: Es una técnica para crear estándares disponibles para su publicación. De forma diferente a los estándares propietarios, los cuales pueden pertenecer exclusivamente a una sola entidad, cualquiera puede adoptar y usar un estándar abierto. Las aplicaciones basadas en esta técnica, son más fáciles de integrar que los que están construidos sobre los propietarios.
  • Procesamiento paralelo: Es usar muchas CPUs para solucionar un solo problema de computación. Esto está estrechamente relacionado con los recursos compartidos, donde hereda los recursos de una red para realizar una tarea.
  • Plataforma: Es una fundación donde los desarrolladores pueden crear aplicaciones. Una plataforma puede ser un sistema operativo, una arquitectura de ordenadores, un lenguaje de programación o incluso un sitio Web.
  • Una granja de servidores: Se trata de un cluster de servidores usados para realizar tareas, que suelen ser demasiado complejas para que lo haga un solo servidor.
  • Virtualización de servidores: Es una técnica donde una aplicación de software divide un único servidor físico, en múltiples servidores para una determinada plataforma, normalmente conocidos como servidores virtuales. Cada servidor virtual puede funcionar con su sistema operativo de forma independiente de otros servidores virtuales. Dicho de otra manera, una máquina puede estar funcionando con Linux, mientras que otra en el grupo puede estar corriendo con Windows. La computación distribuida necesita muchos servidores para gestionar varias tareas, y los servidores virtuales ayudan a recortar mucho los costes de hardware.
  • El servicio: En redes distribuidas, un servicio es cualquier sistema de software que permite a ordenadores interactuar entre si en una red.
  • SOAP: Lo podemos traducir como protocolo de acceso de objetos simple, y es un conjunto de normas para intercambiar mensajes escritos en XML por una red. El responsable de este protocolo es Microsoft.

Funcionamiento

  1. La posibilidad de compartir recursos: poder utilizar recursos remotos que nos permitan realizar tareas que no podríamos abordar en nuestra máquina o centro de trabajo.
  2. La seguridad - acceso seguro: se centra en los siguientes aspectos:
    • Política de Accesos: Se deben definir cuidadosamente qué es lo que van a compartir, a quién se permite el acceso y bajo qué condiciones.
    • Autenticación: establece la identidad de un usuario o de un recurso concreto.
    • Autorización: determina si una operación es consistente con las relaciones que se han definido previamente.
  3. El uso eficiente de los recursos: no importa la cantidad de recursos de los que uno disponga; siempre habrá usuarios haciendo cola para utilizarlos. Se necesitan mecanismos para repartir el trabajo de forma automática y eficiente entre una gran cantidad de recursos, reduciendo las colas de espera.
  4. Redes de comunicaciones fiables que eliminen las distancias: la existencia de conexiones de alta velocidad es lo que hace posible un Grid a escala mundial. Hace diez años hubiese sido ingenuo tratar de enviar grandes cantidades de datos a través del mundo para que se pudiesen procesar más rápido en otros ordenadores. El tiempo que se tardaba en transferirlos anularía el beneficio de un procesamiento más rápido.
  5. Estándares abiertos: las aplicaciones que se ejecuten en un Grid deben funcionar en cualquier otro. Debido a que la naturaleza del Grid es compartir recursos, es comprensible que la existencia de estándares abiertos redunde en beneficio de todos los agentes participantes.

Arquitectura

Organizaciones Virtuales

Entrando en lo que sería la arquitectura de un sistema grid se pueden destacar a las Organizaciones virtuales.

Cuando se habla de compartir no se trata de un simple intercambio de ficheros, sino de ofrecer acceso a computadoras, software, datos y otros recursos de forma directa, como requieren los modelos para la solución cooperativa de problemas y de negociación de recursos que aparecen en la industria, la ciencia y la ingeniería.

Esta forma de hacer disponibles los recursos debe ser por necesidad rigurosamente controlada, de forma que los proveedores y los consumidores queden claramente identificados, además de establecer cuidadosamente qué recursos se comparten, quién están autorizados a compartir y las condiciones bajo las cuales se realiza el proceso.

La naturaleza externa de los recursos compartidos en el entorno Grid/CPU, capacidad de almacenamiento, datos, software etc. o su disponibilidad más allá del dominio administrativo local conducen a la creación de un nuevo dominio de administración llamado Organización Virtual que implementa un nuevo conjunto de políticas, usualmente formado por políticas locales en adición a políticas externas de administración sobre los recursos del sistema.

Los usuarios pueden agruparse dinámicamente en estas VOs definiendo cada una sus propios requerimientos y políticas de acceso y empleo de los recursos.

Ventajas

Con respecto a Sistemas Centralizados: Una de las ventajas de los sistemas distribuidos es la economía, pues es mucho más barato, añadir servidores y clientes cuando se requiere aumentar la potencia de procesamiento.

El trabajo en conjunto. Por ejemplo: en una fábrica de ensamblado, los robots tienen sus CPUs diferentes y realizan acciones en conjunto, dirigidos por un sistema distribuido.

Tienen una mayor confiabilidad. Al estar distribuida la carga de trabajo en muchas máquinas la falla de una de ellas no afecta a las demás, el sistema sobrevive como un todo.

Capacidad de crecimiento incremental. Se puede añadir procesadores al sistema incrementando su potencia en forma gradual según sus necesidades.

Con respecto a PCs Independientes: Se pueden compartir recursos, como programas y periféricos, muy costosos. Ejemplo: Impresora Láser, dispositivos de almacenamiento masivo, etc.

Al compartir recursos, satisfacen las necesidades de muchos usuarios a la vez. Ejemplo: Sistemas de reservas de aerolíneas.

Se logra una mejor comunicación entre las personas. Ejemplo: el correo electrónico. Tienen mayor flexibilidad, la carga de trabajo se puede distribuir entre diferentes ordenadores.

Desventajas

El principal problema es el software, es el diseño, implantación y uso del software distribuido, pues presenta numerosos inconvenientes.

Otro problema tiene que ver con las redes de comunicación. Por ejemplo: -Perdida de mensajes, saturación en el tráfico, etc. Un problema que puede surgir al compartir datos es la seguridad de los mismos.

En general se considera que las ventajas superan a las desventajas, si estas últimas se administran seriamente.

Aplicaciones

El desarrollo de los sistemas distribuidos han tomado cuerpo en función de los avances de la tecnología informática y la baja de costos del equipamiento de las últimas décadas.

Basados en sistemas seguros de comunicación y computadoras personales o estaciones de trabajo cada vez más veloces, han madurado en su concepción y desarrollo.

Por un lado con este soporte, arquitectura física y arquitectura de programación o algorítmica, se desarrollan aplicaciones geográfica y administrativamente distribuidas.

Esto presenta el desafío de lograr el mejor aprovechamiento y rendimiento de todo el sistema.[5]

Hay muchas áreas de aplicación donde el poder de cálculo de una computadora simple es insuficiente para obtener los resultados deseados. Las computadoras paralelas y distribuidas pueden producir resultados más rápidos.[6]

  • Sistemas Comerciales. Inicialmente fueron construidos con hardware dedicado y entornos centralizados, son, por sus características de distribución geográfica y necesidad de acceso a sistemas distintos, ideales para implementarse en sistemas distribuidos. Requieren ciertas características de fiabilidad, seguridad y protección. Algunos ejemplos son:
    • Sistemas de reservas de líneas aéreas.
    • Aplicaciones bancarias.
    • Cajas y gestión de grandes almacenes.
  • Redes WAN. Debido al gran crecimiento de este tipo de redes (Internet), ha tomado gran importancia el intercambio de información a través de la red. Por ejemplo:
    • Los servicios comunes que brinda Internet: Correo electrónico, servicio de noticias, transferencia de archivos, la World Wide Web, etc.
    • Aplicaciones Multimedia. Son las últimas incorporaciones a los sistemas distribuidos. Estas aplicaciones imponen ciertas necesidades de hardware para poder tener una velocidad y regularidad de transferencia de una gran cantidad de datos. Los ejemplos de estos sistemas son:
    • Videoconferencia.
    • Televigilancia.
    • Juegos multiusuarios.
    • Enseñanza asistida por ordenador.
  • Áreas de la informática aplicada a los Sistemas Distribuidos.- En este punto se tienen en cuenta toda la variedad de aplicaciones de los sistemas distribuidos, pues su diseño involucra a muchas áreas, por ejemplo:
    • Comunicaciones.
    • Sistemas operativos distribuidos.
    • Base de datos distribuidas.
    • Servidores distribuidos de ficheros.
    • Lenguajes de programación distribuidos.
    • Sistemas de tolerancia de fallos.

La computación distribuida y computación de alto rendimiento (HPC, en sus siglas en inglés) han sido estudiadas a nivel de investigación demostrando un gran potencial para los entornos educativos y permitiendo abordar específicamente sus exigentes requisitos no funcionales de forma relativamente fácil y asequible.[7]

Referencias

Bibliografía

  • R.Brown,“Engineering a Beowulf-style computer cluster”. Disponible en:2002.
  • R.Buyya, Cluster Computing Info Centre. Disponible en:[4]. Consultado julio 2019.
  • M.J.Martín Santamaría, Apuntes de Arquitecturas Distribuidas. Ingeniería Informática, Universidad de la Coruña, 2004.
  • S. Androutsellis Theotokis and D. Spinellis. A Survey of Peer-to-Peer Content Distribution Technologies. ACM Computing Surveys, Vol. 36(4), 2004.
  • Adamová, D., Chudoba, J., Kouba, T., Méndez-Loren-zo, P., Saiz, P., Švec, J. & Hampl, J. (2010). Status of the Grid Computing for the ALICE Experiment in the Czech Republic. Journal of Physics: Conference Se-ries, 219(7).
  • Foster, I. (2002). What is the Grid? A three point chec-klist. GRIDtoday.

Fuentes

  • ¿Cómo funciona la computación distribuida?. Disponible en: http://www.ordenadores-y-portatiles.com/computacion-distribuida.html. Consultada 1/7/2019.
  • GridCafe
  • Roger S. Presuman. Ingeniería de Software. Quinta Edición. McGraw-Hill Interamericana. Madrid. 2002.
  • George Coulouris. Sistemas Distribuidos. Tercera Edición. Addison Wesley. Madrid. 2001.
  • Guía Rápida de Internet, David Zurdo Saiz, Alejandro Sicilia Burgoa, Fernando Acevedo Quero, Paraninfo. Madrid. 1997.
  • Nebro, Antonio.J.,Alba, Enrique y Luna, Francisco. Optimización Multi-Objetivo y Computación Grid.Disponible en:[5].Consultada 1 de julio del 2019.
  • Vargas V, Luis y Luzardo M, Gonzalo. “COMPUTACIÓN DISTRIBUIDA Y SU APLICACIÓN TECNOLÓGICA PARA INCREMENTAR LA EFICIENCIA DEL USO DE RECURSOS INFORMÁTICOS EN RED DE LA ESPOL”. Disponible en:[6].
  • HURTADO JARA, OMAR.Sistemas distribuidos. Disponibles en:[7]. Consultado 7 de julio del 2019.
  • Lorenzo del Ca, Juan Ángel. Computación Distribuida. Disponible en:[8]. Consultado 7 de julio del 2019.
  • Juan Ángel Lorenzo del Castillo. Computación Distribuida.Disponible en:[9]. Consultada 8 de julio del 2019.