lunes, 6 de febrero de 2017

LA COMPUTACIÓN GRID

LA COMPUTACIÓN GRID


La computación grid es una tecnología innovadora que permite utilizar de forma coordinada todo tipo de recursos (entre ellos cómputo, almacenamiento y aplicaciones específicas) que no están sujetos a un control centralizado. En este sentido es una nueva forma de computación distribuida, en la cual los recursos pueden ser heterogéneos (diferentes arquitecturas, supercomputadores, clusters...) y se encuentran conectados mediante redes de área extensa (por ejemplo Internet). Desarrollado en ámbitos científicos a principios de los años 1990, su entrada al mercado comercial siguiendo la idea de la llamada Utility computing supone una importante revolución.

El término grid se refiere a una infraestructura que permite la integración y el uso colectivo de ordenadores de alto rendimiento, redes y bases de datos que son propiedad y están administrados por diferentes instituciones. Puesto que la colaboración entre instituciones envuelve un intercambio de datos, o de tiempo de computación, el propósito del grid es facilitar la integración de recursos computacionales. Universidades, laboratorios de investigación o empresas se asocian para formar grid para lo cual utilizan algún tipo de software que implemente este concepto.


Llamamos grid al sistema de computación distribuido que permite compartir recursos no centrados geográficamente para resolver problemas de gran escala. Los recursos compartidos pueden ser ordenadores (PC, estaciones de trabajo, supercomputadoras, PDA, portátiles, móviles, etc), software, datos e información, instrumentos especiales (radio, telescopios, etc.) o personas/colaboradores.


La computación grid ofrece muchas ventajas frente a otras tecnologías alternativas. La potencia que ofrecen multitud de computadores conectados en red usando grid es prácticamente ilimitada, además de que ofrece una perfecta integración de sistemas y dispositivos heterogéneos, por lo que las conexiones entre diferentes máquinas no generarán ningún problema. Se trata de una solución altamente escalable, potente y flexible, ya que evitarán problemas de falta de recursos (cuellos de botella) y nunca queda obsoleta, debido a la posibilidad de modificar el número y características de sus componentes.


Estos recursos se distribuyen en la red de forma transparente pero guardando unas pautas de seguridad y políticas de gestión de carácter tanto técnico como económico. Así pues, su objetivo será el de compartir una serie de recursos en la red de manera uniforme, segura, transparente, eficiente y fiable, ofreciendo un único punto de acceso a un conjunto de recursos distribuidos geográficamente en diferentes dominios de administración. Esto nos puede llevar a pensar que la computación Grid permite la creación de empresas virtuales. Es importante saber que una grid es un conjunto de maquinas distribuidas que ayudan a mejorar el trabajo sobre software pesados



CARACTERÍSTICAS


• Capacidad de balanceo de sistemas: no habría necesidad de calcular la capacidad de los sistemas en función de los picos de trabajo, ya que la capacidad se puede reasignar desde la granja de recursos a donde se necesite;
• Alta disponibilidad. con la nueva funcionalidad, si un servidor falla, se reasignan los servicios en los servidores restantes;
• Reducción de costes: con esta arquitectura los servicios son gestionados por "granjas de recursos". Ya no es necesario disponer de "grandes servidores" y podremos hacer uso de componentes de bajo coste. Cada sistema puede ser configurado siguiendo el mismo patrón; Se relaciona el concepto de grid con la nueva generación del protocolo IP. El nuevo protocolo de Internet IPv6 permitirá trabajar con una Internet más rápida y accesible. Una de las ideas clave en la superación de las limitaciones actuales de Internet IPv4 es la aparición de nuevos niveles de servicio que harán uso de la nueva capacidad de la red para intercomunicar los ordenadores.

Este avance en la comunicación permitirá el avance de las ideas de grid computing al utilizar como soporte la altísimo conectividad de Internet. Es por ello que uno de los campos de mayor innovación en el uso del grid computing, fuera de los conceptos de supercomputación, es el desarrollo de un estándar para definir los Grid Services frente a los actuales Web Services.

Desventajas

No obstante, la computación grid presenta algunos inconvenientes que deben solucionarse. Estos problemas son:
• Recursos heterogéneos: la computación grid debe ser capaz de poder manejar cualquier tipo de recurso que maneje el sistema, si no resultará totalmente inútil.
• Descubrimiento, selección, reserva, asignación, gestión y monitorización de recursos son procesos que deben controlarse externamente y que influyen en el funcionamiento del grid.
• Necesidad de desarrollo de aplicaciones para manejar el grid, así como desarrollo de modelos eficientes de uso.
• Comunicación lenta y no uniforme.
• Organizativos: dominios de administración, modelo de explotación y costes, política de seguridad...
• Económicos: precio de los recursos, oferta/demanda

Ventajas y requisitos

En definitiva, grid supone un avance respecto a la World Wide Web:
El World Wide Web proporciona un acceso transparente a información que está almacenada en millones de ordenadores repartidos por todo el mundo. Frente a ello, el grid es una infraestructura nueva que proporciona acceso transparente a potencia de cálculo y capacidad de almacenamiento distribuida por una organización o por todo el mundo.
Los requisitos que debe cumplir cualquier grid son:
Los datos deben compartirse entre miles de usuarios con intereses distintos. Se deben enlazar los centros principales de supercomputación, no sólo los PC. Se debe asegurar que los datos sean accesibles en cualquier lugar y en cualquier momento. Debe armonizar las distintas políticas de gestión de muchos centros diferentes. Debe proporcionar seguridad.

Y los beneficios que se obtienen:

• Proporciona un mecanismo de colaboración transparente entre grupos dispersos, tanto científicos como comerciales.
• Posibilita el funcionamiento de aplicaciones a gran escala.
• Facilita el acceso a recursos distribuidos desde nuestros PC.
• Todos estos objetivos y beneficios se engloban en la idea de "e-Ciencia".
Estos beneficios tendrán repercusión en muchos campos:
• Medicina (imágenes, diagnosis y tratamiento).
• Bioinformática (estudios en genómica y proteómica).
• Nanotecnología (diseño de nuevos materiales a escala molecular).
• Ingeniería (diseño, simulación, análisis de fallos y acceso remoto a instrumentos de control).
• Recursos naturales y medio ambiente (previsión meteorológica, observación del planeta, modelos y predicción de sistemas complejos).

La tecnología derivada del grid abre un enorme abanico de posibilidades para el desarrollo de aplicaciones en muchos sectores. Por ejemplo: desarrollo científico y tecnológico, educación, sanidad, y administración pública.

Seguridad y Protección en Sistemas Distribuidos


Seguridad y Protección en Sistemas Distribuidos


  Es la capacidad del sistema para proteger datos, servicios y recursos de usuarios no autorizados. El fin de la seguridad es garantizar la protección o estar libre de todo peligro y/o daño, y que en cierta manera es infalible. Como esta característica, particularizando para el caso de sistemas operativos o redes de computadores, es muy difícil de conseguir (según la mayoría de expertos, imposible), se suaviza la definición de seguridad y se pasa a hablar de fiabilidad (probabilidad de que un sistema se comporte tal y como se espera de el) más que de seguridad; por tanto, se habla de sistemas fiables en lugar de hacerlo de sistemas seguros. A grandes rasgos se entiende que mantener un sistema seguro (o fiable) consiste básicamente en garantizar tres aspectos: confidencialidad, integridad y disponibilidad. Algunos estudios integran la seguridad dentro de una propiedad más general de los sistemas, la confiabilidad, entendida como el nivel de calidad del servicio ofrecido. Consideran la disponibilidad como un aspecto al mismo nivel que la seguridad y no como parte de ella, por lo que dividen esta última en sólo las dos facetas restantes, confidencialidad e integridad. En este trabajo no seguiremos esa corriente por considerarla minoritaria.


La confidencialidad: Nos dice que los objetos de un sistema han de ser accedidos únicamente por elementos autorizados a ello, y que esos elementos autorizados no van a convertir esa información en disponible para otras entidades.
La integridad: Significa que los objetos sólo pueden ser modificados por elementos autorizados, y de una manera controlada.
La disponibilidad: Indica que los objetos del sistema tienen que permanecer accesibles a elementos autorizados; es el contrario de la negación de servicio. Generalmente tienen que existir los tres aspectos descritos para que haya seguridad: por ejemplo en un sistema Unix puede conseguir confidencialidad para un determinado fichero haciendo que ningún usuario (ni siquiera el root) pueda leerlo, pero este mecanismo no proporciona disponibilidad alguna.
 
Dependiendo del entorno en que un sistema Unix trabaje, a sus responsables les interesara dar prioridad a un cierto aspecto de la seguridad. 
Por ejemplo, en un sistema militar se antepondría la confidencialidad de los datos almacenados o transmitidos sobre su disponibilidad: seguramente, es preferible que alguien borre información confidencial (que se podría recuperar después desde una cinta de backup) a que ese mismo atacante pueda leerla, o a que esa información esté disponible en un instante dado para los usuarios autorizados.
 En cambio, en un servidor NFS de un departamento se premiará la disponibilidad frente a la confidencialidad: importa poco que un atacante lea una unidad, pero que esa misma unidad no sea leída por usuarios autorizados va a suponer una pérdida de tiempo y dinero. En un entorno bancario, la faceta que mas ha de preocupar a los responsables del sistema es la integridad de los datos, frente a su disponibilidad o su confidencialidad: Es menos grave que un usuario consiga leer el saldo de otro que el hecho de que ese usuario pueda modificarlo.


Dentro del campo de la protección de la información podemos destacar tres grandes problemas, además comunes, que intervienen en nuestros sistemas y perturban nuestra información, primero encontramos a los HACKER que son usuarios muy avanzados que por su elevado nivel de conocimientos técnicos son capaces de superar determinadas medidas de protección. Su motivación abarca desde el espionaje industrial hasta el mero desafío personal. También Los virus informáticos son programas, generalmente destructivos, que se introducen en el ordenador (al leer un disco o acceder a una red informática) y pueden provocar pérdida de la información (programas y datos) almacenada en el disco duro. Para evitar problemas en caso de apagón eléctrico existen las denominadas UPS (acrónimo de UninterruptedPowerSupply), baterías que permiten mantener el sistema informático en funcionamiento, por lo menos el tiempo necesario para apagarlo sin pérdida de datos.


MEDIDAS DE SEGURIDAD 

• Una alternativa es el uso de una llave pública y una privada mediante el protocolo de seguridad Securet Socket Layer (SSL) que autentifica tanto al usuario que envía como al que recibe la información, porque es durante este proceso de transmisión que ocurren la mayor parte de las violaciones en la seguridad. 
• Una técnica para proteger la confidencialidad es el cifrado. La información puede cifrarse y descifrarse empleando ecuaciones matemáticas y un código secreto denominado clave. Generalmente se emplean dos claves, una para codificar la información y otra para descodificarla. La clave que codifica la información, llamada clave privada, sólo es conocida por el emisor. La clave que descodifica los datos, llamada clave pública, puede ser conocida por varios receptores. Ambas claves se modifican periódicamente, lo que complica todavía más el acceso no autorizado y hace muy difícil descodificar o falsificar la información cifrada. 

Estas técnicas son imprescindibles si se pretende transmitir información confidencial a través de un medio no seguro como puede ser Internet. Las técnicas de firma electrónica permiten autentificar los datos enviados de forma que se pueda garantizar la procedencia de los mismos (imprescindible, por ejemplo, a la hora de enviar una orden de pago).

SINCRONIZACIÓN DE SISTEMAS DISTRIBUIDOS

1.     SINCRONIZACIÓN DE SISTEMAS DISTRIBUIDOS.

Además de la comunicación, es fundamental la forma en que los procesos 
  • Cooperan.
  • Se sincronizan entre sí.
Ejemplos:
  • Forma de implantar las regiones críticas.
  • Forma de asignar recursos en un sistema distribuido.
Los problemas relativos a las regiones críticas, exclusión mutua y la sincronización:
  • Generalmente se resuelven en sistemas de una sola cpu con métodos como los semáforos y los monitores:
    • Se basan en la memoria compartida.
    • No son aplicables a sistemas distribuidos.
Otro problema de gran importancia es el tiempo y la forma de medirlo, ya que juega un papel fundamental en algunos modelos de sincronización.
             
     Un sistema distribuido debe permitir el apropiado uso de los recursos, debe encargarse de un buen desempeño y de la consistencia de los datos, además de mantener seguras todas estas operaciones La sincronización de procesos en los sistemas distribuidos resulta más compleja que en los centralizados, debido a que la información y el procesamiento se mantienen en diferentes nodos. Un sistema distribuido debe mantener vistas parciales y consistentes de todos los procesos cooperativos y de cómputo. Tales vistas pueden ser provistas por los mecanismos de sincronización. El término sincronización se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre sí:

1. La sincronización entre el emisor y el receptor.
2. La especificación y control de la actividad común entre procesos cooperativos.
3. La serialización de accesos concurrentes a objetos compartidos por múltiples procesos. Haciendo referencia a los métodos utilizados en un sistema centralizado, el cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos



2.     SINCRONIZACIÓN DE RELOJES

La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten en forma cronológica, y a la vez respetando el orden de los eventos dentro del sistema.

En general la sincronización en procesos distribuidos tiene muchas aplicaciones, especialmente en aplicaciones en tiempo real, simulación, líneas de producción, sistemas de trámites complejos, cálculos avanzados, renderización, indexación para buscadores web, encuestas, etc. esto define un ámbito particular de aplicaciones que necesariamente caen en el concepto de aplicaciones en tiempo real, pero ésto no es tan estricto, ya que la sincronización puede trabajar a otra escala. En pocas palabras, podemos correr una aplicación distribuida con relojes sincronizados en cámara lenta, de tal suerte que su comportamiento y sus dificultades de operación no cambian. Esto abre otra posiblidad que es la sincronizacion de eventos en una escala de tiempo mayor, en la que la propagación de la sincronía es tan veloz que se hace transparente a la operación del S.D.

Relojes Fisicos


Las computadoras poseen un circuito para el registro del tiempo conocido como dispositivo reloj.Es un cronómetro consistente en un cristal de cuarzo de precisión sometido a una tensión eléctrica. Los relojes físicos son relojes que:
Deben ser iguales, estar sincronizados.
No deben desviarse del tiempo real más allá de cierta magnitud.


Reloges Logicos

Los relojes lógicos son un mecanismo para capturar la causalidad en un sistema distribuido. En un sistema de relojes lógicos cada sitio tiene un reloj lógico que avanza de acuerdo a un conjunto de reglas. A cada evento se le asigna una etiqueta de tiempo mediante la cual es posible determinar la relación de causalidad entre los eventos. Se presenta un estudio teórico de los relojes lógicos a través de su historia, desde los relojes de Lamport hasta los relojes Adaptativos.


3.     ALGORITMOS PARA LA SINCRONIZACIÓN DE RELOJES

La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten en forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. Para lograr esto existen varios métodos o algoritmos que se programan dentro del sistema operativo, entre los cuales tenemos:

·                  Algoritmo de Cristian

     Este algoritmo está basado en el uso del tiempo coordenado universal (siglas en inglés, UTC), el cual es recibido por un equipo dentro del sistema distribuido. Este equipo, denominado receptor de UTC, recibe a su vez solicitudes periódicas del tiempo del resto de máquinas del sistema a cada uno de los cuales les envía una respuesta en el menor  plazo posible informando el tiempo UTC solicitado, con lo cual todas las máquinas del sistema actualicen su hora y se mantenga así sincronizado todo el sistema. El receptor de UTC recibe el tiempo a través de diversos medios  disponibles, entre los cuales se menciona las ondas de radio, Internet, entre otros. Un gran problema en este algoritmo es que el tiempo no puede correr hacia atrás:

El tiempo del receptor UTC no puede ser menor que el tiempo de la máquina que le solicitó el tiempo.

El servidor de UTC debe procesar las solicitudes de tiempo con el concepto de interrupciones, lo cual incide en el tiempo de atención.

El intervalo de transmisión de la solicitud y su respuesta debe ser tomado en cuenta para la sincronización. El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.

·                  Algoritmo de Berkeley

Un sistema distribuido basado en el algoritmo de Berkeley no dispone del tiempo coordenado universal (UTC); en lugar de ello, el sistema maneja su propia hora. Para realizar la sincronización del tiempo en el sistema, también existe un servidor de tiempo que, a diferencia del algoritmo de Cristian, se comporta de manera activa. Este servidor realiza un muestreo  periódico del tiempo que poseen algunas de las máquinas del sistema, con lo cual calcula un tiempo promedio, el cual es enviado a todas las máquinas del sistema a fin de sincronizarlo.

4.     EXCLUSIÓN MUTUA, ALGORITMOS NO BASADOS EN PASO DE MENSAJES Y BASADOS EN PASO DE MENSAJES.

Ø  Algoritmos para la Exclusión Mutua
Estos algoritmos están definidos para asegurar el cumplimiento de exclusión mutua entre procesos que requieren acceder a una región crítica del sistema.

Este algoritmo simula la filosofía de operación de exclusión mutua utilizada en sistemas monoprocesadores. Para ello, existe una máquina en el sistema distribuido que se encarga de controlar el acceso a las diferentes secciones críticas, la cual es denominada coordinador. Cada proceso del sistema que requiera acceso a una sección crítica, debe solicitar acceso al coordinador, el cual lo otorgará en caso que la sección crítica esté disponible; caso contrario, colocará en una cola de espera al proceso solicitante. Cuando un proceso que recibió acceso a la sección crítica culmina su tarea, informa por igual al coordinador a fin de que éste pueda otorgar acceso a un próximo proceso solicitante o que se encuentre en cola de espera.

Este algoritmo presenta una gran limitante, consistente en que el coordinador representa un único punto de control para el acceso a las diferentes secciones críticas del sistema distribuido, lo cual se convierte en un cuello de botella que puede afectar la eficiencia de los procesos que se ejecutan en el sistema. Igualmente, cualquier falla que presente el coordinador ocasionará la paralización de los procesos.


La exclusión mutua no es mas que una serie de algoritmos que se utilizan en la programación concurrente para con esta programación poder evitar el ingreso a las secciones criticas por mas de un proceso simultaneo.
Algunos ejemplos de algoritmos clásicos de exclusión mutua son:

·                  El algoritmo de Dekker.
·                  El algoritmo de Peterson.

Ø  Algoritmos Basados En  Paso De Mensaje

  Comparten un token único entre todos los nodos el cual permite que un nodo entre en la sección critica (SC) si posee al token, este utiliza números de secuencia en lugar de marcas de tiempo. Cada partición de un token contiene un numero de secuencias del resto de los nodos donde un nodo incrementa el contador de numero secuencia cada vez que realiza una petición para poseer a token.


Ø  Algoritmos No Basados En El  Paso De Mensaje

 

5.     ALGORITMOS DE ELECCIÓN

Muchas aplicaciones y servicios distribuidos se basan en la existencia de un proceso diferenciado que coordina el trabajo de un conjunto de procesos. Por ejemplo, acabamos de ver que el algoritmo centralizado para exclusión mutua distribuida requiere un proceso coordinador. En este mismo capítulo comprobaremos esta misma necesidad para los algoritmos de acuerdo atómico y en algunos modelos de replicación. En todas estas situaciones se requiere detectar que el proceso coordinador falla y elegir un nuevo proceso que asuma el papel de coordinador. La elección requiere el acuerdo sobre quién va a ser el nuevo y único coordinador. De nuevo, las decisiones se basan en la existencia de plazos para la recepción de los mensajes de respuesta. Por otra parte, para determinar el criterio de elección de un proceso como coordinador se requiere definir un orden total entre el conjunto de procesos. Supondremos que los procesos tienen asociados identificadores únicos según los cuales pueden ordenarse.

Elección. La figura de un proceso coordinador o líder es frecuente en sistemas distribuidos. La posibilidad de fallo del coordinador hace necesarios mecanismos que permitan la promoción de un proceso como nuevo coordinador, lo que implica detectar el fallo del coordinador y la elección de uno nuevo.

6.     BLOQUEOS EN SISTEMAS DISTRIBUIDOS

Son peores que los bloqueos en sistemas monoprocesador:
·          Son más difíciles de evitar, prevenir, detectar y solucionar.
·          Toda la información relevante está dispersa en muchas máquinas.
Son especialmente críticos en sistemas de bases de datos distribuidos.

Las estrategias usuales para el manejo de los bloqueos son:

-       Algoritmo del avestruz: Ignorar el problema.
-       Detección: Permitir que ocurran los bloqueos, detectarlos e intentar recuperarse de ellos.
-       Prevención: Hacer que los bloqueos sean imposibles desde el punto de vista estructural.
-       Evitarlos: Evitar los bloqueos mediante la asignación cuidadosa de los recursos.

El algoritmo del avestruz merece las mismas consideraciones que en el caso de mono-procesador.

En los sistemas distribuidos resulta muy difícil implantar algoritmos para evitar los bloqueos:
·          Se requiere saber de antemano la proporción de cada recurso que necesitará cada proceso.
·          Es muy difícil disponer de esta información en forma práctica.
Las técnicas más aplicables para el análisis de los bloqueos en sistemas distribuidos son:
·                  Detección.
·                  Prevención.


MIDDLEWARE

MIDDLEWARE


El término middleware se discute en [Lewandosky 1998]. El software distribuido requerido para facilitar las interacciones cliente-servidor se denomina middleware. El acceso transparente a servicios y recursos no locales distribuidos a través de una red se provee a través del middleware, que sirve como marco para las comunicaciones entre las porciones cliente y servidor de un sistema.

El middleware define: el API que usan los clientes para pedir un servicio a un servidor, la transmisión física de la petición vía red, y la devolución de resultados desde el servidor al cliente. Ejemplos de middleware estándar para dominios específicos incluyen: ODBC, para bases de datos, Lotus para groupware, HTTP y SSL para Internet y CORBA, DCOM y JAVA RMI para objetos distribuidos.

El middleware fundamental o genérico es la base de los sistemas cliente-servidor. Los servicios de autentificación en red, llamadas a procedimiento remoto, sistemas de ficheros distribuidos y servicios de tiempo en red se consideran parte del middleware genérico. Este tipo de middleware empieza a ser parte estándar de los sistemas operativos modernos como Windows NT. En sistemas donde no se disponga deberá recurrirse a middleware del tipo OSD DCE (Distributed Computing Environment) [OSF 1994]. El middleware específico para un dominio complementa al middlware genérico de cara a aplicaciones mucho más específicas.

El protocolo de comunicaciones más usado por el middleware, tanto genérico como específico, es TCP/IP. Esto se debe a su amplia difusión en todos los sistemas operativos del mercado y en especial en los ordenadores personales.


El Middleware es fundamental para:

·         Migrar las aplicaciones monolíticas basadas en mainframes a aplicaciones Cliente/Servidor.
·         Soportar la comunicación entre procesos a través de plataformas heterogéneas
·          Los servicios del middleware proporcionan un conjunto de APIs más funcional que el sistema operativo y los servicios de red para permitir a una aplicación.
·        Localización transparente a través de la red, proporcionando interacción con otra aplicación o servicio.
·        Ser independiente de los servicios de red.
·        Ser fiable y disponible.
·        Ser escalable, en el sentido de poder aumentar su capacidad sin pérdida de funcionalidad.

Funciones Middleware

Las aplicaciones middleware realizan las siguientes funciones:

  • Ocultar la distribución: middleware maneja el hecho de que una aplicación esté compuesta de muchas partes interconectadas ejecutándose en ubicaciones distribuidas.
  • Ocultar la heterogeneidad: middleware oculta o hace transparente al usuario diversas plataformas de sistemas operativos, protocolos de comunicación y dispositivos hardware.
  • Proveer interfaces uniformes y estándares de alto nivel: tanto a los desarrolladores como a los integradores de aplicaciones, de tal manera que las aplicaciones sean fácilmente desarrolladas, reusada s, transportadas y puedan inter operar correctamente.
  • Suministrar un conjunto de servicios comunes: para realizar varias actividades de propósito general con el fín de evitar duplicar esfuerzos y facilitar la colaboración entre aplicaciones.


Componentes Middleware

El middleware está compuesto de agentes de software que generalmente actúan entre el sistema operativo y las aplicaciones, con la finalidad de proveer comunicación entre diferentes aplicaciones en un sistema distribuido. Las funciones que realiza el middleware dentro de un cluster de servidores (datacenter) son:
  • Una interfaz única de acceso al sistema, denominada SSI, la cual genera la sensación al usuario de que utiliza un único computador muy potente.
  • Herramientas para la optimización y mantenimiento del sistema: migración de procesos, checkpoint-restart (congelar uno o varios procesos, mudarlos de servidor y continuar su funcionamiento en el nuevohost), balanceo de carga, tolerancia a fallos, etc.
  • Escalabilidad: debe poder detectar automáticamente nuevos servidores conectados al cluster para proceder a su utilización.
  • Existen diversos tipos de middleware, como por ejemplo: MOSIX, OpenMOSIX, Condor, OpenSSI, etc.



El middleware recibe los trabajos entrantes al cluster y los redistribuye de manera que el proceso se ejecute más rápido y el sistema n o sufra sobrecargas en un servidor. Esto se realiza mediante políticas definidas en el sistema (automáticamente o por un administrador) que le indican dónde y cómo debe distribuir los procesos, por un sistema de monitorización, el cual controla la carga de cada CPU y la cantidad de procesos en él.

El middleware también debe poder migrar procesos entre servidores con distintas finalidades:

  • Balancear la carga: si un servidor está muy cargado de procesos y otro está ocioso, pueden transferirse procesos a este último para liberar de carga al primero y optimizar el funcionamiento.
  • Mantenimiento de servidores: si hay procesos corriendo en un servidor que necesita mantenimiento o una actualización, es posible migrar los procesos a otro servidor y proceder a desconectar del cluster al primero.
  • Priorización de trabajos: en caso de tener varios procesos corriendo en el cluster, pero uno de ellos de mayor importancia que los demás, puede migrarse este proceso a los servidores que posean más o mejores recursos para acelerar su procesamiento.


Servicios middleware

Dentro de los principales servicios que se pueden ofrecer con una plataforma middleware se encuentran los siguientes:

Administración de Objetos: Soporta desde simples tipos de datos hasta grandes volúmenes de información.
Administración de Documentos: Usa el servicio de administración de objetos y además nombra y organiza documentos. Soporta el lenguaje de fórmulas (lenguaje de script para construir aplicaciones de usuarios).
Seguridad: soporta encripción, firmas digitales y control de acceso discrecional.
Indexamiento: Suministra acceso indexado tanto a resúmenes como a contenidos completos de documentos. Opera con herramientas de recuperación basadas en contenido y descriptores de documentos
Mensajería: soporta direccionamiento y transporte de correos, incluyendo direccionamientos a grupos de nombres y nombres jerárquicamente organizados.
Eventos: Soportar notificación dinámica a través de mensajes de correo o registro de Bitácora (Log).
Registro (Logging): Para auditar eventos.
Nombrado: Soporta enlaces Cliente/Servidor y lo integra con servicios de transporte y seguridad.
Administración del Sistema: Soporta control de administración desde consolas remotas.

Además  de  lo  anterior,  los  siguientes  componentes  podrían  ser  servicios Middleware:

Administración de Presentaciones: Administrador de formas, administrador de gráficos, enlazador de hipermedios y administrador de impresión.
Computación: Ordenamientos, servicios matemáticos de cálculos, servicios de internacionalización (para manipulación de alfabetos y caracteres).
Administración de la Información: Servidor de Directorios, Administrador de Logs, administrador de archivos, administrador de registros, sistemas de bases de datos relacionales, sistemas de bases de datos orientadas a objetos, administrador de bodegas de datos.
Comunicaciones: Mensajería Peer-to-Peer (P2P), Llamadas a procesos remotos (RPC), colas de mensajes, correo electrónico, intercambio electrónico de datos (EDI).
 Administración de Sistemas: Servicio de notificación de eventos, servicios de contabilidad, administrador de la configuración de dispositivos, administrador de instalación de software, detector de fallas, coordinador de recuperaciones

PROTOCOLOS

PROTOCOLOS

Conjunto de reglas que son utilizadas para establecer una comunicación en su forma más simple entre determinados procesos para cumplir una determinada tarea, siendo respetadas para el envío y la recepción de datos a través de una red.

Los protocolos pueden ser implementados por hardware, software o la combinación de ambos. Por el contrario, un protocolo no define cómo se programa el software para que sea compatible con el protocolo. Esto se denomina implementación o la conversión de un protocolo a un lenguaje de programación.

En Internet, los protocolos utilizados pertenecen a una sucesión de protocolos o a un conjunto de protocolos relacionados entre sí.

Un protocolo permite que componentes heterogéneos de sistemas distribuidos puedan desarrollarse independientemente, y por medio de módulos de software que componen el protocolo, haya una comunicación transparente entre ambos componentes. Es conveniente mencionar que estos componentes del protocolo deben estar tanto en el receptor como en el emisor.

Ejemplos de protocolos usados en los sistemas distribuidos:

·       IP: Protocolo de Internet.- Protocolo de la capa de Red, que permite definir la unidad básica de transferencia de datos y se encarga del direccionamiento de la información, para que llegue a su destino en la red.

·       TCP: Protocolo de Control de Transmisión.- Protocolo de la capa de Transporte, que permite dividir y ordenar la información a transportar en paquetes de menor tamaño para su transporte y recepción.

·       HTTP: Protocolo de Transferencia de Hipertexto.- Protocolo de la capa de aplicación, que permite el servicio de transferencia de páginas de hipertexto entre el cliente WEB y los servidores.

·       SMTP: Protocolo de Transferencia de Correo Simple.- Protocolo de la capa de aplicación, que permite el envío de correo electrónico por la red.

·       POP3: Protocolo de Oficina de Correo.- Protocolo de la capa de aplicación, que permite la gestión de correos en Internet, es decir, le permite a una estación de trabajo recuperar los correos que están almacenados en el servidor.