Sistemas Distribuidos: Ejercicio del tema arquitectura de los sistemas distribuidos

Febrero del 2014.


Primera parte

Una agencia de noticias internacional (proceso de tipo A) proporciona un servicio de distribución de noticias. La agencia tiene contratados reporteros (proceso de tipo R) en el todo el mundo para recoger noticias in situ. Asimismo, la agencia tiene dos tipos de clientes: medios de comunicación (proceso de tipo M), interesados en algunas de las noticias que distribuye la agencia, y agencias de noticias locales (proceso de tipo L), que, además de estar interesados en algunas de las noticias de la agencia internacional, le suministran noticias locales a la agencia de noticias internacional. El servicio está basado en un esquema editor-subscriptor con un filtro de eventos por tema organizado jerárquicamente en niveles (por ejemplo, el tema Internacional corresponde a las noticias internacionales de los cinco continentes, mientras que Internacional/Asia sólo incluye las que se han producido en ese continente).
  1. ¿Qué tipos de procesos realizan el papel de subscriptores?
    1. M y L
    2. R y L
    3. A y L
    4. A y R
Explicación
Los dos tipos de clientes (es decir, los medios de comunicación y las agencias de noticias locales) están interesados en ser notificados de las noticias que les puedan interesar. Por tanto, desempeñan el papel de subscriptores.
  1. ¿Qué tipos de procesos realizan el papel de editores?
    1. R y L
    2. M y L
    3. A y L
    4. A y R
Explicación
Tanto los reporteros como las agencias locales de noticias pueden enviar noticias a la agencia de noticias internacional. Por tanto, desempeñan el papel de editores.
  1. ¿Qué tipo de proceso realiza el papel de intermediario?
    1. A
    2. R
    3. M
    4. L
Explicación
La aplicación de la agencia internacional incluye la funcionalidad de la distribución de las noticias que recibe a los clientes que puedan estar interesados en las mismas. Por tanto, realiza el papel de intermediario.
  1. Algunos procesos tienen que conocer la dirección (IP + puerto) de otros procesos. De las 12 combinaciones posibles (A tiene que conocer la dirección de R; R la de A; A la de M; etc.), ¿cuántas se requieren?
    1. 3
    2. 4
    3. 5
    4. 6
Explicación
En un esquema editor-subscriptor, tanto los subscriptores como los editores tienen que conocer la dirección del intermediario. Por tanto, los procesos G, M y L tienen que saber la dirección de A.
  1. El uso de un tema de primer nivel en vez del conjunto de temas de segundo nivel equivalente permite reducir el número de mensajes:
    1. De M a A
    2. De R a A.
    3. De A a M.
    4. De A a L.
Explicación
El uso de un tema de alto nivel en la subscripción (como, por ejemplo, Internacional) va a permitir poder usar una única operación de subscripción en vez de tener que suscribirse a cada uno de los temas de segundo nivel incluidos en el mismo (en el ejemplo, Internacional/Asia, Internacional/Europa, etc.). Por tanto, se va a reducir el número de mensajes requeridos para esta operación de subscripción, es decir, mensajes desde los subscriptores (M y L) al proceso intermediario (A). Por otro lado, ya sea usando una subscripción de alto nivel o las de bajo nivel equivalentes, el número de notificaciones será el mismo.
  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 notificaciones?
    1. Interés en las noticias internacionales protagonizadas por una determinada persona.
    2. Interés en las noticias de África o Asia protagonizadas por una determinada persona.
    3. Interés en todas las noticias internacionales.
    4. Interés en las noticias de todos los continentes excepto Europa.
Explicación
Veamos cada caso planteado analizando, en primer lugar, si el uso de un filtro por contenido tendría alguna ventaja en ese caso y, si hay varios en los que sí, en qué caso sería más efectivo (es decir, descartaría más eventos no deseados).
  1. ¿Qué esquema pull o push (i) proporcionaría más inmediatez en la distribución de las noticias; (ii) generaría más mensajes?
    1. (i) push; (ii) pull
    2. (i) push; (ii) push
    3. (i) pull; (ii) pull
    4. (i) pull; (ii) push
Explicación
El esquema push proporciona mayor inmediatez ya que en el pull el subscriptor debe realizar una consulta periódica para obtener los eventos. En cuanto a qué esquema genera más mensajes, en primer lugar, hay que tener en cuenta que en ambos esquemas se producirían el mismo número de mensajes de subscripción entre los subscriptores y el intermediario. Asimismo, habría el mismo número de mensajes de publicación de eventos entre los editores y el intermediario. La diferencia estaría en la notificación de eventos entre los subscriptores y el intermediario. En el esquema push se generarían solamente los mensajes correspondientes a los eventos. Sin embargo, en un esquema de tipo pull, se produce una sobrecarga adicional por los mensajes periódicos del subscriptor al intermediario preguntando por la existencia de eventos a los que está subscrito. En el caso de que no se haya producido ningún evento desde la última consulta, ese mensaje no dará ningún resultado. Nótese que, para un buen funcionamiento del sistema, en ambos esquemas el subscriptor acabará obteniendo la misma cantidad de eventos.
  1. Si se usa un mecanismo de leasing, ¿cuántos tipos de procesos deberían enviar el mensaje de renovación?
    1. 2
    2. 1
    3. 3
    4. 4
Explicación
Cuando se aplica un mecanismo de leasing en un esquema editor-subscriptor, los subscriptores (M y L, en este caso) deben renovar periódicamente el alquiler.

Segunda parte

Se pretende diseñar una aplicación cliente/servidor para proveer acceso remoto a ficheros proporcionando a las aplicaciones una interfaz UNIX y se está valorando usar un servicio con estado o sin estado. En el sistema se usa un esquema de binding que oculta tanto la dirección de la máquina donde ejecuta el servidor como su puerto de servicio pero tal que si al rearrancar el servidor en la misma máquina usa un puerto diferente, esa información no es necesario propagarla fuera de esa máquina.
  1. ¿Cuántas de las siguientes operaciones sobre directorios que puede hacer una aplicación generan mensajes del cliente al servidor en un modelo de servicio sin estado: mkdir, chdir y rmdir?
    1. 2
    2. 3
    3. 0
    4. 1
Explicación
Nota: Dado que la redacción de la pregunta no ha sido adecuada (lamento las molestias), se ha optado por admitir como buenas dos respuestas.

Las operaciones mkdir y rmdir deben ser enviadas al servidor aunque se trate de un esquema sin estado, puesto que los cambios asociados a las mismas tienen que modificar el sistema de ficheros almacenado en el servidor, creando y eliminando el directorio especificado, respectivamente. Sin embargo, la operación chdir no tiene ningún efecto sobre el sistema de ficheros del servidor en un esquema sin estado. Esta operación causa que el cliente almacene esa información de manera que a partir de ese momento todas las rutas relativas que usa la aplicación se completen con ese directorio actual antes de enviarlas al servidor (téngase en cuenta que en un esquema sin estado el cliente no puede enviar rutas relativas al sevidor). Ahora bien, sería conveniente verificar que el directorio pasado como parámetro a chdir exista y eso puede requerir (a no ser que se use una cache en el cliente) contactar con el servidor.

  1. Se plantean dos implementaciones para una cache en el cliente: (i) cada petición de lectura contacta con el servidor para comprobar si el dato en la cache sigue siendo válido; (ii) cuando se modifica parte de un fichero el servidor lo notifica a los clientes que tienen copia en su cache. ¿Qué implementación no es factible?
    1. (ii) con servicio sin estado
    2. (i) con servicio sin estado
    3. (i) con servicio con estado
    4. (ii) con servicio con estado
Explicación
La segunda implementación requiere que el servidor conozca qué clientes tienen copia del fichero. Por tanto, necesita tener un estado asociado.
  1. Se van a usar varios servidores independientes, que sólo comparten los discos, para repartir la carga del servicio de manera que cada mensaje de petición lo pueda procesar un servidor distinto. ¿Cuál de los dos modelos de servicio obligaría a que todas las peticiones de un cliente durante el acceso a un fichero tuviera que procesarlas el mismo servidor, dificultando de esta forma un reparto equilibrado de la carga?
    1. Servicio con estado
    2. Servicio sin estado
    3. Ambos modelos
    4. Ninguno de los dos modelos
Explicación
Para procesar en un servicio con estado una petición de lectura o escritura, hay que usar la información de estado almacenada en el servidor para saber, por ejemplo, a partir de qué posición realizar la petición. Esa necesidad conlleva que todas las peticiones correspondientes al acceso a un fichero por parte de un cliente en un sistema con un esquema con estado tenga que procesarlas el mismo servidor, puesto que, en caso contrario, no dispondría de la información de estado requerida.
  1. Se va a proporcionar a las aplicaciones tres tipos de operaciones de escritura: (i) escribir en la posición actual (el clásico write de UNIX); (ii) escribir en la posición especificada en un parámetro de la llamada (función pwrite de UNIX); (iii) escribir al final del fichero (write de UNIX cuando el fichero se abre con O_APPEND). ¿Cuál de los tres tipos de escrituras requeriría más información de estado en el cliente si se usa un servicio sin estado?
    1. (i)
    2. (ii)
    3. (iii)
    4. Ninguna requiere estado en el cliente
Explicación
En un esquema sin estado, la petición de escritura en la posición actual necesita que se almacene en el cliente dicha posición. Sin embargo, una escritura que incluya como parámetro la posición del fichero donde se llevará a cabo no requiere que se almacene este tipo de información puesto que ya se incluye en la propia llamada. Por último, una escritura que añada los datos al final del fichero tampoco requiere que se mantenga información de estado en el cliente puesto que la ubicación final de los datos se resolverá en el servidor cuando reciba la petición teniendo en cuenta el tamaño actual del fichero.
  1. ¿Qué tipo de modelo, con estado o sin estado, suele (i) requerir un tiempo ligeramente menor para procesar las peticiones; (ii) tener mayores problemas de condiciones de carrera en el acceso a estructuras de datos cuando se usa un servidor multithread?
    1. (i) con estado; (ii) con estado
    2. (i) sin estado; (ii) con estado
    3. (i) con estado; (ii) sin estado
    4. (i) sin estado; (ii) sin estado
Explicación
Un servicio con estado suele requerir un tiempo ligeramente menor para procesar las peticiones puesto que la información almacenada en el memoria del servidor puede agilizar el tratamiento de la misma (por ejemplo, puede estar almacenado en memoria el inodo del fichero). Por otro lado, la presencia de un estado en el servidor aumenta la posibilidad de que se produzcan condiciones de carrera durante la actualización del mismo si se usa un servidor multithread. Considérese, por ejemplo, el campo del inodo en memoria que representa el número de veces que está abierto el fichero que habría que actualizar dentro de una sección crítica.
  1. El servicio de ficheros va a incluir primitivas para establecer cerrojos. Se plantea usar leasing para los cerrojos y también para el servicio de binding. ¿Qué mensajes de renovación se producirían en cada caso?
    1. De C a S; De S a binders
    2. De C a S; De C a binders
    3. De S a C; De S a binders
    4. De S a C; De C a binders
Explicación
En el servicio de cerrojos, un cliente en posesión de un cerrojo debe enviar mensajes de renovación al servidor para detectar si se cae dicho cliente y liberar el cerrojo en ese caso. En cuanto al servicio de binding, el servidor, que se ha dado de alta en el mismo, debería enviar mensajes de renovación a los binders para asegurar de esta forma que sigue proporcionando el servicio y no está caído.
  1. Suponiendo que en el sistema hay X máquinas y que en Y de esas máquinas ejecutan servidores de ficheros, ¿cuántos binders globales (BG) y locales (BL) harán falta como mínimo en el sistema?
    1. BG:1; BL:Y
    2. BG:0; BL:X
    3. BG:0; BL:Y
    4. BG:1; BL:X
Explicación
Dado que hay que esconder la máquina y el puerto de servicio pero de manera que la información sobre el puerto de servicio usado se mantenga localmente, se debe usar una solución con un único binder global y un binder local en cada máquina donde ejecuta un servidor.
  1. ¿Qué información (direcciones de máquina y puertos) debe conocer a priori un cliente para localizar a un servidor en este sistema?
    1. 1 dirección de máquina y 2 puertos
    2. 1 dirección de máquina y 1 puerto
    3. 2 direcciones de máquina y 1 puerto
    4. 2 direcciones de máquina y 2 puertos
Explicación
En el esquema de binding requerido por este sistema (con un único binder global y múltiples locales), un cliente debe conocer la dirección y puerto de servicio del binder global, así como el puerto por el que dan servicio los binders locales.