Download Sistemas Distribuidos
Document related concepts
no text concepts found
Transcript
Asignatura: Sistemas Distribuidos Docente: José Luis Caero Trabajo Práctico: Nº 6 Integrantes: Florencia Gutiérrez Keen, Adolfo Chércoles, Walter Daniel Zalazar, Jorge García, Javier Salazar 1. Describa los siguientes items relacionados con los protocolos de internet: 1.1: Características de las comunicaciones entre procesos 1.2: Sockets 1.3: Comunicación de datagramas UDP 1.4: Comunicación de Streams TCP 2. Describa los siguientes representaciones externa de datos y empaquetados: 2.1: Representación común de datos de CORBA 2.2: Serialización objetos Java 2.3: Referencia objetos remotos 3. Describa la función y/o finalidad de los siguientes casos 3.1: El modelo de objetos y objetos distribuidos 3.2: El modelo de objetos distribuidos 3.3: Diseño e implementación para RMI 3.4: Compactación automática de memoria Página 1 de 6 Asignatura: Sistemas Distribuidos Docente: José Luis Caero Trabajo Práctico: Nº 6 Integrantes: Florencia Gutiérrez Keen, Adolfo Chércoles, Walter Daniel Zalazar, Jorge García, Javier Salazar 1.1 Características de las comunicaciones entre procesos La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación). Los protocolos desarrollados para internet son los mayormente usados: IP (capa de red), protocolo de control de transmisión (capa de transporte) y protocolo de transferencia de archivos, protocolo de transferencia de hipertexto (capa de aplicación). Características: Sincronizada: El proceso que envía se “bloquea” hasta que el mensaje se haya enviado, mientras que en el proceso receptor, activa un recibe y también se bloquea hasta que el mensaje se haya recibido. Asíncrona: EL proceso emisor no se bloquea al enviar, mientras que el proceso receptor puede tener las dos variantes: bloqueado o no bloqueado. En este último caso, se utiliza un buffer de mensajes recibidos. Destino: el proceso receptor puede tener asociada: Una dirección_IP+Puerto_local, que la hace más bien estática O un nombre (que deberá ser traducida por un servicio de nombres) que le permita cambiar de localidad del proceso receptor. Ejemplo: www.unap.cl || 64.76.169.121:80 Observación: un proceso recibe por un puerto pero puede responder a través de varios otros. Fiabilidad : Se define en término de validez e integridad Un sistema provee validez si entrega todo el mensaje o una parte que sea aceptable para el proceso receptor. Un sistema de comunicación resguarda la integridad si entrega los mensajes sin corromperse ni duplicarse. Ordenación: En algunos casos de comunicación entre procesos, es requisito mantener el orden de llegada de mensajes, de acuerdo al orden de salida de los mismo. En otro tipo de aplicaciones, el orden no podría tener mayor relevancia. 1.2 Sockets Los sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten que un proceso hable ( emita o reciba información ) con otro proceso incluso estando estos procesos en distintas máquinas. Esta característica de interconectividad entre máquinas hace que el concepto de socket nos sirva de gran utilidad. Esta interfaz de comunicaciones es una de las distribuciones de Berkeley al sistema UNIX, implementándose las utilidades de interconectividad de este Sistema Operativo ( rlogin, telnet, ftp, ... ) usando sockets. 1.3 Comunicación de datagramas UDP: - Un mensaje enviado vía UDP, no posee reintentos y acuso de recibo por parte del proceso receptor. - Si algo falla el mensaje podría no llegar a su destino Página 2 de 6 Asignatura: Sistemas Distribuidos Docente: José Luis Caero Trabajo Práctico: Nº 6 Integrantes: Florencia Gutiérrez Keen, Adolfo Chércoles, Walter Daniel Zalazar, Jorge García, Javier Salazar - El receptor posee un puerto específico para recibir mensajes El cliente podrá utilizar cualquier puerto para enviarlos. El receptor averiguará por el mensaje entrante, la IP y el puerto del proceso emisor, lo que le permite enviar una respuesta 1.4 Comunicación de Streams TCP: Etapas de la comunicación: El proceso cliente envía una solicitud connect al la dirección ip y puerto del servidor. EL servidor posee una cola para recibir las solicitudes connect y a al momento de realizar un accept, dispone un nuevo puerto para el stream de comunicación con el cliente. Cuando se establece la comunicación, cada proceso dispone de dos stream uno para escribir y otro para leer. Para finalizar la comunicación uno de los procesos cierra cu conector de envió, el receptor detecta esto y cierrar sus conectores. Aspectos importantes: Coordinación entre el emisor y receptor en el tipo de datos emitidos y recibidos. Ocurren bloqueos cuando: o El receptor intenta leer y no existen datos en la cola. o El emisor intenta escribir y el buffer está lleno o El servidor atiende a cada cliente a través de un hilo independiente, que si se bloquea no afecta a los otros clientes. Características: Tamaño de los mensajes: la aplicación decide sobre el tamaño de los mensajes y el protocolo inferior TCP los traduce a paquetes IP y se asegura que lleguen a destino. Por su parte, el proceso receptor “consume” los datos enviados según las necesidades de la aplicación. Mensajes perdidos: Para cada paquete IP que TCP envía desde el emisor debe esperar un acuse de recibo desde el receptor, si pasado un tiepo (timeout) no lo recibe, lo considera como paquete perdido y reenvía el paquete IP nuevamente. (el protocolo de ventana deslizante mejora este mecanismo). Control de Flujo: TCP regula y coordina el proceso de envío (producción) y recepción (consumo) de los paquete: por ejemplo, si el receptor lee muy lento, bloquea al emisor hasta que el lector haya leído una cantidad suficiente de byte. Duplicación y Ordenación de los Mensajes: A cada paquete IP se le asocia un Id único que permite al receptor ordenarlos y eliminar paquetes repetidos. Destino de los mensajes: Para establecer la comunicación, el proceso emisor envía una solicitud connect al receptor (necesita conocer dirección ip y puerto del recepetor) y este debiera responderle con un accept. Una vez establecida la comunicación, los procesos leen y escriben en el stream, sin preocuparse por la dirección IP y el número de puerto Página 3 de 6 Asignatura: Sistemas Distribuidos Docente: José Luis Caero Trabajo Práctico: Nº 6 Integrantes: Florencia Gutiérrez Keen, Adolfo Chércoles, Walter Daniel Zalazar, Jorge García, Javier Salazar 2.1 Representación común de datos de CORBA: CORBA utiliza la representación externa para envío de los datos, lo que le permite trabajar con una variedad de lenguajes (fortrasn c, c++, java,..) Métodos para intercambio de datos - Cada vez que dos procesos se envían mensajes, estos son pasados a bytes para la transmisión y luego reconstruidos en procesos receptor. - Es necesario ponerse de acuerdo acerca del tipo de dato que se está enviando. - No todas las máquinas hacen el mismo tratamiento interno acerca de los tipos de datos (ejemplo: punto flotante, ASCII, Unicode). - - El emisor y el receptor utilizan un formato común y externo. Cada dato es acompañado de un identificador tipo de dato externo, para su traducción correcta en el receptor Si para algunos datos, ambos poseen el mismo tratamiento interno, en ese caso no utilizará el formato externo. Representación Externa de datos: Estándar acordado para tratar datos simples y las estructuras de datos. Empaquetado (marshalling) : es el ensamblado de un conjunto de datos para transmitirlos al receptor. Desempaquetado(unmarshalling) : desensamblado en el destino, para obtener la colección equivalente de datos. 2.2 Serialización objetos Java: Java serializa los objetos (en una secuencia de bits) antes del envío y el receptor reconstruye el objeto basado en un árbol de clases que debe conocer previamente ( tal vez por medio de un mensaje previo o que ya esté almacenado en disco). En ambos casos toda esta tarea es realizada por el midleware (CORBA o RMI de Java) y el programador no interviene directamente en este proceso. 2.3 Referencia objetos remotos: RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar un método de manera remota. Forma parte del entorno estándar de ejecución de Java y provee de un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras tecnologías debe utilizarse CORBA o SOAP en lugar de RMI. RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP), recolección de basura distribuida (Garbage Collector distribuido) y paso de tipos arbitrarios (funcionalidad no provista por CORBA). Por medio de RMI, un programa Java puede exportar un objeto, lo que significa que éste queda accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de este momento, un cliente puede conectarse e invocar los métodos proporcionados por el objeto. Página 4 de 6 Asignatura: Sistemas Distribuidos Docente: José Luis Caero Trabajo Práctico: Nº 6 Integrantes: Florencia Gutiérrez Keen, Adolfo Chércoles, Walter Daniel Zalazar, Jorge García, Javier Salazar La invocación se compone de los siguientes pasos: - Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de serialización de Java). Invocación del método (del cliente sobre el servidor). El invocador se queda esperando una respuesta. Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía al cliente. El código cliente recibe la respuesta y continúa como si la invocación hubiera sido local. 3.1 El modelo de objetos y objetos distribuidos DOM (Document Object Model), es esencialmente una interfaz de programación de aplicaciones que proporciona un conjunto estándar de objetos para representar documentos HTML y XML, un modelo estándar sobre cómo pueden combinarse dichos objetos, y una interfaz estándar para acceder a ellos y manipularlos. A través del DOM, los programas pueden acceder y modificar el contenido, estructura y estilo de los documentos HTML y XML, que es para lo que se diseñó principalmente. El responsable del DOM es el consorcio W3C (World Wide Web Consortium). En efecto, el DOM es una API para acceder, añadir y cambiar dinámicamente contenido estructurado en documentos con lenguajes como ECMAScript 3.2 El modelo de objetos distribuidos DCOM (Distributed Component Object Model)es una tecnología propietaria de Microsoft para desarrollar componentes software distribuidos sobre varios ordenadores y que se comunican entre sí. Extiende el modelo COM de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET La adición de la "D" a COM fue debido al uso extensivo de DCE/RPC, o más específicamente la versión mejorada de Microsoft, conocida como MSRPC. En términos de las extensiones que añade a COM, DCOM tenía que resolver los problemas de 1. Aplanamiento - Serializar y deserializar los argumentos y valores de retorno de las llamadas a los métodos "sobre el cable". 2. Recolección de basura distribuida, asegurándose que las referencias mantenidas por clientes de las interfaces sean liberadas cuando, por ejemplo, el proceso cliente ha caído o la conexión de red se pierde. 3.3 Diseño e implementación para RMI La arquitectura RMI puede verse como un modelo de cuatro capas. Primera capa La primera capa es la de aplicación y se corresponde con la implementación real de las aplicaciones cliente y servidor. Aquí tienen lugar las llamadas a alto nivel para acceder y exportar objetos remotos. Cualquier aplicación que quiera que sus métodos estén disponibles para su acceso por clientes remotos debe declarar dichos métodos en una interfaz que extienda java.rmi.Remote. Dicha interfaz se usa básicamente para "marcar" un objeto como remotamente accesible. Una vez que los métodos han sido implementados, el objeto debe ser exportado. Esto puede hacerse de forma implícita si el objeto extiende la clase UnicastRemoteObject (paquete java.rmi.server), o puede hacerse de forma explícita con una llamada al método exportObject() del mismo paquete. Segunda capa Página 5 de 6 Asignatura: Sistemas Distribuidos Docente: José Luis Caero Trabajo Práctico: Nº 6 Integrantes: Florencia Gutiérrez Keen, Adolfo Chércoles, Walter Daniel Zalazar, Jorge García, Javier Salazar La capa 2 es la capa proxy, o capa stub-skeleton. Esta capa es la que interactúa directamente con la capa de aplicación. Todas las llamadas a objetos remotos y acciones junto con sus parámetros y retorno de objetos tienen lugar en esta capa. Tercera capa La capa 3 es la de referencia remota, y es responsable del manejo de la parte semántica de las invocaciones remotas. También es responsable de la gestión de la replicación de objetos y realización de tareas específicas de la implementación con los objetos remotos, como el establecimiento de las persistencias semánticas y estrategias adecuadas para la recuperación de conexiones perdidas. En esta capa se espera una conexión de tipo stream (stream-oriented connection) desde la capa de transporte. Cuarta Capa La capa 4 es la de transporte. Es la responsable de realizar las conexiones necesarias y manejo del transporte de los datos de una máquina a otra. El protocolo de transporte subyacente para RMI es JRMP (Java Remote Method Protocol), que solamente es "comprendido" por programas Java. Toda aplicación RMI normalmente se descompone en 2 partes: 1. Un servidor, que crea algunos objetos remotos, crea referencias para hacerlos accesibles, y espera a que el cliente los invoque 2. Un cliente, que obtiene una referencia a objetos remotos en el servidor, y los invoca. Usar RMI para desarrollar aplicaciones distribuidas comprende los siguientes pasos: 1. Diseñar e implementar los componentes para una aplicación distribuida. 2. Compilar las fuentes. 3. Hacer las clases accesibles a la red. 4. Correr la aplicación. 3.4 Compactación automática de memoria Recuperación de memoria cuando nadie tenga una referencia a un objeto remoto o local Página 6 de 6