Proyecto Final - Departamento de Ingeniería de Sistemas

Anuncio
Pontificia Universidad Javeriana
Departamento de Ingeniería de Sistemas
Proyecto Final
1. Objetivos
El objetivo del proyecto final consiste en implementar un manejador de tuplas distribuido,
al que llamaremos MTUD, con soporte transparente y consistente de réplicas, persistencia
de los datos y tolerante a fallas. Algunos ejemplos de sistemas distribuidos que trabajan
con tuplas son Linda[1] y sus derivados TSpaces[2] y JavaSpaces
(http://en.wikibooks.org/wiki/Java_Programming/JavaSpaces). Para garantizar la integridad de
las tuplas se deberá implementar el Protocolo Consumación Atómica en dos Fases. La
comunicación entre los procesos se realizará usando sockets y RMI.
2. Definiciones
Una TUPLA es una secuencia ordenada de datos con tipo que tiene la siguiente
estructura:
Ti = (size, x0, x2, ….xn)
Donde el primer parámetro, size, indica el número de elementos de la tupla. Los xi…xn
son los elementos que componen la tupla, siendo x0 la clave (de tipo entero) y cada Xi (i
>= 1) una cadena de caracteres. Algunos ejemplos de tuplas son:
T1 = (3, 56788, “Mary”, “ANN”)
T2 = (4, 334189, “PEP”, “Sanders”, “Quinn”)
3. Características de MTUD
MTUD estará formado por tres tipos diferentes de procesos: el Coordinador, los
Manejadores de Réplicas y los Clientes. Sólo existe un proceso Coordinador, pero se
pueden crear varios Manejadores de Réplicas en las distintas máquinas en donde se
instale MTUD. La información, constituída por las tuplas y sus réplicas, está distribuida
en varias máquinas. Los Clientes manipulan los datos comunicándose con el proceso
Coordinador.
Los estudiantes deberán proveer también una librería para el manejo de la durabilidad o
persistencia de los datos. A continuación se explican los detalles del sistema:
3.1 Durabilidad
Deberán implementar una librería para la manipulación de tuplas que garantice su
durabilidad, incluso ante la ocurrencia de fallas de los procesos. Es decir si un proceso
termina y se restaura de nuevo, todos los valores que fueron insertados deben poder
Pontificia Universidad Javeriana
Departamento de Ingeniería de Sistemas
Proyecto Final
recuperarse usando la operación “consultar”. De la misma forma cualquier valor que
haya sido eliminado, debe quedar eliminado después de la falla. Los estudiantes deben
decidir si las operaciones insertar, borrar y consultar retornan códigos de error en caso de
no haber podido realizar la operación solicitada correctamente. La librería debe proveer
tres métodos:
insertar(tupla)= inserta la tupla que recibe como parámetro dentro del espacio de tuplas
de la máquina local.
borrar(clave): borra localmente cualquier tupla que tenga como clave el valor que se
recibe como parámetro.
consultar(clave): recupera la tupla asociada con la clave que se recibe como parámetro.
El código de la librería se puede programar completamente o se puede utilizar alguna
librería ya existente, como por ejemplo Sqlite. SQLite es un sistema de gestión de bases
de datos que implementa las propiedades ACID. No es un proceso independiente, como
otros gestores de BD sino que es una librería que se enlaza con el programa fuente.
3.2 Procesos del Manejador de Tuplas y Protocolo de
Consumación de Dos Fases
El Coordinador ofrece a los clientes una interfaz RMI que contiene los métodos: Insertar,
Borrar, Consultar, para insertar y borrar tuplas en/del sistema y consultar la existencia de
una determinada tupla dada su clave. También ofrece el método Estructura que retorna
información sobre MTUD y la información que almacena: máquinas donde está instalado,
tipo(s) de proceso(s) ejecutándose en cada máquina, cuáles son las tuplas almacenadas
y dónde se encuentran sus réplicas. Cuando el Coordinador recibe una solicitud para
insertar o borrar tuplas, debe aplicar un Protocolo de Consumación de dos Fases, a fin de
que la información quede consistente en todas las réplicas. Cada tupla debe tener al
menos una réplica dentro del sistema.
Ante una operación de consulta, el Coordinador selecciona una réplica en forma aleatoria
en todo el sistema, a fin de satisfacer el requerimiento.
El Coordinador debe ser un proceso concurrente, es decir múltiples clientes deben poder
conectarse en forma simultánea para realizar varias operaciones sobre el sistema de
tuplas.
Los Manejadores de Réplica están a cargo de una o varias réplicas, pertenecientes a
una o varias tuplas, que residen en un computador. Estos procesos se comunican con el
Coordinador a través de sockets para aplicar el Protocolo de Consumación de dos Fases.
Los procesos réplica también deben ser concurrentes. El esquema de control de
concurrencia a implementar será el siguiente: Si dos operaciones de manipulación de
tuplas llegan en forma concurrente la primera de ellas tendrá éxito, mientras la segunda
fallará.
Pontificia Universidad Javeriana
Departamento de Ingeniería de Sistemas
Proyecto Final
El sistema debe ser tolerante a fallas, es decir si alguno de los procesos falla durante la
aplicación del protocolo de consumación de dos fases, todo debe funcionar en forma
correcta.
Después de la falla, los componentes deben recuperarse y proceder
adecuadamente.
Los Clientes: Son procesos que se conectan al proceso Coordinador y pueden realizar
un conjunto de operaciones para crear, borrar o consultar tuplas. También pueden
solicitar información sobre cómo es el almacenamiento de las tuplas y sus réplicas
invocando el método Estructura. Debe ser posible ejecutar múltiples clientes en forma
simultánea. Los clientes también deben poder leer un conjunto de peticiones y escribir los
resultados de las peticiones desde/hacia archivos (si el usuario lo desea); los nombres de
los archivos se recibirán como parámetros de la invocación. El profesor, dará el día de la
sustentación el contenido de los archivos de prueba. Ejemplos de archivos:
Archivo Cliente 1
Insertar(2, 5622788, “Jussara”)
Insertar(3, 1123, “Mary”, “ANN”)
Insertar(3, 23456, “Ignacio”, “Cabrera”)
Insertar(5, 2226, “Paul”, “Michael”, “Sanders”, “Q”)
Estructura()
Borrar(1123)
Consultar(2226)
Estructura()
Archivo Cliente 2
Insertar(3, 1234578, “Danny”, “Luca”)
Insertar(2, 222, “Cecil”)
Insertar(4, 23456, “Roger”, “Peter”, “Deker”)
Estructura()
4. Equipos de Trabajo
El Proyecto se realizará en grupos de máximo tres personas.
5. Entrega y condiciones
La entrega se realizará el día viernes de la semana 17 en un CD y la sustentación será el
mismo día (viernes) de 9:00 a 11:00 am.
Para la sustentación los estudiantes deben mostrar al menos la siguiente configuración:
Pontificia Universidad Javeriana
Departamento de Ingeniería de Sistemas
Proyecto Final
Al menos 3 máquinas: un Coordinador y un Manejador de Réplica en una Máquina, y 2
Manejadores de Réplica en el resto. Tuplas con una réplica en cada uno de las
máquinas. Más de dos clientes solicitando peticiones al Coordinador.
Fallas de un Manejador de Réplica: para simular una falla los procesos Manejadores de
Réplica recibirán un entero, como parámetro de invocación, que indicará el tiempo, a
partir del inicio del proceso, en el que se producirá la falla. Si el valor del parámetro es 0,
el proceso no fallará. Si el valor es n, el proceso fallará y terminará n segundos después
de su inicio. Después de la falla, el proceso se debe restaurar manualmente desde la
cónsola.
Dependiendo del orden de entrega se hará la sustentación. Además del código se debe
adicionar un documento de no más de 5 páginas con la descripción del software
desarrollado.
6. Referencias
[1] Carriero, N y Gelernter, D (1989). Linda in Context. Comms. ACM, vol 32, no 4, pp
444-58.
[2] Wyckoff, P , McLaughry, S Lehmen, T y Ford, D (1998). T spaces. IBM Systems
Journal, vol 37, nro 3.
Descargar