Sistemas Distribuidos: Ejercicio del tema arquitectura de los sistemas distribuidos

Marzo del 2018.

Grupo de mañana.

Se pretende usar un sistema distribuido para la ejecución de trabajos batch secuenciales que procesan una gran cantidad de datos de entrada leídos de un sistema de ficheros (SF: sin estado; ofrece operaciones de lectura/escritura de 4KiB), generando unos datos de salida de muy poco volumen. Dado el carácter crítico de estos trabajos, cada uno debe ejecutarse simultáneamente en varios nodos, obteniéndose el resultado del mismo por votación mayoritaria entre las salidas generadas por los distintos nodos. Para evitar el problema que pueden causar trabajos erróneos que nunca terminan, se establecerá un plazo máximo para la ejecución de los mismos. En este sistema hay tres tipos de nodos: nodo trabajador (T), que se dedica a ejecutar trabajos, nodo gestor (G), que gestiona los nodos trabajadores y conoce su estado actuando también como proceso intermediario para el esquema editor/subscriptor (E/S), y nodo usuario (U), desde el cual los usuarios lanzan los trabajos y obtienen sus resultados. Para la implementación del sistema se va a usar un esquema editor/subscriptor, basado en temas de dos niveles (el primer nivel corresponde al identificador del trabajo) y con creación dinámica de temas, sólo para el envío de los trabajos y la recogida de resultados, y un modelo cliente/servidor para el resto de las interacciones. A continuación, se explica el modo de operación del sistema, distinguiendo varias fases. Inicio del trabajo: Un nodo U prepara un trabajo creando en SF los ficheros con el código del trabajo y los datos del mismo, y contacta con G especificando cuántos nodos (N) precisa para ejecutar redundantemente el trabajo; G asigna un identificador único al trabajo, selecciona N nodos de tipo T, crea los temas requeridos para implementar el envío del trabajo y la comunicación de resultados (NOTA: se recomienda comenzar estableciendo cuántos temas se requieren para cada trabajo, que corresponde a la pregunta con el enunciado en negrilla; debe determinarse el número de temas mínimo requerido pero asegurándose de que ningún proceso recibe un evento que no le concierne), e informa a U, como respuesta a su petición, y a esos N nodos de los temas a los que tienen que subscribirse y en los que tienen que publicar (nótese que U no conoce qué nodos T van a llevar a cabo la computación y los nodos T no saben qué nodo lanzó el trabajo que están ejecutando). Envío del trabajo: U comunica el nombre de los ficheros de código y datos del trabajo, y arranca un temporizador para controlar el plazo máximo de ejecución del trabajo. Ejecución del trabajo: Cada nodo T lee de SF el código y los datos del trabajo y lo ejecuta. Plazo máximo alcanzado: Si llega a cumplirse el plazo máximo, U aborta el trabajo haciendo que los nodos T involucrados dejen de ejecutarlo. Envío de resultados: Cada T envía los resultados al finalizar el trabajo. Fin del trabajo: Cuando U recibe los N resultados, realiza la votación y da por finalizado el trabajo haciéndoselo saber al resto de los nodos involucrados. En el sistema se implementan distintas técnicas para mejorar la fiabilidad. Por un lado, el módulo SF gestiona varias copias de los datos de los ficheros, una de las cuales actúa como copia primaria. Las escrituras se realizan sobre la copia primaria y no se completan hasta que la actualización no se propague a todas las copias. En cualquier caso, ante problemas de conectividad puntuales que impidan el acceso a todas las copias, se mantiene el acceso a los datos. Por otro lado, hay tres nodos que implementan la funcionalidad G, tal que sólo uno de ellos está activo, no comunicándose con el resto y almacenando su información de estado en SF.
  1. ¿Cuántos temas existen para un trabajo con N nodos de tipo T?
    1. 2
    2. 1
    3. N
    4. N+1
  1. ¿Qué módulos realizan el papel de subscriptores?
    1. U y T
    2. Sólo U
    3. Sólo T
    4. Sólo SF
  1. ¿Qué módulos realizan el papel de editores?
    1. U y T
    2. Sólo U
    3. Sólo T
    4. Sólo SF
  1. ¿A cuántos temas se subscribe un nodo U que ha lanzado un trabajo en N nodos T?
    1. 1
    2. 2
    3. N
    4. 0
  1. ¿A cuántos temas se subscribe un nodo T que participa en la ejecución de un trabajo en N nodos T?
    1. 1
    2. 2
    3. N
    4. 0
  1. ¿Qué acción E/S realiza un nodo U en la fase de inicio del trabajo?
    1. subscripción
    2. baja
    3. publicación
    4. ninguna
  1. ¿Qué acción E/S realiza un nodo T en la fase de inicio del trabajo?
    1. subscripción
    2. baja
    3. publicación
    4. ninguna
  1. ¿Qué acción E/S realiza un nodo U en la fase de envío del trabajo?
    1. publicación
    2. subscripción
    3. baja
    4. ninguna
  1. ¿Qué acción E/S realiza un nodo T en la fase de envío de resultados?
    1. publicación
    2. subscripción
    3. baja
    4. ninguna
  1. ¿Qué acción E/S realiza un nodo U si se cumple el plazo máximo?
    1. ninguna
    2. publicación
    3. subscripción
    4. notificación
  1. ¿Qué acción E/S realiza un nodo T en la fase de fin del trabajo?
    1. baja
    2. subscripción
    3. publicación
    4. creación de tema
  1. ¿De qué tipo de sistema se trata según el teorema CAP?
    1. AP
    2. CA
    3. CP
    4. CAP
  1. ¿De qué tipo de sistema se trata según el teorema PACELC?
    1. PAEC
    2. PCEC
    3. PAEL
    4. PCEL
  1. ¿Qué esquema de replicación de servicio se usa en el sistema?
    1. cold standby
    2. hot standby
    3. warm standby
    4. Activa
  1. ¿Cuál de las siguientes soluciones es más adecuada para implementar SF si se intenta minimizar la sobrecarga?
    1. Basada en eventos.
    2. Creación dinámica de threads.
    3. Uso de un pool estático de threads.
    4. Uso de un pool dinámico de threads.
  1. ¿Qué tipo de nodos no tendría que darse de alta en el binder si se usara un servicio de binding?
    1. U
    2. G
    3. T
    4. SF
  1. ¿Cuántas de las siguientes operaciones no requieren contactar con SF por ser éste un servidor sin estado: open, read, lseek y close?
    1. 2
    2. 1
    3. 3
    4. 4
  1. ¿En cuál de las siguientes interacciones sería más conveniente usar pipeline de peticiones?
    1. T con SF
    2. U con G
    3. G con T
    4. T con G
  1. ¿Qué módulo debería enviar los mensajes de renovación del lease si se aplica un esquema de leasing al esquema editor/subscriptor?
    1. U y T
    2. Sólo U
    3. Sólo T
    4. Sólo G
  1. Se plantea usar un esquema con un filtro de eventos por contenido en vez de un filtro por temas. ¿Para cuál de estos casos ese cambio sería más ventajoso en el sentido de reducir el número de mensajes recibidos pero no deseados?
    1. Interés en conocer todos los datos y resultados de los trabajos que envía un determinado usuario.
    2. Interés en conocer los datos asociados a un determinado trabajo.
    3. Interés en conocer los resultados correspondientes a un cierto trabajo.
    4. Interés en conocer los datos y resultados correspondientes a un determinado conjunto de trabajos.