Вы находитесь на странице: 1из 9

Universidad Nacional de Educacin a Distancia

E.T.S.I. Informtica
Dpto. de Sistemas de Comunicacin y Control

PRCTICA DE Sistemas Distribuidos


(Grado en Ingeniera Informtica) ______________________________________________________________________

Sistema bsico de almacenamiento en la nube usando Java RMI


Curso 2013 - 2014

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

______________________________________________________________________

INTRODUCCIN
______________________________________________________________________ Este documento contiene el enunciado de la prctica obligatoria de laboratorio correspondiente a la asignatura de Sistemas Distribuidos del Grado de Ingeniera Informtica. Lea detenidamente toda la memoria varias veces con el fin de que sus dudas queden resueltas. Si an as sigue teniendo alguna duda, por favor consltela a travs del foro de la asignatura en el curso virtual. El software mnimo necesario para la realizacin de la prctica es el siguiente: Kit de desarrollo de Java 7 JDK. Disponible en el servidor de la empresa Oracle, (http://www.oracle.com/technetwork/java/javase/downloads/index.html ) actual propietaria de la tecnologa. En esa direccin pueden encontrar adems de la documentacin oficial de la API del lenguaje, valiosa informacin como tutoriales, artculos tcnicos, etc. Entorno de desarrollo IDE. Aunque no es necesario (se pueden editar los ficheros fuentes con un sencillo editor como el notepad y compilar/ejecutar desde la lnea de comandos) pero si se recomienda su uso para acelerar el desarrollo. Adems, los editores poseen potentes depuradores que prestan un excelente servicio a la hora de depurar las aplicaciones. Se puede recurrir a cualquier entorno siempre que ste genere cdigo 100% Java. El equipo docente recomienda dos: - Eclipse (http://www.eclipse.org/downloads/) - NetBeans (http://netbeans.org/) Les recordamos que la entrega de la prctica es obligatoria para todos los alumnos. Adems es imprescindible aprobar la prctica para aprobar la asignatura. Le recomendamos la lectura detenida de la gua de curso para aclarar cualquier duda sobre los criterios de evaluacin. Una vez entregada la prctica con todo el material requerido, el equipo docente someter a los programas que se entreguen a un test para comprobar su correcto funcionamiento. Por tanto, se recomienda probar todo el software antes de enviarlo. Si en la convocatoria de Febrero supera la prctica obligatoria pero no supera el examen presencial, se le conservar la calificacin de la prctica para la convocatoria extraordinaria de Septiembre del curso actual pero nunca para cursos posteriores. Anlogamente suceder con la nota del examen presencial. No se conservan calificaciones de ninguna prueba, ya sea terica o prctica, para cursos posteriores. Las prcticas se realizan individualmente, no se aceptan grupos de trabajo. La deteccin de un prctica copiada obligar al equipo docente a ponerlo en conocimiento ______________________________________________________________________
2 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

del Servicio de Inspeccin de la UNED para que proceda a la apertura de expediente acadmico. Evidentemente, pueden consultar cualquier tipo de dudas, cuestiones, maas, etc. a travs de los foros en el curso virtual de la asignatura. Lea detalladamente el resto de la memoria ya que se le indica claramente la forma de realizar la prctica, el material que hay que entregar, y los plazos para hacerlo. Para cualquier aclaracin, no dude en ponerse en contacto con los miembros del equipo docente de la asignatura utilizando los medios que se indican en la Gua del curso. ______________________________________________________________________

ENUNCIADO
______________________________________________________________________ El propsito de la prctica es el desarrollo de un software que implemente un sistema de almacenamiento de ficheros en la nube usando Java RMI. En este sistema actuaran tres tipos de actores cuyas funciones se listan a continuacin: 1.- Servidor: La entidad Servidor se encarga de controlar el proceso de almacenamiento de ficheros y de gestionar los recursos de almacenaje, para ello hace uso de tres servicios: Servicio Autenticacin: Se encarga de registrar y de autenticar, cuando sea necesario, las otras entidades participantes en el sistema: clientes y repositorios. Ambas entidades se tienen que dar de alta en el sistema y recibir un identificador nico para poder operar y realizar almacenaje de ficheros. El registro se lleva a cabo cuando este servicio devuelve a la entidad demandante (cliente o repositorio) el identificador nico con el que tiene que autenticarse para cualquier operacin que lo requiera en el sistema. Servicio Gestor: Este servicio se encarga de gestionar las operaciones de los clientes en relacin a sus ficheros en la nube (fsicamente alojados en los repositorios). Usando este servicio el cliente podr subir, bajar y borrar ficheros en la nube, adems de listar sus ficheros almacenados y compartir ficheros con otros clientes que estn registrados en el sistema. Datos: Este servicio har las funciones de una base de datos que relacione Clientes-Ficheros-Metadatos-Repositorios. Es decir, mantendr lista de clientes y repositorios conectados al sistema, junto con los ficheros; y los relacionarn permitiendo operaciones de consulta, borrado y aadido. Los dos servicios anteriores (Servicio Autenticacin y Servicio Gestor) harn uso de este servicio para realizar las operaciones sobre el estado de las entidades del sistema y sus atributos. Aunque podra usarse un sistema de gestin de bases de datos (SGBD) para implementar este servicio, esto hara muy complejo el desarrollo de la prctica y no atendera a los objetivos de la asignatura. As pues, el equipo docente recomienda para la implementacin del servicio las clases List y HashMap de Java. 2.- Repositorios: Estas entidades son las responsables de guardar en sus dispositivos de almacenamiento los ficheros que los clientes suben a la nube. Cuando un cliente solicita la subida/bajada/borrado de un fichero a travs del servicio Gestor del servidor, este ______________________________________________________________________
3 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

servicio Gestor selecciona el repositorio que le corresponde al cliente y le manda al cliente la informacin necesaria para completar la operacin. Para hacer su funcin los repositorios hacen pblicas las interfaces de sus dos servicios: Servicio Cliente-Operador: Este servicio se encarga de las operaciones de subida de ficheros al repositorio y borrado de los mismos. El servicio Gestor del servidor responde a la peticin del cliente envindole la URL de este servicio para que pueda completar su operacin. Servicio Servidor-Operador: Este servicio tiene un doble objetivo. Por un lado, suministra los mtodos necesarios para que el servidor gestione los lugares de almacenamiento para cada cliente, y por otro lado se encarga de la operacin de bajada de ficheros desde el repositorio al cliente, es decir, cuando un cliente quiere bajar un fichero se lo pide al servidor mediante el servicio Gestor. Una vez que el servidor averigua que repositorio aloja el fichero del cliente, ste llama a un mtodo del Servicio Servidor-Operador y le pasa la URL del cliente para que pueda llamar al mtodo de descarga del servicio DiscoCliente que es el que realmente se encarga de la descarga. De esta manera no cargamos al servidor con esta operacin temporalmente costosa en trminos de entrada/salida y conseguimos Escalabilidad. 3.- Clientes: Son los propietarios de los ficheros. Se registran en el sistema a travs del servidor para poder subir, gestionar y almacenar sus ficheros en un repositorio en la nube. El cliente publica la interfaz de un servicio cuyo nombre es DiscoCliente que ser utilizado por el servicio Servidor-Operador del repositorio para descargar al disco duro local del cliente el fichero que este considere oportuno. Recordad, tal y como hemos indicado, que el servidor nunca se encarga de subir/bajar los ficheros, slo de gestionar estas operaciones y llevar un registro mediante su Servicio Datos. Estas operaciones costosas se harn desde los servicios Servidor-Operador y DiscoCliente para evitar cargar al servidor y permitir la escalabilidad del sistema fcilmente. Para simplificar, el sistema slo admitir la gestin de ficheros y no la creacin de un rbol de carpetas por cada cuenta de cliente en el repositorio, es decir, el cliente podr subir ficheros peno no crear carpetas donde guardarlos. No obstante, en cada repositorio se crear una carpeta que alojar todos los ficheros de un cliente concreto. Operativa Inicialmente la entidad servidor levanta sus tres servicios: Autenticacin, Gestor y Datos. El/Los repositorio/s se autentican en el sistema mediante el servicio Autenticacin del servidor, devolvindole ste un identificador nico. El repositorio a partir de este momento est listo para almacenar los ficheros de los clientes. El/Los cliente/s se autentican en el sistema mediante el servicio Autenticacin del servidor, devolvindole ste un identificador nico. En este momento, el servidor le asigna al cliente un repositorio y guarda esta relacin a travs del servicio Datos y manda crear una carpeta en el dispositivo de almacenamiento del repositorio mediante ______________________________________________________________________
4 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

el servicio Servidor-Operador. Esta carpeta tendr por nombre el identificador nico del cliente y dentro se alojarn todos sus ficheros en propiedad. Una vez que el cliente est registrado en el sistema, podr realizar las operaciones de subida/bajada/borrado de ficheros en la nube. Operaciones gestionadas por el servidor y ejecutadas en la carpeta que cada cliente tiene en el repositorio que le corresponde. Adems el cliente puede pedir un listado de otros clientes conectados al sistema y permitirles el acceso para la descarga de sus ficheros (Est opcin no se exige y ser opcional). En la figura siguiente podemos observar de forma esquemtica la operativa del sistema:

Interfaz El Servidor debe permitir mediante su interfaz de texto o grfica las siguientes operaciones: 1.- Listar Clientes. 2.- Listar Repositorios. 3.- Listar Parejas Repositorio-Cliente. 4.- Salir.

______________________________________________________________________
5 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

Los Repositorios deben permitir mediante su interfaz de texto o grfica las siguientes operaciones: 1.- Listar Clientes. 2.- Listar ficheros del Cliente. 3.- Salir. Los Clientes deben permitir mediante su interfaz de texto o grfica las siguientes operaciones: 1.- Subir fichero. 2.- Bajar fichero. 3.- Borrar fichero. 4.- Compartir fichero (Opcional). 5.- Listar ficheros. 6.- Listar Clientes del sistema. 7.- Salir.

Especificaciones Generales Se debe utilizar cdigo 100% Java JDK. No se admiten libreras de terceros. La sintaxis de llamada desde la lnea de comandos tiene que ser: - servidor (para iniciar el programa Servidor y sus servicios). - repositorio (para iniciar un programa Repositorio y sus servicios). - cliente (para iniciar un programa Cliente y su servicio). Por motivos de claridad, cada clase Java debe almacenarse en un fichero .java Todos los ficheros deben incluir, mediante comentarios al inicio de los mismos, todos los datos del autor: nombre, apellidos y correo electrnico. Antes de empezar a programar nada, le recomendamos que se lea varias veces esta memoria y que se haga un pequeo esquema planteando las relaciones entre cada una de las partes funcionales de la aplicacin que se le pide. Se recomienda encapsular el cdigo dentro de ficheros .jar. Esta es una forma elegante, eficiente y compacta de presentar la aplicacin final. Pueden tomarse las decisiones de diseo que se consideren oportunas, siempre y cuando vayan en consonancia con el enunciado de la prctica y queden perfectamente comentadas en la memoria de la prctica que tiene que entregar.

______________________________________________________________________

CONSIDERACIONES DE DESARROLLO
______________________________________________________________________ RMI se estudia en el libro de texto bsico, aunque es muy recomendable mirar el contenido de los siguientes enlaces:

______________________________________________________________________
6 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

-http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/index.html, pgina Web oficial de RMI, donde se proporciona una documentacin muy amplia (en ingls) sobre la utilizacin de RMI y las clases asociadas. -http://docs.oracle.com/javase/tutorial/rmi/index.html, tutorial que ayuda a entender y comprender la arquitectura de RMI. Es muy recomendable su lectura. -http://www.programacion.com/articulo/invocacion_remota_de_metodos_rmi_107, que contiene el mismo ejemplo que el tutorial anterior pero en castellano. Es muy recomendable su lectura. - Los captulos sobre Java RMI del Libro de la bibliografa complementaria: ISBN: 9780201796449, Ttulo: Distributed Computing: Principles and Applications., Autor M.L. Liu., Editorial Addison Wesley Higher Education. (Existe tambin versin en castellano) - Sesiones 5,6,7 y 8 de las tutoras Intercampus de este curso. - Video tutorial del alumno Fermn Silva sobre Java RMI en Eclipse. http://www.youtube.com/watch?v=vnWBrCSjb44 De esta manera, se obtienen los conocimientos mnimos necesarios para ejecutar una aplicacin distribuida RMI de ejemplo que sirva de base para el desarrollo de esta prctica. Adems, en el curso virtual de la asignatura se pondr un enlace desde donde se podr descargar la clase fichero.java. Esta clase Serializable ya tiene implementados los mtodos de lectura y escritura de ficheros en disco, junto con un sistema de comprobacin por Checksum. Detalles sobre las clases de la prctica Con el objetivo de tener cierto orden, unificacin y coherencia en el cdigo que se entrega y para facilitar su posterior correccin, se tienen que nombrar obligatoriamente las clases/interfaces principales del programa de la siguiente manera:
Servidor: Clase que contiene el main de la entidad Servidor. Repositorio: Clase que contiene el main de la entidad Repositorio. Cliente: Clase que contiene el main de la entidad Cliente. ServicioAutenticacionInterface: contiene la interfaz remota del servicio de

autenticacin que depende de la entidad Servidor. ServicioAutenticacionImpl: clase que implementa la interfaz remota anterior. ServicioGestorInterface: contiene la interfaz remota del servicio Gestor que depende de la entidad Servidor. ServicioGestorImpl: clase que implementa la interfaz remota anterior. ServicioDatosInterface: contiene la interfaz remota del servicio Datos que depende de la entidad Servidor. ServicioDatosImpl: clase que implementa la interfaz remota anterior. ServicioSrOperadorInterface: contiene la interfaz remota del servicio ServidorOperador que depende de la entidad Repositorio. ServicioSrOperadorImpl: clase que implementa la interfaz remota anterior. ServicioClOperadorInterface: contiene la interfaz remota del servicio ClienteOperador que depende de la entidad Repositorio. ServicioClOperadorImpl: clase que implementa la interfaz remota anterior. ServicioDiscoClienteInterface: contiene la interfaz remota del servicio DiscoCliente que depende de la entidad Cliente. ______________________________________________________________________
7 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

ServicioDiscoClienteImpl: clase que implementa la interfaz remota anterior. Fichero: clase que implementa las operaciones de lectura/escritura de ficheros en disco

(suministrada por el equipo docente). Aparte de stas, se pueden utilizar todas las clases que sean necesarias pero no olvidar describir detalladamente su funcin en la memoria de la practica, as como, su lugar en el diagrama de clases. RECOMENDACIONES: -Nombrar los objetos remotos usando una URL que recoja toda la informacin sobre su direccin-puerto, servicio que presta e identificador de su proveedor; como se hace en el libro de M. L. Liu:
URL_nombre="rmi://"+ip+":"+rmiport+"/"+nombre_servicio+"/"+identificador_unico; Naming.rebind(URL_nombre, objExportado);

-Crear una clase metadatos e instanciar un nuevo objeto de este tipo por cada fichero nuevo que se suba al sistema. Esta clase debe tener varios campos que identifique al fichero como su nombre, identificador nico de su propietario, etc.

______________________________________________________________________
8 Departamento de Sistemas de Comunicacin y Control

Prctica de Sistemas Distribuidos

Curso Acadmico 2013 - 2014

______________________________________________________________________

NORMAS DE ENTREGA
______________________________________________________________________ Deber entregar un nico fichero comprimido en formato ZIP que contendr una carpeta denominada PRACTICA que contendr los ficheros fuente .java, los ejecutables .class .jar de la prctica adems de los ficheros .bat o .sh para arrancar las aplicaciones segn la sintaxis de llamada comentada anteriormente. Este fichero ZIP debe contener en su raz un fichero PDF que contendr la memoria de la prctica. El fichero tiene que llamarse "Nombreestudiante_Apellidosestudiante.zip", donde Nombreestudiante es el nombre del estudiante y Apellidosestudiante son los apellidos del estudiante completos sin usar acentos y usando guiones bajos (_) en vez de espacios en blanco entre nombre y apellidos. La memoria debe constar de los siguientes apartados: Portada con nombre, apellidos, DNI y correo electrnico del estudiante. Memoria descriptiva en la que se debe explicar el trabajo realizado. Recurra a esquemas o grficos para plantear el funcionamiento de los programas y servicios. Diagramas de clases descriptivas de la estructura del sistema. Pantallazos de ejemplos de funcionamiento. Conclusiones, opiniones, y mejoras (si fuese el caso), relacionadas con la prctica.

El tamao mximo de este documento memoria es 50 hojas y el formato .pdf La entrega de la prctica se har a travs del curso virtual y los plazos de entrega son: Plazo 1 (convocatoria ordinaria): prcticas recibidas entes del 19 de Enero. Plazo 2 (convocatoria extraordinaria): prcticas recibidas con posterioridad al 19 de Enero y antes del 15 del Julio.

______________________________________________________________________
9 Departamento de Sistemas de Comunicacin y Control

Вам также может понравиться