Usted está aquí: Inicio Ingeniería Informática Desarrollo de Aplicaciones Distribuidas Prácticas Implementación de un pipeline de cálculo distribuido basado en Java RMI

Implementación de un pipeline de cálculo distribuido basado en Java RMI

Acciones de Documento
  • Vista de contenidos
  • Marcadores (bookmarks)
  • Exportación de LTI
Autores: Alejandro Calderon Mateos, David Expósito Singh, Javier García Blas
 

Descripción

El objetivo de la práctica es la familiarización, por parte del alumno, con el uso de la API de Java RMI, así como con la arquitectura cliente/servidor. El alumno deberá diseñar, codificar y evaluar un sistema distribuido de cálculo en pipeline (descrito en la siguiente sección). El lenguaje empleado será el Java y el sistema operativo será el UNIX/Linux.

Estructura

El sistema distribuido consiste de cuatro aplicaciones:

  • Un cliente, que declara un array de N elementos, el cual envía al servidor1.
  • Un servidor1, que realiza la raíz cuadrada de todos los elementos del array que el cliente le envía.
  • Un servidor2, que eleva al cubo todos los elementos del array que el servidor1 le envía.
  • Un servidor3, que calcula en seno de todos los elementos del array que el servidor2 le envía, y así mismo, se encarga de enviar al cliente el resultado de la suma de todos los elementos de dicho array.
     

Figura Práctica 1

 

Desarrollo de la aplicación:

Todos los servidores deben exportar un objeto remoto. Dicho objeto debe ofrecer al menos dos métodos:

  • funcion que recibe como argumento el array sobre el que ejecutar la operación correspondiente.
  • registrar que recibe como argumento un objeto que implementa la interfaz remota del cliente y lo almacena para posteriormente enviarle el resultado de la operación por callback. Este método sólo ha de tener código en el servidor3.

El cliente debe contener un objeto remoto que defina al menos un método que será invocado por el servidor de callback:

  • notificar que recibe como argumento el resultado de la operación y se encarga de imprimirlo.

Estructura del sistema de archivos para la entrega

Crear un directorio llamado DAD_PRAC1_2011. Este subdirectorio contendrá los subdirectorios llamados Serv1, Serv2, Serv3, Cliente e Interfaces.

  • Serv1 se corresponde con el servidor1. Su código fuente debe estar en este directorio. Su clase principal se denomina Servidor1 (debe aparecer en el fichero Servidor1.java). Sus argumentos de entrada son la IP y el número de puerto en el que se inicia el registro RMI del servidor2. Su implementación debe estar en el fichero Serv1Impl.java y se debe denominar Serv1Impl.
  • Serv2 se corresponde con el servidor2. Su estructura es análoga a Serv1 (reemplazando Serv1 por Serv2). Sus argumentos de entrada son la IP y el número de puerto en el que se inicia el registro RMI del servidor3.
  • Serv3 se corresponde con el servidor3. Su estructura es análoga a Serv1 (reemplazando Serv1 por Serv3).
  • Cliente se corresponde con el cliente. Su clase principal se denomina Cliente (debe aparecer en el fichero Cliente.java). Sus argumentos de entrada son las IP, los números de puerto en los que se inician los registro RMI del servidor1 y del servidor3, y el número de elementos del array. El cliente no debe almacenar la referencia de su objeto remoto en el registro.
  • El directorio interfaces contiene los ficheros de interfaces del cliente y de los servidores. Estos son InterfazCallbackCliente.java e InterfazServidor.java.



En el directorio DAD_PRAC1_2011 debe estar el fichero memoria.pdf con la memoria y documentación asociada a la práctica.

Análisis de resultados

Una vez se haya codificado la práctica, el alumno deberá realizar un estudio comparativo del tiempo ejecución para dos configuraciones:

  • Ejecutando en una sóla estación los tres procesos servidores y el cliente.
  • Ejecutando cada proceso en una máquina distinta.

Jusficar razonadamente los resultados obtenidos.

 
 
 
Reutilizar Curso
Descargar este curso