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

Implementación de un sistema de monitorización 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, Laura Prada

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 orientado a la monitorización de ordenadores (descrito en la siguiente sección). El lenguaje empleado será el Java y el sistema operativo será el UNIX/Linux.

Objetivos

El objetivo del sistema es diseñar e implementar una arquitectura distribuida para monitorizar un conjunto de máquinas interconectadas a través de una red.

Motivación

Las arquitecturas de tipo cluster requieren de herramientas que permitan visualizar el estado de las máquinas. Se propone la realización de un sistema de monitorización de computadoras en un entorno distribuido, gracias a la librería de invocación de métodos remotos RMI de Java.

La característica que se estudiará en esta práctica será la cantidad de memoria y cpu en uso de la máquina, accesible mediante la lectura desde los ficheros /proc/meminfo y /proc/stat, respectivamente, y la cantidad de disco en uso (que consume el sistema de ficheros montado en el directorio raíz /) accesible mediante el comando df en los entornos UNIX.

Estructura

 

Parte 1

El sistema distribuido consiste de dos aplicaciones:

  1. Un servidor que proporciona un servicio de monitorización de la memoria libre del sistema en el que ejecuta, y que se encarga de recibir las peticiones de los clientes y registrarlos (para poder enviarles los resultados de la monitorización).
  2. Varios clientes, que se registran a través del objeto remoto que proporciona el servidor de monitorización y reciben los datos de las monitorizaciones (en porcentajes) cada cierto tiempo.

Desarrollo de la aplicación: 

El servidor debe exportar un objeto remoto. Dicho objeto debe ofrecer al menos un método:

  • registrar que recibe como argumento un objeto que implementa la interfaz remota de cliente y lo almacena para posteriormente enviarle información por callback. Así mismo, recibirá el intervalo de tiempo que determina cada cuánto se realizarán las monitorizaciones.

Todos los clientes deben contener al menos un método que será invocado por el servidor en el callback:

  • notificar que recibe como argumento los datos de la monitorización del servidor y se encarga de imprimirlos.

Parte 2

El sistema distribuido consiste de tres aplicaciones:

  1. Un servidor de factoría que contiene las referencias a los objetos remotos de monitorización y que se encarga de recibir las peticiones de los clientes.
  2. Tres objetos remotos que monitorizan la cantidad de memoria, disco o CPU de la que se está haciendo uso en el sistema, y que se encargan de registrar las peticiones de los clientes (para poder enviarles los resultados de la monitorización).
  3. Varios clientes, se registran en uno o varios servidores de monitorización a través del servidor de factoría y reciben los datos de dichas monitorizaciones (en porcentajes) cada cierto tiempo.

Desarrollo de la aplicación: 

El servidor de factoría debe guardar las referencias de tres objetos remotos (es decir, no deben exportarse). Dichos objetos deben contener al menos un método:

  • suscribir que recibe como argumento un objeto que implementa la interfaz remota de cliente y lo almacena para posteriormente enviarle información por callback. Así mismo, recibirá el intervalo de tiempo que determina cada cuánto se realizarán las monitorizaciones.

El servidor de factoría debe exportar un objeto remoto. Dicho objeto debe ofrecer al menos un método:

  • registrar que recibe como argumento un objeto que implementa la interfaz remota de cliente. Así mismo, recibirá el intervalo de tiempo que determina cada cuánto se realizarán las monitorizaciones, y un indicador del servicio que se desee monitorizar (memoria, disco o cpu).

Todos los clientes deben contener al menos un método que será invocado por el servidor en el callback:

  • notificar que recibe como argumento los datos de la monitorización del servidor.

Estructura del sistema de archivos para la entrega

Crear un directorio llamado DAD_PRAC1_2010 con dos subdirectorios llamados Parte1 y Parte2. Cada subdirectorio contendrá los subdirectorios llamados Serv, y Cliente.

Parte 1

  • Serv se corresponde con la clase remota a la que pertenece el objeto de monitorización que instancia el servidor. Su código fuente debe estar dentro de este directorio. Su clase principal se denomina Servidor(debe aparecer en el fichero Servidor.java). El argumento de entrada es el número de puerto en el que se inicia el registro RMI. El interface debe estar contenido en el fichero ServInterface.java y se debe denominar ServInterface. Su implementación debe estar en el fichero ServImpl.java y se debe denominar ServImpl.
  • La clase principal del cliente se denomina Cliente. Sus argumentos de entrada deben ser la IP y puerto RMI del servidor de monitorización.

Parte 2

  • Factoria corresponde al servidor de Factoria. Su estructura es análoga a Serv (reemplazando Serv por Factoria). Su clase principal se denomina Servidor (debe aparecer en el fichero Servidor.java). El argumento de entrada es el número de puerto en el que se inicia el registro RMI. El interface debe estar contenido en el fichero FactoriaInterface.java y se debe denominar FactoriaInterface. Su implementación debe estar en el fichero FactoriaImpl.java y se debe denominar FactoriaImpl.
  • ServMem, ServCPU y ServDisco se corresponden, respectivamente, con la clases remotas a las que pertenecen los objetos que monitorizan la memoria, CPU y disco. Sus códigos fuentes deben estar dentro de este directorio. Las interfaces deben estar contenidas en los ficheros ServMemInterface.java, ServCPUInterface.java y ServDiscoInterface.java y se deben denominar ServMemInterfaceServCPUInterface yServDiscoInterface. Sus implementaciones deben estar en los ficheros ServMemImpl.java, ServCPUImpl.java y ServDiscoImpl.java y se debendenominar ServMemImpl, ServCPUImpl y ServDiscoImpl.
  • La clase principal del cliente se denomina Cliente. Sus argumentos de entrada deben ser la IP y puerto RMI del servidor de monitorización.

En el caso de añadir diferentes clases remotas se debe emplear el sufijo v2, v3, etc. Ej: Serv1v2Interface.java, Serv1v2Impl.java



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

Reutilizar Curso
Descargar este curso