400 likes | 699 Views
Java RMI vrs. CORBA y el objeto Parallel CORBA Parallel and Distributed Computing Using Java. CONTENIDO. Introducción a CORBA CORBA Vrs. RMI Parallel CORBA Object Conclusiones. Que es CORBA?. Acrónimo de: Common Object Request Broker Architecture.
E N D
Java RMI vrs. CORBA y el objeto Parallel CORBA Parallel and Distributed Computing Using Java
CONTENIDO • Introducción a CORBA • CORBA Vrs. RMI • Parallel CORBA Object • Conclusiones
Que es CORBA? • Acrónimo de: Common Object Request Broker Architecture. • Estándar desarrollado y mantenido por OMG (Object Management Group). • Intenta ser un marco genérico para trabajar con objetos en forma distribuida. • Independiente de la plataforma y del lenguaje de programación. • Integración con sistemas heredados y nuevas tecnologías. • Transparencia de redes, lenguajes, OS, modelo de objetos, paradigma, administración et.
Arquitectura Básica CORBA. (1/3) Consiste de : • Object Request Broker (ORB), que provee los medios para la comunicación cliente / servidor. • Interface Definition Languge (IDL), usado para la definición de interfases estáticas de los objetos. • Dinamic Invocation Interface (DII) y Dinamic Scheleton Interface (DSI), utilizada para obtener interfaces dinami-camente desde un repositorio. • Permiten acceder a objetos sin “stubs” y “skeletons” de un tipo especifico. • En tiempo de ejecución el cliente pude determinar la Interface a un objeto del cual a recibido referencia. • Llamar objetos sin tener que conocer su Interface también en tiempo de ejecución
Arquitectura Básica CORBA. (2/3) • También especifica un protocolo de comunicación entre ORBs llamado Internet Inter_ORB Protocol (IIOP) • “Stubs” que son procedimientos locales correspon-dientes a una única operación, que ejecutan cuando son llamados. • Esqueletos de Objetos “Object skeleton”. • Los “Stubs” y los esqueletos de objetos sirven como proxis para clientes y servidores.
Como funciona CORBA? (1/3) • Se debe compilar la IDL en “stubs” y “object skeletons”. • Se escribe un un objeto y su cliente. • “Stubs” y “Skeletons” actúan como proxis para el cliente y el servidor respectivamente . • IDL define la interfaz tan estrictamente que el “stub” en el cliente no tiene incompatibilidad con el “eskeleton” en el servidor. • Esto sucede incluso si se utilizan diferentes lenguajes u ORBs de diferentes proveedores.
Como funciona CORBA? (2/3) • Cada objeto CORBA tiene un identificador único (object reference). • Los clientes utilizan estas referencias para dirigir sus invocaciones. • De esta manera indican al ORB cual es la instancia exacta que se invoca. • El cliente actúa como si estaría actuando sobre el objeto pero lo hace sobre el “stub” IDL que actúa como proxi. • Este pedido atraviesa el “stub” continua por el ORB y en lado de la implementación a través del “skeleton” para obtener el objeto donde se ejecuta.
Como funciona CORBA? (3/3) • Para una invocación remota utiliza el mismo código pero con la referencia remota. • Cuando el ORB detecta que se trata de un objeto remoto lo direcciona por la red. • Para esto se requiere dos cosas: • Que el cliente sepa exactamente que operaciones puede ejecutar. • Que el cliente y la implementación estén de acuerdo en el protocolo (IIOP).
Implementaciones de CORBA para Java? • Existen varios proveedores:
RMI vrs. CORBA • Desde la versión 1.1 de JDK, java tiene su propio ORB llamado RMI (no compatible con el ORB de CORBA). • RMI es nativo de Java, una extensión del lenguaje. • Depende de muchas características propias de Java: • Serializacion de objetos. • Portable. • Implementaciones de objetos descargables. • Java Interface Definitions. • Como Consecuencia es muy natural para los programadores Java, que no necesitaran aprender tecnologías “extranjeras”
RMI vrs. CORBA (Programación vrs. integración) 1/4 • Java con extensión RMI es considerada una tecnología de programación • CORBA por su parte es considerada una tecnología de integración. • Para ilustrarlo consideremos lo siguiente:
RMI vrs. CORBA (Programación vrs. integración) 2/4 • Java provee un API llamada JNI (Java Native Interface) para interactuar con otro lenguajes primariamente C y C++. • RMI es una tecnología Java a Java. • Si se quiere que Java se comunique con un objeto remoto en otro lenguaje se lo debe hacer por medio de un intermediario.
RMI vrs. CORBA (Programación vrs. integración) 3/4 • CORBA es una tecnología de integración, diseñada para ser el pegamento para unir tecnologías diferentes. • No existe como un punto en el espacio de programación, sino que ocupa el espacio entre los diferentes lenguajes. • Cuando un cliente utiliza java para comunicarse con un objeto C++, tanto el programador Java como el programador C++ trabajan en su propio lenguaje. • CORBA ORB presenta el cliente Java con un “stub” Java y al programador C++ un “skeleton”” C++. • CORBA se encarga de los problemas de transferencia de lenguajes.
Parallel CORBA Object 1/3 • Busca proveer de una técnica eficiente para encapsular código paralelo basado en el uso de librerías MPI. • Un código paralelo MPI puede verse como un conjunto de procesos idénticos SPMD. • Usualmente se utiliza una aproximación maestro esclavo. • Se selecciona un proceso como maestro que es el único que se encapsula en un objeto CORBA. • Este se conecta a los esclavos mediante una capa de comunicación MPI.
Parallel CORBA Object 1/4 • Esta solución requiere modificar los códigos MPI si no siguen la estructura maestro esclavo. • El maestro puede ser un cuello de botella importante cuando dos códigos MPI se deben comunicar entre si. • El cliente obtiene los datos generados por el primer código y es enviado al segundo, este los coloca en los procesos MPI esclavos, los procesa, obtiene los resultados y los envía al cliente • No ofrece una solución escalable, si el numero de procesos SPMD o el tamaño del problema se incrementa (cantidad de datos transmitidos entre dos procesos paralelos) habrá un importante costo por sobrecarga en comunicaciones.
Parallel CORBA Object 3/4 • La solución requiere que todos los procesos SPMD se encapsulen en objetos CORBA. • Esto permitirá que todos los procesos SPMD se comunique a través del ORB. • Sin embargo es necesario que no se exponga el paralelismo al cliente. • Eso quiere decir que el cliente tiene que ver una entidad en lugar de de todos los objetos CORBA que encapsulan procesos SPMD. • También si el cliente tiene que transmitir datos entre los objetos CORBA tiene que hacerlo lo mas transparentemente. • Estos dos requerimientos transparencia y rendimiento han concluido en el concepto de un nuevo objeto, el CORBA Paralelo:
Parallel CORBA Object 4/4 • Un objeto CORBA encapsula un proceso SPMD. • Todos los objetos CORBA pertenecientes a una colección pueden ser manipulados como una única entidad por el sistema. • La invocación de una operación por el cliente resultara en la ejecución del método asociado por todos lo objetos de la colección en el servidor. • Esta activación paralela se hace transparentemente y la distribución de datos entre objetos de una colección es manejad por el sistema. • Una Interface a un objeto paralelo se describe como una extensión el IDL llamada “Extended IDL”. • Se han creado un conjunto de nuevas palabras clave para especificar el numero de objetos en una colección y la distribución de datos.
Interface Parallel CORBA. • interface[*:2*n] MatrixOperations { const long SIZE=100; typedef double Vector[SIZE]; typedef double Matrix[SIZE][SIZE]; void multiply(in dist[BLOCK][*] Matrix A, in Vector B, out dist[BLOCK] Vector C ); void skal(in dist[BLOCK] Vector C, out csum double val);};
Conclusiones • Existen varias implementaciones de CORBA para java actualmente en el mercado, lo cual hace viable su utilización con este lenguaje. • CORBA no debe verse como una competencia de RMI sino como una solución complementaria para ciertos problemas. • Se están haciendo importantes esfuerzos para extender CORBA y permitir su mejor utilización en ambientes paralelos. • Es indiscutible el éxito que han tenido tanto Java como CORBA y por tanto es de esperarse una mayor colaboración de estas tecnologías complementarias a futro.
Bibliografia GENERAL CORBA: http://www.corba.org http://developer.java.sun.com/developer/onlineTraining/corba/corba.html COMPARATIVO RMI / CORBA: • Gopalan Suresh Raj, “A Detailed Comparison of CORBA, DCOM and Java/RMI”.http://www.execpc.com/~gopalan/misc/compare.htm • David Curtis,“Java, RMI and CORBA” (1997 Object Management Group). http//:cgi.omg.org/library/wpjava.html • Michael W. Gilbode,“A Comparison of CORBA and Java RMI” . http//:www.csc.villanova.edu/~mgilbode/8530/corba-rmi.html CORBA PARALELO: • T. Priol, C. René, “Parallel CORBA Object”.http://www.irisa.fr/paris/nanglais/paco.htm • C. Perez, T. Priol,“Grid Computing with Off-the-Shelves Middleware Technologies” . http//:www.ercim.org/publication/Ercim_News/enw45/priol.html • C. René, T. Priol, “MPI Code Encapsulation using Parallel CORBA Object”. INRIA, Rapport de recherche No. 3648 Marzo de 1999. • C. René, T. Priol, G. Alléon, “Programming SCI Clusters using Paraller CORBA Objects”. INRIA, Rapport de recherche No. 3649 Marzo de 1999.