Curso 2017/2018
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 1 / 16
Preliminares
1 Preliminares
2 Sistemas distribuidos
3 Resolución versión abierta
4 Resolución versión cerrada
5 Ejercicio
1
Bajad el código de https://github.com/bejar/ECSDI2018 o haced:
git clone remote https://github.com/bejar/ECSDI2018.git
2
Bajad el documento de laboratorio, seguiremos la explicacion de como funciona Flask en el capítulo 3
3
Ejemplos de flask en Examples/flask
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 3 / 16
Sistemas distribuidos
1 Preliminares
2 Sistemas distribuidos
3 Resolución versión abierta
4 Resolución versión cerrada
5 Ejercicio
Ejemplos de sistemas distribuidos sencillos
Implementados sobre API REST mediante el framework Flask Usamos REST como pasarela
El objetivo es exponer las interioridades de la comunicación y coordinación de agentes/servicios
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 5 / 16
Resolución versión abierta
1 Preliminares
2 Sistemas distribuidos
3 Resolución versión abierta
4 Resolución versión cerrada
5 Ejercicio
Resolución de tareas simples mediante servicios distribuidos Infraestructura: Servicio de descubrimiento (DirectoryService) Frontend: Múltiples instancias de resolvedor de tareas
Backend: Múltiples instancias de resolvedores
Cliente: Cliente web para interactuar con el servicio de resolución Versión Abierta porque todos los agentes están públicos en el servicio de directorio
Nada impide solicitar a los resolvedores específicos que hagan tareas
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 7 / 16
Resolución versión abierta
Servicio de resolución de tareas
Client Solver
Arith
LCount Logger
Register
Register Register
Register
Client Solver
LCount
DirServ (Search Logger)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 8 / 16
Resolución versión abierta
Servicio de resolución de tareas
Client Solver
Arith
LCount Logger
(Search Solver)
Client Solver
LCount
DirServ (Solve ARITH)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 8 / 16
Resolución versión abierta
Servicio de resolución de tareas
Client Solver
Arith
LCount Logger
(Search Arith)
Client Solver
LCount
DirServ
(Solve ARITH)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 8 / 16
Resolución versión abierta
Servicio de resolución de tareas
Client Solver
Arith
LCount Logger
(Solved)
Client Solver
LCount
DirServ (Solved)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 8 / 16
Resolución versión abierta
Servicio de resolución de tareas
Client Solver
Arith
LCount Logger
(Log)
Primero ejecutaremos el sistema en local
Leed el Readme.txt del directorio DistributedSolverOpen Poned en marcha los agentes en el orden indicado
Resolved algunos problemas
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 9 / 16
Resolución versión abierta
Ejecución del sistema (distribuido)
Esperad a que estén en marcha el servicio de directorio y logger Poned en marcha agentes Solver, Arithmetic y
LetterCounter Cruzad los dedos
Resolved algunos problemas
2 Sistemas distribuidos
3 Resolución versión abierta
4 Resolución versión cerrada
5 Ejercicio
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 11 / 16
Resolución versión cerrada
Servicio de resolución de tareas
Versión Cerrada
Resolución de tareas simples mediante servicios distribuidos Infraestructura: Servicio de descubrimiento (DirectoryService) Frontend: Múltiples instancias de resolvedor de tareas
Backend: Múltiples instancias de resolvedores
Cliente: Cliente web para interactuar con el servicio de resolución No hemos cambiado los agentes :-)
Ahora los resolvedores específicos se contratan con los
Client Solver1 Solver2
LCount
DirServ Register Register
Register
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 13 / 16
Resolución versión cerrada
Servicio de resolución de tareas
Client Solver1 Solver2
Arith
LCount Logger
(Search Logger)
(Search Logger)
Client Solver1 Solver2
LCount
DirServ
(Search Solver)
(Search Solver)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 13 / 16
Resolución versión cerrada
Servicio de resolución de tareas
Client Solver1 Solver2
Arith
LCount Logger
(Contract Solver) (Contract Solver)
(Contract Solver)
(Contract Solver)
Client Solver1 Solver2
LCount
DirServ (Search Solver)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 13 / 16
Resolución versión cerrada
Servicio de resolución de tareas
Client Solver1 Solver2
Arith
LCount Logger
(Solve ARITH)
Client Solver1 Solver2
LCount
DirServ
(Solve ARITH)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 13 / 16
Resolución versión cerrada
Servicio de resolución de tareas
Client Solver1 Solver2
Arith
LCount Logger
(Solved)
Client Solver1 Solver2
LCount
DirServ (Solved)
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 13 / 16
Resolución versión cerrada
Servicio de resolución de tareas
Client Solver1 Solver2
Arith
LCount Logger
(Log)
Leed el Readme.txt del directorio DistributedSolverClosed Esperad a que estén en marcha el servicio de directorio y logger Poned en marcha agentes Solver primero y Arithmetic y LetterCounter después
Cruzad los dedos
Resolved algunos problemas
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 14 / 16
Ejercicio
1 Preliminares
2 Sistemas distribuidos
3 Resolución versión abierta
4 Resolución versión cerrada
5 Ejercicio
Es un problema que solo haya un servicio de directorio que centralice toda la información
Podemos implementar una versión de SD que se conecte con otros SD cuando en una petición no encuentre lo que busca Cada SD deberia recibir al menos la dirección de otro SD en su inicio (atención a la topología de conexión)
Para evitar ciclos deberemos contar los saltos hechos en la petición
Laboratorio ECSDI (CS-FIB-UPCcbea) Sistemas Distribuidos Curso 2017/2018 16 / 16