MODELO CLIENTE - SERVIDOR

 


"Dentro de veinte años estarás más decepcionado por las cosas que no hiciste, que por las que hiciste. Así que suelta las amarras. Navega lejos del puerto seguro. Atrapa los vientos alisios en tus velas". 

-Mark Twain


Objetivo: Conocer el marco Corba aplicado a los modelos de Arquitectura Empresarial con el fin de comprender su aplicación en los entornos laborales

El modelo cliente-servidor es la arquitectura más citada cuando se discuten los sistemas distribuidos. Es el modelo más importante y sigue siendo el más ampliamente utilizado. En particular, los procesos de cliente interactúan con los procesos de servidor individuales en equipos anfitriones (host) potencialmente separados, con el fin de acceder a los recursos compartidos que administran.
PROXI 

 Es un servidor que se emplea como intermediario entre las peticiones de recursos que realiza un cliente a otro servidor. Por ejemplo, si una computadora A solicita un recurso a una computadora C, lo hará mediante una petición a la computadora B que, a su vez, trasladará la petición a la computadora C. De esta manera, la computadora C no sabrá que la petición procedió originalmente de la computadora A. Esta situación estratégica de punto intermedio suele ser aprovechada para soportar una serie de funcionalidades, como:

•Proporcionar caché. •Control de acceso. •Registro del tráfico. •Prohibir cierto tipo de tráfico. •Mejorar el rendimiento. •Mantener el anonimato

El proxy más conocido es el servidor proxy web, su función principal es interceptar la navegación de los clientes por páginas web por motivos de seguridad, rendimiento, anonimato, entre otros.

Clúster 

En informática, el término clúster (“grupo” o “racimo”) hace referencia a conjuntos o conglomerados de computadoras construidos mediante el uso de hardware común y que se comportan como si fueran una única computadora. El uso de los clústeres varía desde las aplicaciones de supercómputo, servidores web y comercio electrónico hasta el software de misiones críticas y bases de datos de alto rendimiento. El cómputo con clústeres es el resultado de la convergencia de varias tendencias tecnológicas actuales, entre las que se pueden destacar:

• Microprocesadores de alto rendimiento. • Redes de alta velocidad. • Software para cómputo distribuido de alto rendimiento. • Crecientes necesidades de potencia computacional.

Los servicios esperados de un clúster principalmente son:

• Alto rendimiento. • Alta disponibilidad. • Escalabilidad. • Balanceo de carga.  

Típicamente respecto a la rapidez y disponibilidad, se espera que un clúster sea más económico que el uso de computadoras individuales. Un clúster puede ser:

• Homogéneo. • Semihomogéneo. • Heterogéneo

Un clúster es homogéneo cuando todas las computadoras tienen la misma configuración en hardware y sistema operativo. Es semihomogéneo cuando las computadoras tienen diferente rendimiento pero guardan una similitud con respecto a su arquitectura y sistema operativo. Finalmente, un clúster es heterogéneo cuando las computadoras tienen diferente hardware y sistema operativo.
Grid

El cómputo grid es un paradigma del cómputo distribuido, frecuentemente usado para indicar una infraestructura de gestión de recursos distribuidos que se centra en el acceso coordinado a los recursos informáticos remotos. Estos recursos de cómputo son colectados desde múltiples localizaciones para alcanzar una meta común. A diferencia del cómputo de cluster (en grupo o racimo), el cómputo grid tiende a ser más heterogéneo y disperso geográficamente. Generalmente las grids son usadas para una variedad de propósitos, pero puede haber grids especializadas para fines específicos. Beneficios del cómputo grid :

• Explotación de recursos infrautilizados. 
• Capacidad de CPU paralelos. 
• Recursos virtuales y organizaciones virtuales para la colaboración. 
• Acceso a recursos adicionales. 
• Balanceo de recursos. 
• Fiabilidad. 
• Mejor gestión de infraestructuras de TI más grandes y distribuidos.

CORBA

CORBA es una arquitectura de comunicaciones que soporta la construcción e integración de tecnologías de diferente fabricante independientemente del tiempo de creación, así como pueden intercambiar información personas que dominan diferente idioma, sin importar que no sea usado actualmente. El paradigma orientado a objetos juega un importante rol en el desarrollo de software y cuenta con gran popularidad desde su introducción. La orientación a objetos se comenzó a utilizar para el desarrollo de sistemas distribuidos en la década de 1980. El Grupo de Gestión de Objetos (OMG-Object Management Group) se creó en 1989 como una asociación de las empresas líderes de la tecnología software para definir especificaciones que puedan ser implementadas por ellas y que faciliten la interoperabilidad de sus productos. Los middlewares basados en objetos distribuidos están diseñados para proporcionar un modelo de programación basado en principios orientados a objetos y, por tanto, para llevar los beneficios del enfoque a objetos para la programación distribuida. Los principales ejemplos de middleware basados en objetos distribuidos incluyen Java RMI y CORBA. Es usado en Distintos sistemas operativos (Unix, Windows, MacOS, OS/2), Distintos protocolos de comunicación (TCP/IP, IPX), Distintos lenguajes de programación (Java, C, C++), Distinto hardware.

Para construir componentes que utilicen el entorno CORBA se deben seguir los siguientes pasos:

1. Definir la interfaz remota. Se define, en primer lugar, la interfaz del objeto remoto en IDL. Dicha interfaz permitirá generar, de manera automática, el código fuente del stub y el skeleton así como todo el código necesario para comunicarse con el ORB. Si sólo se implementa el cliente porque el servidor ya existe, se tendría que proporcionar el fichero IDL correspondiente a la interfaz que expone el servidor.

2.Compilar la interfaz remota. El compilador genera todo el código fuente mencionado en el paso anterior.

3.Implementar el servidor. A partir de los esqueletos que genera el compilador idl es sencillo implementar el servidor. Además de los métodos que implementan la interfaz remota, el código del servidor crea un mecanismo para arrancar el ORB y esperar por la invocación de un cliente.  

4.Implementar el cliente. De una manera similar al servidor, el cliente hace uso de los stubs generados en el paso 2. El cliente se basa en el stub para arrancar su ORB, encontrar el servidor utilizando el servicio de nombrado, obtener una referencia al objeto remoto e invocar sus métodos.

5. Arrancar los programas. Una vez está todo implementado, se arranca el servicio de nombrado, el servidor y finalmente, el cliente

Características fundamentales de la Arquitectura CORBA

1 Objetos CORBA Las implementaciones de los objetos reciben las invocaciones como llamadas hacia arriba (up-call), desde el ORB hacia la Implementación de la interfaz. La implementación de la interfaz puede elegir un adaptador de objetos entre un conjunto de ellos, una decisión que estará basada en la clase de servicios que pueda requerir dicha implementación

Los objetos CORBA se diferencian de los objetos de los lenguajes habituales de programación en que:

• Pueden estar localizados en cualquier lugar de la red. 
• Pueden ejecutarse en cualquier plataforma de hardware y de sistema operativo. 
• Pueden estar escritos en cualquier lenguaje.
 • Pueden tener la capacidad de detectar el entorno, procesar información y además tienen la capacidad de comunicación. 
2. ORB object requestbróker Componente que permite que clientes y objetos puedan comunicarse en un ambiente distribuido. Y que contempla cada una de las interfaces que el ORB manipula. El bus de objetos es el intermediario entre clientes y servidores que transmite las peticiones cliente- servidor y las respuestas servidor-cliente. Se necesita un ORB en cada máquina. El ORB soporta cuatro tipos de interfaces de objetos.

Object Services: Son interfaces para servicios generales. Son usadas en cualquier programa basado en objetos distribuidos. Common Facilities: Son interfaces orientadas al usuario final y que se programan por la aplicación específica. Domain Interfaces: Son interfaces de dominio específico para las aplicaciones. Application Interfaces: Este tipo de interfaz acepta interfaces que no sean estandarizadas y se utilizan en aplicaciones específicas.

4. IDL (Interface Definition Language) Para poder especificar los servicios que ofrecen los objetos que forman parte de un sistema abierto y distribuido, se necesita contar con algún lenguaje preciso, bien definido, e independiente de cualquier posible representación de los datos o estructuras que él define, así como la futura implementación de los objetos que especifica. La norma ISO/IEC 14750 (ITUT X.920) define dicho lenguaje, al que se conoce como lenguaje de definición de interfaces de ODP, o ODP IDL por su acrónimo en inglés. Su principal objetivo es describir la signatura de los objetos que especifica, en términos de las estructuras de datos que se manejan y el perfil de las operaciones que definen sus servicios. De esta forma se consigue la ocultación necesaria para el desarrollo de aplicaciones abiertas10.

5. Stub Es el intermediario entre el cliente y el ORB. El Stub recoge del cliente llamadas a métodos y las transmite al ORB. Se requiere una clase de stub por cada clase remota. Además, es un componente que actúa como servidor, puede estar ejecutándose en cualquier máquina conectada a la red que recibe peticiones por parte de los clientes que pueden ser locales o remotos. Indistintamente de ello, el cliente siempre tendrá la ilusión de que la llamada se ejecuta localmente. En otras palabras el stub logra que el programador no se ocupe de las instrucciones de programación remotas ya que son objetos que residen en el cliente y que representan objetos remotos instalados en un servidor. En él se identifica: Host, puerto e identificador del objeto

6. Esqueleto: Es el intermediario entre ORB y los objetos del servidor. Recibe llamadas del ORB y ejecuta los métodos correspondientes en el servidor sobre el objeto que corresponda. Cuando el cliente establece un objeto local (con servicio remoto), la petición se realiza por intermedio del protocolo de comunicaciones IIOP a través del ORB. El servidor recibe la petición, busca el objeto definido (compara el esqueleto del método en el módulo esqueleto) lo ejecuta y retorna la respuesta al cliente. 

Comunicación transitoria orientada a mensajes 

Tiempo de desempeño Además, la ejecución asíncrona permite que los procesos controlen la gestión y terminación de tarea y que el cliente pueda finalizar o continuar haciendo otras cosa en su sistema, por otro lado se reduce el tráfico en la red y la capacidad de cómputo del cliente

Movilidad Reducción de la dependencia de la disponibilidad de la red y del cliente/servidor. Los procesos migrados al sistema servidor no se ven afectados por los fallos del cliente o de la red. Los procesos se ejecutan realizando tareas específicas en lugares diferentes.

Automatización de las tareas distribuidas. El problema fundamental de los sistemas de integración es el software. Aún no existe mucha experiencia en el diseño, implantación y uso de software como CORBA. Precisamente, éste es un campo de investigación actual. Las redes son indispensables para la comunicación entre máquinas; sin embargo, pueden plantear problemas de saturación, embotellamiento, interrupción o pérdidas de mensajes. El posible acceso a todo el sistema por parte de los usuarios plantea el inconveniente de la necesidad de un sistema de seguridad adecuado y estándar, aunque CORBA maneja la seguridad.
 



Comentarios

Entradas populares de este blog

LOGICA JUICIO, ORACIÓN Y PROPOSICIÓN

Probabilidad y estadística Métodos de conteo

LEYES DEL ÁLGEBRA PROPOSICIONAL