Sistemas Distribuidos: Ejercicio del tema arquitectura y comunicación en los sistemas distribuidos

Marzo del 2020.

Grupo de mañana.

Considere un sistema de localización en interiores basado en el uso de balizas cuya única funcionalidad es enviar periódicamente una señal de corto alcance con su identificador. Este sistema se va a utilizar en un supermercado que ocupa un recinto de un tamaño considerable, estando las balizas desplegadas en distintas secciones del mismo sin solaparse sus rangos (una baliza en la sección de cítricos, otra en la de parafarmacia...; en total Nb). El sistema va a ofrecer dos funcionalidades independientes para la gestión de los clientes: por un lado, por motivos de seguridad, va a permitir el seguimiento de los clientes (como máximo Nc) por parte de los vigilantes de seguridad (como máximo Nv) haciendo posible conocer en cada momento qué clientes están ubicados en una determinada sección (por su cercanía a la baliza correspondiente); por otro lado, va a posibilitar que ciertos empleados de la empresa (los gestores, como máximo Ng) puedan realizar ofertas a todos los clientes próximos a una baliza (en la sección de cítricos, un descuento en el precio de la piña). Un vigilante va a usar una aplicación V que le ofrece una operación (OP1) que le permite seleccionar cada una de las secciones (es decir, de las balizas) que va a supervisar (varios vigilantes podrían monitorizar la misma baliza) y otra operación (OP2) que le posibilita dejar de vigilar una sección. Un gestor utilizará una aplicación G que le permite (OP3) enviar una oferta a una sección, que recibirán todos los clientes cercanos a la baliza correspondiente. Nótese que esta funcionalidad es totalmente independiente de la de seguimiento: aunque una sección no esté monitorizada por ningún vigilante, seguirá funcionando el procedimiento de ofertas. Un cliente utiliza una aplicación C cuyo funcionamiento es tal que cuando este se acerque a una baliza (OP4) será detectado por los vigilantes de la sección correspondiente (un cliente solo puede estar cerca de una baliza), en caso de que haya alguno, y, en cualquier caso, empezará a recibir las ofertas asociadas a la misma. Al alejarse y perder la señal de la baliza (OP5), cesarán ambas actividades: el cliente ya no estará vinculado con esa baliza para los vigilantes de la misma y dejará de recibir las ofertas de los gestores dirigidas a dicha baliza. Para implementar este sistema se va a utilizar una arquitectura editor/subcriptor (E/S) basada en un proceso intermediario (PI) usando un esquema E/S independiente para cada funcionalidad donde los nombres de los temas, que se han creado a priori, van a tener dos niveles: en el primer nivel aparece el tipo de funcionalidad y en el segundo el identificador de la baliza (por ejemplo, /seguimiento/balizaParafarmacia/ y /ofertas/balizaParafarmacia/). Por motivos de auditoría, se deben almacenar en un sistema de ficheros (SF) las distintas ubicaciones de los clientes durante sus visitas al establecimiento. Para garantizar la disponibilidad de esta información, se van a almacenar 4 copias de cada dato, usando un esquema de cuórum con un valor de 2 para las lecturas y de 3 para las escrituras. El servicio SF es concurrente usando un esquema híbrido con un mínimo de 5 threads y un máximo de 15. En el sistema se usa la serialización de Java para gestionar los datos transmitidos usando sockets.
  1. ¿Qué roles ejerce C?
    1. editor y subscriptor
    2. ninguno
    3. solo editor
    4. solo subscriptor
Explicación
Un cliente ejerce ambos roles. Cuando entra en el radio de cobertura de una baliza, debe publicar un evento en el tema vinculado con el seguimiento indicando este hecho para que los vigilantes correspondientes sean notificados; pero, además, debe darse de alta en el tema del servicio de ofertas de esa baliza para poder recibirlas.
  1. ¿Qué roles ejerce V?
    1. solo subscriptor
    2. ninguno
    3. solo editor
    4. editor y subscriptor
Explicación
Ejerce el rol de subscriptor del tema relacionado con el seguimiento de los clientes.
  1. ¿Qué roles ejerce G?
    1. solo editor
    2. ninguno
    3. solo subscriptor
    4. editor y subscriptor
Explicación
Se comporta como un subscriptor ya que se encarga de enviar eventos de oferta a las balizas correspondientes.
  1. ¿Cuál es el número máximo de subscripciones activas en el sistema en un instante dado?
    1. Nc + Nv*Nb
    2. Nc*Nb + Nv
    3. Nc + Nv
    4. Nc*Nb + Nv*Nb
Explicación
El número de subscripciones en el sistema es independiente de Ng puesto que los gestores ejercen el rol de editores. Los clientes sí se comportan como subscriptores, pero un determinado cliente solo puede estar suscrito al tema de seguimiento de una baliza en cada momento. Un vigilante puede supervisar todas la balizas del recinto. Por tanto, el número máximo de subscripciones (todos los vigilantes monitorizando todas las balizas) sería igual a Nc + Nv * Nb.
  1. ¿Cuál es el número máximo de de publicaciones en el sistema en un momento dado?
    1. Ng + Nc
    2. Nc + Nv
    3. Ng + Nv
    4. Nc + Nv + Ng
Explicación
En un instante dado, cada gestor puede estar realizando una oferta y un cliente entrando (o saliendo) del área de cobertura de una baliza. Por tanto, pueden estar generándose Nc + Ng eventos/publicaciones.
  1. ¿A qué acción E/S corresponde OP1?
    1. subscripción
    2. baja en la subscripción
    3. publicación
    4. subscripción y publicación
Explicación
Se trata de una subscripción de un vigilante al tema vinculado con el seguimiento.
  1. ¿A qué acción E/S corresponde OP2?
    1. baja en la subscripción
    2. subscripción
    3. publicación
    4. baja y publicación
Explicación
Corresponde a la baja de una subscripción de un vigilante al tema vinculado con el seguimiento.
  1. ¿A qué acción E/S corresponde OP3?
    1. publicación
    2. subscripción
    3. baja en la subscripción
    4. subscripción y publicación
Explicación
Consiste en una publicación al tema relacionado con las ofertas de una determinada baliza.
  1. ¿A qué acción E/S corresponde OP4?
    1. subscripción y publicación
    2. subscripción
    3. baja en la subscripción
    4. publicación
Explicación
Cuando un cliente se acerca a una baliza, su aplicación debe realizar una publicación en el tema de seguimiento asociado a esa baliza informando de este hecho y, además, subscribirse al tema de ofertas correspondiente a esa baliza.
  1. ¿A qué acción E/S corresponde OP5?
    1. baja y publicación
    2. subscripción
    3. baja en la subscripción
    4. publicación
Explicación
Cuando un cliente sale de la cobertura de una baliza, su aplicación debe realizar una publicación en el tema de seguimiento asociado a esa baliza informando de este hecho y, además, darse de baja del tema de ofertas correspondiente a esa baliza.
  1. ¿Qué módulo debería enviar los mensajes de renovación si se aplica leasing al esquema E/S?
    1. C y V
    2. C y G
    3. V y G
    4. PI
Explicación
Los módulos que ejerzan de subscriptores, es decir, los clientes y los vigilantes.
  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 realizar el seguimiento de un determinado cliente.
    2. Interés en conocer las ofertas de un determinado gestor dirigidas a la sección de cítricos.
    3. Interés en conocer cuándo un determinado cliente está en la sección de cítricos.
    4. Interés en conocer todas las ofertas que se producen en el sistema.
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).
  1. ¿De qué tipo de sistema se trata según el teorema CAP?
    1. CP
    2. CA
    3. AP
    4. CAP
Explicación
Dado que la suma del cuórum de lectura y el de escritura es mayor que el número de copias (2 + 3 > 5), cualquier partición de la red causará que el sistema no esté operativo en la partición que tenga menos copias accesibles. Por tanto, se ha primado la consistencia frente a la disponibilidad, resultando en un sistema de tipo CP.
NOTA: La expresión Para garantizar la disponibilidad de esta información... del enunciado no es muy afortunada (la intención era algo como Para mejorar la disponibilidad de esta información...) y puede inducir a pensar que el sistema asegura la disponibilidad. Para paliar esta ambigüedad se da también como válida la opción AP.
  1. ¿De qué tipo de sistema se trata según el teorema PACELC?
    1. PCEC
    2. PAEL
    3. PAEC
    4. PCEL
Explicación
Cuando en el sistema hay particiones, como se analizó en la pregunta sobre el teorema CAP, se prioriza la consistencia sobre la disponibilidad. En caso de que la red esté operativa, al cumplirse que la suma del cuórum de lectura y el de escritura sea mayor que el número de copias (2 + 3 > 5), se está primando la consistencia frente a la latencia. El sistema resultante es, por tanto, de tipo PCEC.
NOTA: La expresión Para garantizar la disponibilidad de esta información... del enunciado no es muy afortunada (la intención era algo como Para mejorar la disponibilidad de esta información...) y puede inducir a pensar que el sistema asegura la disponibilidad. Para paliar esta ambigüedad se da también como válida la opción PAEC.
  1. Suponiendo que primero llegan peticiones de 15 clientes a SF, a continuación transcurre un largo intervalo sin peticiones y, por último, se reciben peticiones de 8 clientes, ¿cuántos threads se crearán en total desde el arranque del servidor SF?
    1. 18
    2. 20
    3. 15
    4. 23
Explicación
Inicialmente, se crearán el número mínimo de threads (5). Cuando lleguen las 15 peticiones, será necesario crear 10 threads adicionales. Después de un periodo sin servicio, solo quedarán cinco threads activos. Por tanto, cuando lleguen las últimas 8 peticiones, habrá que crear tres threads adicionales. Por tanto, se tienen que crear 18 threads desde el arranque del servidor.
  1. Suponiendo que se usa un esquema de binding, ¿qué módulo debería darse de alta en el binder?
    1. PI
    2. C
    3. V
    4. G
Explicación
En el binder se deben dar de alta aquellos procesos cuya dirección debe ser conocida por otros procesos para poder interactuar con ellos. En este caso, PI es el único proceso que cumple estas características, ya que todos los demás procesos interactúan solo con él.
  1. Suponiendo que SF ofrece un servicio remoto para leer la siguiente entrada de un directorio y otro para leer el último bloque de datos de un fichero, ¿cuáles de esos servicios son sin estado?
    1. el segundo
    2. ambos
    3. el primero
    4. ninguno
Explicación
La operación de leer la siguiente entrada de un directorio requiere que el servidor lleve la cuenta de cuál ha sido la última entrada leída, lo que representa la existencia de estado en el servidor. Así, si un servidor se reinicia debido a un problema, no será capaz de servir esta petición al no saber cuál fue la última entrada leída. Con respecto a la operación de leer el último bloque de un fichero, se trata de una operación que no requiere estado en el servidor: si se reinicia un servidor, puede resolver una petición de este tipo accediendo directamente al último bloque del fichero.
  1. Se barajan dos opciones para enviar dos ficheros a otro nodo intentando obtener una solución zerocopy: mmap y writev vs. sendfile ¿Cuál es el número mínimo de llamadas de envío requeridas en cada caso?
    1. 1 writev; 2 sendfile
    2. 1 writev; 1 sendfile
    3. 2 writev; 1 sendfile
    4. 2 writev; 2 sendfile
Explicación
Para enviar dos ficheros se requieren dos operaciones sendfile, una por fichero, pero solo una operación writev: previamente, se realizarían las operaciones mmap de ambos ficheros para, a continuación, enviarlos con un único writev.
  1. ¿Qué es cierto con respecto al modo de operación de la función send sobre un socket?
    1. Puede bloquearse
    2. Es zerocopy
    3. Retorna cuando el mensaje llega al nodo destino
    4. Retorna cuando el mensaje lo recibe el proceso destino
Explicación
La operación send sobre un socket devuelve el control después de copiar la información en un buffer local (no zerocopy), sin ni siquiera tener que haber iniciado la transmisión, pudiéndose bloquear si ese buffer está lleno.
  1. ¿Qué información envía el mecanismo de serialización de Java de un determinado campo?
    1. su valor, su nombre y su tipo
    2. solo su valor y su tipo
    3. solo su valor y su nombre
    4. solo su valor
Explicación
El sistema de serialización de Java genera por cada campo información del nombre del mismo, su tipo y su valor.