IIC 2523 — Sistemas Distribuidos Tarea 1 Parte 1: Diccionario

Anuncio
P ONTIFICIA U NIVERSIDAD C AT ÓLICA DE C HILE
E SCUELA DE I NGENIER ÍA
D EPARTAMENTO DE C IENCIA DE LA C OMPUTACI ÓN
IIC 2523 — Sistemas Distribuidos
Tarea 1
Fecha de Entrega: Viernes 03-Mayo, 23:59
Esta tarea tiene dos partes. En la primera parte deberá implementar un sistema de diccionario remoto usando ONC
RPC. En la segunda parte deberá implementar un sistema de mensajerı́a/microblogging distribuido utilizando Java
RMI. Ambas aplicaciones deberán funcionar sobre un sistema Linux, para lo cual se les entregará acceso a un servidor
con las herramientas necesarias para ello.
Parte 1: Diccionario Remoto (50 %)
Esta es una aplicación cliente/servidor. El programa servidor mantiene un conjunto de diccionarios de palabras y
los programas cliente pueden conectarse a él y verificar la existencia de palabras de acuerdo a un diccionario especificado. El programa cliente debe permitir las siguientes funciones para el usuario:
Verificar palabras. Mediante un llamado al servidor, el cliente verifica la existencia de la palabra en un diccionario especificado.
Agregar palabras. Ingresa una palabra no existente al diccionario especificado en el servidor.
Sugerir palabras. En el caso de una palabra desconocida, debe sugerir algunas alternativas (en caso que el
diccionario posea palabras similares). En este caso usted debe decidir si la sugerencia se efectúa completamente
en el servidor (en cuyo caso el cliente hace una consulta al servidor y obtiene las sugerencia), o bien si ésta es
implementada en el cliente realizando posiblemente varias consultas al servidor.
Verificar archivo de texto. Verifica todas las palabras de un archivo de texto para un diccionario, y entrega
estadı́sticas de palabras correctamente detectadas, palabras inválidas y palabras nuevas agregadas al diccionario.
El programa servidor debe manejar distintos diccionarios que pueden estar precargados. En cualquier caso, debe
ser posible crear diccionarios nuevos y verificar archivos contra ellos.
Restricciones
El sistema debe funcionar en base al modelo cliente-servidor.
El sistema debe utilizar el mecanismo RPC.
Funcionalidades adicionales
El sistema podrı́a implementar funcionalidades no especificadas en este enunciado, las cuales pueden sumar hasta
un 10 % del puntaje y son opcionales. Algunos ejemplos incluyen la calidad de las sugerencias efectuadas sobre las
palabras, por ejemplo, usando alguna métrica de similitd; o la posibilidad de utilizar un servicio externo para obtener
sugerencias.
Entrega
La tarea se entrega en un directorio dentro de su cuenta con el nombre tarea1/rpc. Debe entregar los archivos
fuente tanto del cliente como del servidor y un archivos con instrucciones (.txt ó .pdf) para compilarlo y probarlo.
Parte 2: Mensajerı́a P2P (50 %)
El objetivo de esta parte es experimentar con la comunicación RMI de Java. Para esto deberá implementar un
sistema de mensajerı́a/microblogging decentralizado, en el cual cada proceso miembro se registra ante sus pares al
momento de formar parte de la red y utiliza el conocimiento parcial que tiene cada miembro sobre sus vecinos para
enrutar los mensajes.
Cada programa identifica a un usuario individual. Al momento de registrarse debe utilizar la dirección de al menos
un proceso adicional. Este registro distribuido debe servir para ubicar a los distintos usuarios.
Cada usuario puede realizar las siguientes funciones:
Explorar la lista de usuarios del sistema, a través de consultas a sus vecinos, las cuales pueden propagarse a
través del resto de los nodos.
Mantener y actualizar una lista de usuarios “seguidos”.
Publicar un mensaje de largo máximo 139, el cual es propagado al timeline de todos los usuarios que lo siguen.
Mostrar su propio timeline, que incluye los mensajes publicados por sı́ mismo, y los mensajes publicados por
sus usuarios “seguidos”.
Restricciones
Es importante que no haya ninguna parte del sistema que sea centralizada. Esto es, si alguno de los nodos desaparece de la red o se vuelve inalcanzable, el sistema debe poder seguir funcionando con los nodos disponibles.
Funcionalidades adicionales
El sistema podrı́a implementar funcionalidades no especificadas en este enunciado, las cuales pueden sumar hasta
un 10 % del puntaje y son opcionales. Algunos ejemplos incluyen la implementación de “menciones”, “reenvı́os”
y mensajes directos (los cuales no aparecen en el timeline); o bien alguna manera inteligente de manejar la lista de
usuarios actuales sin tener que propagar mensajes entre todos los miembros de la red.
Entrega
La tarea se entrega en un directorio dentro de su cuenta con el nombre tarea1/rmi. Debe entregar los archivos
fuente de todos los objetos necesarios y un archivo con instrucciones (.txt ó .pdf) para compilarlo y probarlo.
Descargar