Sistemas Distribuidos: Ejercicio de los temas arquitectura y comunicación en los sistemas distribuidos

Febrero del 2017.

Grupo de tarde.

Se pretende implementar un servicio de log global para un sistema distribuido basado en un esquema similar al usado en UNIX, donde cada mensaje de log tiene asociada una etiqueta con el siguiente formato: facility.priority. La facility corresponde al componente o subsistema al que está asociado el mensaje (por ejemplo, el correo, la web, el sistema de impresión o el kernel, hasta un total de 32 distintas) y la priority al grado de urgencia (8 niveles que van, de menor a mayor urgencia, desde info hasta panic). Tomando como ejemplo la facility web, todas las aplicaciones relacionadas con este servicio (como, por ejemplo, el navegador NW o el servidor web SW) escribirán mensajes de log especificando esta facility y el nivel de urgencia correspondiente. Por otro lado, el administrador del sistema debe especificar qué tratamiento se realiza con cada tipo de mensaje de log (por ejemplo, escribirlos en la consola del administrador, enviárselos por correo o imprimirlos). Para ello, el administrador desplegará una serie de aplicaciones que recibirán como información de configuración el tipo de mensajes de log que gestionan y que realizarán un determinado tratamiento con ellos (por ejemplo, CO los escribe en consola, MX los envía por correo y PR los imprime). Nótese que un mismo mensaje de log puede ser tratado por varias aplicaciones. Asimismo, téngase en cuenta que una aplicación de tratamiento de un cierto tipo de mensajes de log también puede necesitar generar a su vez mensajes de log (por, ejemplo, si la impresora no responde, la aplicación PR puede generar un mensaje de log asociado a la facility del sistema de impresión). Evidentemente, para evitar situaciones patológicas, el administrador no debería configurar que los mensajes de log asociados a una determinada facility sean tratados por una aplicación que usa esa facility. Para implementar este sistema, se utilizará una arquitectura editor/subscriptor con temas jerárquicos (2 niveles) y uso de comodines. Por motivos de trazabilidad y auditoría, todo mensaje de log será también guardado en un sistema de almacenamiento SA. La operación de escritura en SA seguirá un modelo cliente/servidor y siempre se añadirá al final del fichero (no escribe en la posición correspondiente al offset actual del proceso escritor sino que lo añade siempre al final del fichero). Por razones de seguridad, se almacenan varias copias de los datos en SA, existiendo una copia primaria. La operación de escritura se completará después de modificar la copia primaria, propagándose posteriormente a las otras copias. Las operaciones de lectura, que realizan procesos auditores, pueden acceder a cualquier copia. Por otro lado, si momentáneamente se deja de tener acceso a una de las copias, se seguirán actualizando las copias accesibles (una de las cuales será considerada como primaria) realizando un proceso de consolidación cuando se recupere la accesibilidad. Por último, dado que puede haber procesos de auditoría accediendo también a SA, se usará un servicio remoto de cerrojos (SC) para solventar los problemas de concurrencia, estando replicado dicho servicio para aumentar la fiabilidad.
  1. ¿Qué rol realiza el módulo NW?
    1. Sólo Ed
    2. Sólo Su
    3. Ed y Su
    4. Ninguno
Explicación
El módulo NW realiza el rol de editor ya que genera mensajes de log que serán notificados a todos los procesos que están configurados para tratar ese tipo de mensajes de log.
  1. ¿Qué rol realiza el módulo PR?
    1. Ed y Su
    2. Sólo Su
    3. Sólo Ed
    4. Ninguno
Explicación
El módulo PR se encarga de tratar los tipos de mensajes de log para los que está configurado, enviándolos a la impresora, por lo que actúa de subscriptor al tener que ser notificado de los mismos. Asimismo, este módulo también realiza el rol de editor ya que genera mensajes de log cuando se encuentra alguna situación anómala al interactuar con la impresora.
  1. ¿Cuántos temas existen en el esquema editor/subscriptor?
    1. 32 * 8
    2. 32
    3. 8
    4. 32 + 8
Explicación
Para cada facility hay 8 niveles de prioridad. Dado que el administrador puede especificar qué tratamiento recibe un mensaje de log que corresponda a una determinada facility y a un cierto nivel de prioridad, habrá un tema por cada combinación posible, resultando en un total de 32 multiplicado por 8.
  1. ¿Cuántas operaciones de subscripción se requieren para procesar todos los mensajes info y panic si se usan comodines?
    1. 2
    2. 16
    3. 64
    4. 40
Explicación
Gracias al uso de comodines se puede especificar en una sola operación de subscripción el interés por todos los mensajes de un mismo nivel de prioridad (por ejemplo, */info) o de una determinada facility con independencia de cuál sea su nivel de prioridad (por ejemplo, web/*). Para el enunciado planteado, harán falta dos subscripciones gracias al uso de comodines: */info y */panic.
  1. ¿Qué acción genera NW cuando detecta un error interno?
    1. publicación
    2. baja
    3. subscripción
    4. notificación
Explicación
Escribe un mensaje de log, lo que corresponde a una publicación que debe ser notificada a todos los procesos subscritos a ese tipo de mensaje.
  1. ¿Qué acción realiza CO en su fase inicial?
    1. subscripción
    2. baja
    3. publicación
    4. notificación
Explicación
Se tiene que subscribir a todos los tipos de mensajes de log especificados en su configuración.
  1. ¿Qué acción realiza CO en su fase final?
    1. baja
    2. subscripción
    3. publicación
    4. notificación
Explicación
Se tiene que dar de baja de todos los tipos de mensajes de log especificados en su configuración.
  1. ¿Qué acción realiza PR cuando detecta un error en la impresora?
    1. publicación
    2. baja
    3. subscripción
    4. notificación
Explicación
Escribe un mensaje de log, lo que corresponde a una publicación que debe ser notificada a todos los procesos subscritos a ese tipo de mensaje.
  1. ¿Qué acción recibida por MX causa que envíe un mensaje?
    1. notificación
    2. subscripción
    3. publicación
    4. baja
Explicación
Ese proceso envía un correo al administrador cuando es notificado de un mensaje de log que corresponde a uno de los tipos de mensajes especificados en su configuración.
  1. ¿De qué tipo de sistema se trata según el teorema CAP?
    1. AP
    2. CP
    3. CA
    4. CAP
Explicación
Dado que cuando se pierde la accesibilidad a todas las copias de los datos de una cuenta por problemas de conectividad (P) se siguen permitiendo las actualizaciones de las copias accesibles, se está prefiriendo la disponibilidad (A) sobre la consistencia (C).
  1. ¿De qué tipo de sistema se trata según el teorema PACELC?
    1. PAEL
    2. PAEC
    3. PCEC
    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 latencia frente a la consistencia (EL) ya que la operación de escritura se completa en cuanto esté actualizada la copia primaria, lo que resulta en una operación más eficiente pero que puede conducir a que se lean datos obsoletos.
  1. ¿Es idempotente y stateless la escritura sobre SA?
    1. No; Sí.
    2. Sí; No.
    3. No; No.
    4. Sí; Sí.
Explicación
La operación de escritura al final del fichero no es idempotente puesto que si se repite inadvertidamente se almacenará repetidamente el mismo mensaje de log. Sin embargo, sí es stateless puesto que no requiere para su procesamiento de un estado volátil en el servidor. De esta manera, aunque se reinicie un servidor, puede procesar sin problemas una petición de este tipo pues depende solamente del tamaño del fichero que es un valor persistente.
  1. ¿Qué módulo debería enviar los mensajes de renovación del lease si se aplica un esquema de leasing al editor/subscriptor?
    1. CO
    2. SW
    3. SC
    4. SA
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, sólo CO actúa como subscriptor.
  1. ¿Qué esquema de replicación de servicio sería más adecuado si se quiere minimizar el gasto de recursos de procesamiento (como, por ejemplo, consumo de energía) mientras el sistema no tenga errores aunque se sacrifique el tiempo de recuperación del servicio de cerrojos?
    1. cold standby
    2. hot standby
    3. warm standby
    4. Activa
Explicación
En el esquema cold standby, hay un servidor primario que procesa las peticiones de los clientes y almacena su estado de forma persistente, mientras que el resto de los servidores están desactivados y sólo entran en acción cuando se detecta que el primario está caído. Esta solución minimiza el gasto de recursos de procesamiento mientras el sistema no tenga errores, ya que en las otras planteadas los servidores realizan procesamiento aunque el sistema esté completamente operativo. La contrapartida es que se obtiene un peor tiempo de recuperación ya que, ante la caida del primario, hay que activar un nuevo servidor primario y éste tiene que reconstruir su estado leyendo del almacenamiento persistente.
  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 tratar los mensajes generados por una aplicación que usa todas las facilities.
    2. Interés en tratar todos los mensajes del sistema.
    3. Interés en tratar todos los mensajes de tipo panic.
    4. Interés en tratar los mensajes de tipo panic o info que genera NW.
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).

Las siguientes preguntas corresponden al tema de comunicación y, por tanto, no entran en este curso

  1. Sea una función con 4 parámetros que representan la dirección de 2 buffers y sus tamaños respectivos, y que va recibir un mensaje por un socket tal que la primera parte es una cabecera que se almacenará en el primer buffer y la segunda es el cuerpo del mensaje que se guardará en el segundo. ¿Qué servicio del S.O. puede optimizar la operación de esa función?
    1. readv
    2. mmap
    3. sendfile
    4. recv
Explicación
La meta a lograr en un escenario como el planteado sería poder recibir los datos directamente sobre los dos buffers con una única llamada y sin realizar ningún tipo de copia desde buffers intermedios. Los servicios mmap y sendfile están orientados a optimizar el acceso a los ficheros pero en este caso no hay ninguno involucrado. En cuanto a la llamada recv, si se usa para la recepción planteada o bien habría que utilizarla dos veces o bien habría que usar un buffer intermedio y copiar los datos desde el mismo. El servicio readv permite con una sola invocación recibir los datos en ambos buffers sin realizar copias intermedias.
  1. Suponga que un proceso tiene que enviar un mensaje a otro y, a continuación, recibir uno de un tercero. Para ello realiza la secuencia: define una variable; rellena la variable con el contenido del primer mensaje; lo envía; invoca una llamada de recepción bloqueante especificando la misma variable. ¿Para qué tipo de envío esta solución no es adecuada?
    1. Envío con retorno inmediato.
    2. Envío con retorno después de copia local.
    3. Envío con retorno cuando ha llegado el mensaje al nodo remoto.
    4. Envío con retorno cuando el proceso remoto ha recibido el mensaje.
Explicación
En el escenario planteado puede haber problemas si la primera llamada de envío no asegura que el buffer pasado como parámetro puede reutilizarse inmediatamente al completarse la llamada. El envío con retorno inmediato no lo asegura por lo que no es adecuado para el escenario propuesto.
  1. Suponga un sistema de comunicación en grupo causal con 4 procesos (de P1 a P4) donde P1 recibe un mensaje de P4 con un vector (2,3,4,5). ¿Cuál de los siguientes vectores que corresponden al proceso receptor P1 es correcto (algunos tienen valores no factibles) y permite la entrega inmediata del mensaje?
    1. (4,5,4,4)
    2. (1,3,5,4)
    3. (4,5,6,6)
    4. (4,2,4,4)
Explicación
  1. ¿En cuántos de los siguientes esquemas de serialización el tamaño del objeto serializado depende de la longitud que tengan los nombres de los campos del objeto original: XDR, JSON, Protocol Buffers y Java Serialization?
    1. 2
    2. 1
    3. 3
    4. 4
Explicación
Tanto JSON como el mecanismo de serialización estándar de Java incluyen el nombre de los campos en el objeto serializado. XDR no incluye esa información, mientras que Protocol Buffers incluye el identificador numérico del campo, pero no su nombre.
  1. ¿Cuáles de los siguientes mecanismos de comunicación proporcionan desacoplamiento espacial: sockets y RabbitMQ?
    1. RabbitMQ
    2. sockets
    3. Ambos
    4. Ninguno
Explicación
Trabajando con un socket, se requiere especificar la dirección IP y el puerto destinatario del mensaje, por lo que no ofrece desacoplamiento espacial. Sin embargo, en RabbitMQ un mensaje se envía a una cola, sin conocer qué procesos lo recibirán, proporcionando, por tanto, desacoplamiento espacial.