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
Explicación
Por cada trabajo, debe existir un tema para que un nodo U pueda enviar los datos del trabajo (por ejemplo, el tema IDtrabajo/datos) y otro para que un nodo T pueda enviar los resultados de la ejecución del trabajo (por ejemplo, el tema IDtrabajo/resultados).
  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
Explicación
Tanto U como T ejercen el rol de subscriptores. Un módulo U tiene que subscribirse al tema de resultados del trabajo que va a lanzar y un módulo T debe hacerlo con el tema de datos del trabajo que va a ejecutar.
  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
Explicación
Tanto U como T ejercen el rol de editores. Un módulo U tiene que enviar al tema de datos del trabajo que va a lanzar la información de dicho trabajo, mientra que un módulo T debe enviar al tema de resultados del trabajo que ha ejecutado el resultado del mismo.
  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
Explicación
Sólo tiene que subscribirse al tema de resultados de dicho trabajo.
  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
Explicación
Sólo tiene que subscribirse al tema de datos de dicho trabajo.
  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
Explicación
Debe subscribirse al tema de resultados de ese trabajo.
  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
Explicación
Debe subscribirse al tema de datos de ese trabajo.
  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
Explicación
Debe publicar la información del trabajo a través del tema de datos del mismo.
  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
Explicación
Debe publicar el resultado de la ejecución del trabajo a través del tema de resultados del mismo.
  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
Explicación
Dado que hay cierta ambigüedad en el enunciado con respecto a esta pregunta, se admiten dos posibles soluciones como correctas. Por un lado, dado que se especifica que sólo se usará el modelo E/S para envío de datos y resultados, no habría ninguna acción E/S asociada a esta operación. Por otro lado, se podría considerar que se puede publicar esta orden de abortar la ejecución del trabajo a través del tema de datos del mismo, de la misma manera que se envían los nombres de los ficheros del trabajo.
  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
Explicación
Debe dar de baja la subscripción al tema de datos de ese trabajo.
  1. ¿De qué tipo de sistema se trata según el teorema CAP?
    1. AP
    2. CA
    3. CP
    4. CAP
Explicación
Dado que cuando se pierde la accesibilidad a todas las copias de los datos por problemas de conectividad (P) se sigue permitiendo el acceso a los mismos, se está prefiriendo la disponibilidad (A) sobre la consistencia (C).
  1. ¿De qué tipo de sistema se trata según el teorema PACELC?
    1. PAEC
    2. PCEC
    3. PAEL
    4. PCEL
Explicación
Por un lado, cuando hay problemas de conectividad, se prefiere tener disponibilidad frente a consistencia (PA). Por otro lado, cuando el sistema tiene un funcionamiento normal, se opta por la consistencia frente a la latencia (EC) ya que la operación de escritura no se completa hasta que todas las copias estén actualizadas, lo que resulta en una operación más lenta pero que evita que puedan leerse datos obsoletos.
  1. ¿Qué esquema de replicación de servicio se usa en el sistema?
    1. cold standby
    2. hot standby
    3. warm standby
    4. Activa
Explicación
Se trata del esquema cold standby, en el que hay un servidor primario que procesa las peticiones de los clientes y almacena su estado de forma persistente sin comunicarse con los otros servidores, que están desactivados y sólo entran en acción cuando se detecta que el primario está caído.
  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.
Explicación
Las tres soluciones concurrentes planteadas, en las que cada petición es servida por un thread, conllevan la sobrecarga de la gestión de los threads (creación, cambios de contexto,...), lo que no ocurre en la basada en eventos.
  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
Explicación
Todo nodo con el que otro necesite iniciar una comunicación debe darse de alta en el servicio de binding para poder ser localizado sin necesidad de conocer su dirección IP y puerto. Tal como se plantea el enunciado, U contacta con G y SF, mientras que G, por su parte, contacta con T. Sin embargo, ningún nodo requiere iniciar una comunicación directamente con U.
  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
Explicación
En el protocolo asociado a un sistema de ficheros sin estado, no existen las operaciones lseek, puesto que la posición en el fichero se almacena en el cliente, ni close, puesto que, al no establecerse una sesión, no hay que cerrar nada.
  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
Explicación
Para poder ser efectiva la técnica del pipeline de peticiones, es necesario que el cliente necesite realizar múltiples peticiones simultáneas al servidor. De las interacciones que se plantean, las peticiones de lectura a SF de los sucesivos bloques de los ficheros de código y datos de un trabajo por parte de T responden a ese patrón.
  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
Explicación
Si se aplica un esquema de leasing a una solución editor/subscriptor, los procesos que siguen el rol de subscriptores deben renovar el lease, de manera que si en un momento dado un subscriptor se cae, se puede dar de baja de todos los temas que estuviera subscrito. De los procesos planteados en la pregunta, tanto U como T actúan como subscriptores.
  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.
Explicación
Veamos cada caso planteado analizando en cuál el uso de un filtro por contenido sería más efectivo (es decir, descartaría más eventos no deseados).