Академический Документы
Профессиональный Документы
Культура Документы
2.1 Tecnologas de sistemas distribuidos 2.1.1 Modelo de objetos distribuidos 2.1.1.1 Arquitectura RMI (Remote Method Invocation) 2.1.1.2 Activacin de objetos
Introduccin
En los ltimos aos en la informtica se est viviendo un gran avance da a da en el diseo y desarrollo de Sistemas Distribuidos. Ms all de las cuestiones clsicas de diseo de los mismos (acceso y localizacin transparentes, escalabilidad, tolerancia a fallos, rendimiento, etc) se plantea qu tecnologa utilizar para su desarrollo. Por mencionar algunos: Sistemas distribuidos en Java, incluyendo el estndar CORBA (Common Object Request Broker Architecture) del OMG (Object Management Group) y el sistema propio de Java, RMI.
Qu es CORBA?
El CORBA es:
Middleware orientado a objetos que permite invocacin de mtodos distribuidos de forma transparente a las redes, sistemas operativos, arquitecturas y lenguajes de programacin.
Para la implementacin de sistemas distribuidos se requiere de tener bien identificados dos puntos primordiales para la operacin:
PROTOCOLO
Definicin: Es un conjunto bien conocido de reglas y formatos que se utilizan para la comunicacin entre procesos que realizan una determinada tarea. Se requieren dos partes:
-Especificacin de la secuencia de mensajes que se han de intercambiar. -Especificacin del formato de los datos en los mensajes.
Un protocolo permite que componentes heterogneos de sistemas distribuidos puedan desarrollarse independientemente, y por medio de mdulos de software que componen el protocolo, haya una comunicacin transparente entre ambos componentes. Es conveniente mencionar que estos componentes del protocolo deben estar tanto en el receptor como en el emisor.
-IP: Protocolo de Internet -TCP: Protocolo de Control de Transmisin -HTTP: Protocolo de Transferencia de Hipertexto -SMTP: Protocolo de Transferencia de Correo Simple -POP3: Protocolo de Oficina de Correo
MIDDLEWARE
Definicin: Capa de software intermedio entre el cliente y el servidor. Es la capa de software que nos permite gestionar los mecanismos de comunicaciones. Ejemplo, si se hace la peticin de una pgina web desde un browser en el cliente, el middleware determina la ubicacin y enva una peticin para dicha pgina. El servidor Web, interpreta la peticin y enva la pgina al software intermedio, quien la dirige al navegador de la mquina cliente que la solicit.
Existen dos tipos: -Software intermedio general. Servicios generales que requieren todos los clientes y servidores, por ejemplo: software para las comunicaciones usando el TCP/IP, software parte del sistema operativo que, por ejemplo, almacena los archivos distribuidos, software de autenticacin, el software intermedio de mensajes de clientes a servidores y viceversa. -Software intermedio de servicios. Software asociado a un servicio en particular, por ejemplo: software que permite a dos BD conectarse a una red cliente/servidor (ODBC: Conectividad abierta de BD), software de objetos distribuidos, por ejemplo la tecnologa CORBA permite que objetos distribuidos creados en distintos lenguajes coexistan en una misma red (intercambien mensajes), software intermedio para software de grupo, software intermedio asociado a productos de seguridad especficas (Conexiones Seguras: Sockets), etc.
Sockets:
designa un concepto abstracto por el cual dos programas (posiblemente situados en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.
Qu es el Framework?
Un Framework es:
literalmente un marco o ambiente de trabajo. Normalmente integra componentes variados para desarrollo de aplicaciones, pero dependen del lenguaje y ambiente de desarrollo. Por ejemplo, un framework para Java es Struts, un framework para Windows es .Net, etc.
-DCOM.- Distributed Component Object Model.- El Modelo de Objeto Componente Distribuido, est incluido en los sistemas operativos de Microsoft. Es un juego de conceptos e interfaces de programa, en el cual los objetos de programa del cliente, pueden solicitar servicios de objetos de programa servidores en otros ordenadores dentro de una red. Esta tecnologa est asociada a la plataforma de productos Microsoft. -CORBA.- Common Object Request Broker Architecture.Tecnologa introducida por el Grupo de Administracin de Objetos OMG, creada para establecer una plataforma para la gestin de objetos remotos independiente del lenguaje de programacin.
Arquitectura RMI
Conceptos Bsicos
La idea que sustenta RMI es un ideal recurrente en tecnologas de Orientacin a Objetos: hacer que un objeto invoque a otro objeto remoto con independencia de la JVM (Java Virtual Machine) o el servidor en el que se encuentra, como si fuera un objeto local.
Cliente Usa
Servidor
Hay varias cosas que debemos tener, una de ellas es un interfaz para el objeto remoto. Un concepto fundamental es que el cliente slo puede invocar al objeto remoto a travs de su interfaz remota. La interfaz remota es el "escaparate" del objeto remoto, es el modo en que el objeto remoto "exporta" sus servicios. Aquello a lo que el cliente accede est en el interfaz del objeto remoto. Lo que no significa que el objeto remoto no tenga otros mtodos, claro que puede tenerlos; pero slo los mtodos que estn en su interfaz son invocados por el cliente.
Esquema RMI
Aplicacin cliente
Stub
Capa proxy
Skeleton
Capa de transporte
La primera Aplicacin:
capa
es
la
de
y corresponde a la implementacin real de las aplicaciones cliente y servidor. Aqu tienen lugar las llamadas a alto nivel para acceder y exportar objetos remotos. Cualquier aplicacin que quiera que sus mtodos estn disponibles para su acceso por clientes remotos debe declarar dichos mtodos en una. Dicha interfaz se usa bsicamente para "marcar" un objeto como remotamente accesible. Una vez que los mtodos han sido implementados, el objeto debe ser exportado.
Esta capa es la que interacta directamente con la capa de aplicacin. Todas las llamadas a objetos remotos y acciones junto con sus parmetros y retorno de objetos tienen lugar en esta capa.
Qu es el Proxy?
Un Proxy es:
Un programa o dispositivo que realiza una accin en representacin de otro, esto es, si una hipottica mquina a solicita un recurso a una c, lo har mediante una peticin a b; C entonces no sabr que la peticin procedi originalmente de a. Su finalidad ms habitual es la de servidor proxy, que sirve para interceptar las conexiones de red que un cliente hace a un servidor de destino, por varios motivos posibles como seguridad, rendimiento, anonimato, etc.
Qu es el RPC?
El RPC es:
(Remote Procedure Call, Llamada a Procedimiento Remoto) es un protocolo que permite a un programa de ordenador ejecutar cdigo en otra mquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. De esta manera el programador no tena que estar pendiente de las comunicaciones, estando stas encapsuladas dentro de las RPC.
Inicia una conexin con la MV (maquina virtual) que contiene al objeto remoto. Aplana y transmite los parmetros de la invocacin a la MV remota. Espera por el resultado de la invocacin. Des aplana y devuelve el valor de retorno o la excepcin. Devuelve el valor a quien lo llam.
Los cabos se encargan de ocultar el aplanado de los parmetros, as como los mecanismos de comunicacin empleados. En la MV remota, cada objeto debe poseer su esqueleto correspondiente. El esqueleto es responsable de despachar la invocacin al objeto remoto. Cuando un esqueleto recibe una invocacin, realiza las siguientes acciones: Des aplana los parmetros necesarios para la ejecucin del mtodo remoto. Invoca el mtodo de la implantacin del objeto remoto. Aplana los resultados y los enva de vuelta al cliente.
La capa 4 es la de Transporte:
Es la responsable de realizar las conexiones necesarias y manejo del transporte de los datos de una mquina a otra. El protocolo de transporte subyacente para RMI es JRMP (Java Remote Method Protocol), que solamente es "comprendido" por programas Java.
En general la capa de transporte de RMI es responsable de: --Establecer conexiones al espacio de direcciones. --Manejar las conexiones. --Monitorear las conexiones actuales. -- Escuchar las llamadas. --Mantener una tabla de objetos remotos que residen en el espacio de direcciones. --Establecer una conexin para una llamada.
Un servidor, que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque. Un cliente, que obtiene una referencia a objetos remotos en el servidor, y los invoca.
Las metas que se pretenden alcanzar al soportar objetos distribuidos en Java, son:
-Proporcionar invocacin remota de objetos que se encuentran en MVs diferentes. -Soportar llamadas a los servidores desde los applets. -Integrar el modelo de objetos distribuidos en el lenguaje Java de una manera natural, conservando en medida de lo posible la semntica de los objetos Java. -Hacer tan simple como sea posible la escritura de aplicaciones distribuidas. -Preservar la seguridad proporcionada por el ambiente Java. -Proporcionar varias semnticas para las referencias de los objetos remotos (persistentes, no persistentes y de "activacin retardada").
Un Applet es:
Un applet es un componente de una aplicacin que se ejecuta en el contexto de otro programa, por ejemplo un navegador web. El applet debe ejecutarse en un contenedor, que lo proporciona un programa anfitrin, mediante un plugin, un applet no puede ejecutarse de manera independiente.
El mecanismo para proveer referencias persistentes y administrar la ejecucin de las implantaciones de los objetos, es la activacin automtica de dichos objetos. En RMI es posible activar dinmicamente los objetos en el momento en que son necesitados, es decir, cuando se accede a un objeto remoto "activable" va la ejecucin de alguno de sus mtodos, el sistema se encarga de ejecutar el objeto en una MV Java apropiada.
Terminologa Activables
de
Objetos
Un objeto remoto activo, es aquel que es instanciado y exportado en una MV Java. Un objeto remoto pasivo, es aquel que no ha sido instanciado o exportado, pero es susceptible de pasar al estado activo. El proceso de llevar un objeto pasivo a activo se conoce como activacin. La activacin requiere la asociacin de un objeto con una MV. Dicha asociacin incluye la carga del cdigo que implementa la clase en la MV, as como la restauracin del estado persistente del objeto, si es que lo tuviese.
En el sistema RMI se utiliza la activacin tarda (lazy activation), que consiste en retrasar la activacin del objeto hasta que algn cliente lo utilice por primera vez, es decir, la primera vez que se invoque alguno de sus mtodos.
Activacin Activation)
Tarda
(Lazy
La activacin tarda de objetos remotos se implanta utilizando lo que se conoce como una "referencia remota responsable" (faulting remote reference), algunas veces denominada "bloque responsable". Una referencia remota responsable a un objeto remoto, "responde" por la referencia del objeto activo durante la primera invocacin de algn mtodo del objeto. Cada referencia responsable mantiene tanto un manipulador persistente (un identificador de activacin) y una referencia remota transitoria al objeto remoto destinatario.
El identificador de activacin del objeto remoto contiene informacin suficiente para iniciar la activacin del objeto remoto y la referencia transitoria es la referencia "viva" real al objeto remoto activo, que puede utilizarse para comunicarse con l. En una referencia responsable, si la referencia viva a un objeto remoto es nula, no se sabe si el objeto destinatario est activo. Durante la invocacin del mtodo, la referencia responsable se compromete en el protocolo de activacin a obtener una referencia "viva", que es una referencia remota para el objeto recin activado. Una vez que la referencia responsable obtiene la referencia "viva", le reenva la invocacin del mtodo para que esta ltima a su vez reenve la invocacin al objeto remoto.
En trminos ms concretos, una referencia de objeto remoto contiene un tipo referencia remota responsable, que contiene dos cosas: -Un identificador de activacin para un objeto remoto y -Una referencia "viva" (posiblemente nula) que contiene el tipo referencia remota activa del objeto remoto.
Protocolo de Activacin
Durante la invocacin de un mtodo remoto, si no se conoce la referencia "viva" para el objeto destino, la referencia responsable se compromete en el protocolo de activacin. El protocolo de activacin involucra muchas entidades: la referencia responsable, el activador, un grupo de activacin en una MV Java y el objeto remoto que ser activado.
El activador (generalmente uno por mquina) es la entidad que supervisa la activacin, y acta como: Una base de datos que contiene las asociaciones entre los identificadores de activacin y la informacin necesaria para activar al objeto (la clase del objeto, su ubicacin -un camino URL-, de donde se puede obtener la clase, informacin que el objeto podra necesitar al momento de arrancar, etc.) y
Un administrador de mquinas virtuales, que se encarga de ejecutar MVs (cuando sea necesario) y de encaminar solicitudes de activacin de objetos (junto con la informacin necesaria) al grupo de activacin correcto dentro una MV remota. Un grupo de activacin (uno por cada MV Java) es la entidad que recibe la solicitud de activacin de un objeto en una MV y devuelve el objeto activado al activador.
El protocolo de activacin es como sigue. Una referencia responsable utiliza un identificador de activacin y llama al activador (mediante una interfaz RMI interna) para activar al objeto asociado con el identificador. El activador busca el descriptor de activacin (activation descriptor) del objeto (previamente registrado).
El descriptor del objeto contiene: Un identificador del grupo del objeto (especifica la MV en que ser activado), El nombre de la clase del objeto, Un URL que contenga el camino de dnde obtener el cdigo de la clase del objeto, Datos de inicializacin aplanados especficos al objeto (por ejemplo el nombre del archivo que contiene el estado persistente del objeto).