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

Marzo del 2016.

Grupo de tarde.

La empresa GameOver proporciona la infraestructura para el despliegue de juegos online multijugador de gran escala (Massively Multiplayer Online Game) basados en un universo de habitaciones conectadas por puertas. Esta infraestructura está implementada en la empresa (módulo G) mediante una solución que combina un esquema cliente/servidor, para la descarga de información, con un editor/subscriptor, para la actualización automática de la posición de los jugadores. En este sistema hay dos tipos de usuarios: los jugadores, que deambulan por el universo virtual, y los árbitros, que contemplan las acciones de los diversos jugadores, sin intervenir en el universo virtual. La empresa proporciona una aplicación (C) que permite a un usuario crear un nuevo juego definiendo cada una de las habitaciones del universo y su conectividad. Una vez completada la fase de definición, toda esa información, de gran volumen, se carga en la infraestructura de la empresa. Finalizada esa etapa, el proceso creador se convierte en el árbitro inicial del sistema, pudiéndose incorporar progresiva y dinámicamente más árbitros a lo largo de una partida. Un árbitro contemplará en su pantalla todo el universo y conocerá en todo momento qué jugadores están ubicados en todas y cada una de las habitaciones. La aplicación que corresponde a un árbitro (A) dispone de dos operaciones: (OP1) inicio de la supervisión, que, entre otras acciones, descarga del servidor G todas las imágenes del universo virtual y descarga desde cualquier otro árbitro la información sobre qué jugadores están ubicados en todas y cada una de las habitaciones (el árbitro inicial no necesita descargar esa información de ubicación) mostrando en la pantalla toda esta información, momento a partir del cual esta aplicación irá recibiendo automáticamente todas las actualizaciones de la ubicación de los jugadores, que reflejará en la pantalla; (OP2) fin de la supervisión. Un jugador ve en su pantalla sólo la habitación que ocupa en ese instante y, por tanto, sólo debe conocer en cada momento qué otros jugadores están en esa misma habitación. La aplicación que corresponde a un jugador (J) dispone, entre otras, de las siguientes operaciones: (OP3) login y (OP4) logout, que contactan con el servidor de la empresa para proporcionar información del jugador y para finalizar el juego, respectivamente; (OP5) entrar en una determinada habitación, que, entre otras acciones, descarga desde el servidor G la imagen de la habitación y desde cualquier árbitro la información sobre qué jugadores están ubicados en esa habitación en ese momento mostrando en la pantalla esa información (esta entrada se reflejará automáticamente en las pantallas de todos los árbitros y de los otros jugadores que están en esa nueva habitación), momento a partir del cual esta aplicación irá recibiendo automáticamente todas las actualizaciones que corresponden a otros jugadores que entran y salen de la habitación, que reflejará en su pantalla; (OP6) salir de la habitación que ocupa el jugador, que elimina de la pantalla la representación de la habitación, y que se reflejará automáticamente en las pantallas de todos los árbitros y de los otros jugadores que estaban en esa habitación. Nótese que la acción de atravesar la puerta entre dos habitaciones se interpreta como una operación de salir seguida por una de entrar.
  1. ¿Qué módulos realizan el papel de subscriptores?
    1. J y A
    2. J
    3. A
    4. G
Explicación
El módulo J correspondiente a un determinado jugador realiza el rol de subscriptor puesto que está interesado en ser notificado cada vez que otro jugador entra o sale de la habitación que este primero ocupa actualmente. El módulo A también hace ese mismo papel de subscriptor ya que necesita conocer en todo momemto las ubicaciones de todos los jugadores.
  1. ¿Qué módulos realizan el papel de editores?
    1. J
    2. J y A
    3. A
    4. G
Explicación
El módulo J realiza el rol de editor puesto que los cambios de ubicación del jugador asociado a ese módulo deben ser notificados a todos los árbitros así como a todos los jugadores que estén en la misma habitación que este jugador.
  1. ¿Qué acción implica OP1?
    1. subscripción
    2. baja
    3. publicación
    4. notificación
Explicación
El inicio de la supervisión por parte de un árbitro conlleva la subscripción a todos los temas asociados con todas y cada una de las habitaciones puesto que necesita conocer en todo momento el estado del sistema.
  1. ¿Qué acción implica OP2?
    1. baja
    2. subscripción
    3. publicación
    4. notificación
Explicación
El fin de la supervisión por parte de un árbitro conlleva la baja de la subscripción a todos los temas del sistema puesto que ya necesita conocer ninguna información acerca del mismo.
  1. ¿Las acciones OP5 y OP6 provocan una subscripción?
    1. OP5 sí
    2. OP6 sí
    3. Ambas
    4. Ninguna
Explicación
Cuando un jugador entra en una habitación, debe subscribirse al tema asociado a la misma para ser notificado a partir de ese momento de que otros jugadores entran y salen de esa habitación.
  1. ¿Las acciones OP5 y OP6 causan baja de una subscripción?
    1. OP6 sí
    2. OP5 sí
    3. Ambas
    4. Ninguna
Explicación
Cuando un jugador sale de una habitación, debe darse de baja del tema asociado a la misma para dejar de ser notificado cuando otros jugadores entran y salen de la misma.
  1. ¿Las acciones OP5 y OP6 provocan publicar un evento?
    1. Ambas
    2. OP5 sí
    3. OP6 sí
    4. Ninguna
Explicación
Tanto la operación de entrar en una habitación como la de salir de la misma deberán ser comunicadas a todos los árbitros así como a los usuarios que comparten esa habitación para que puedan reflejar en sus respectivas pantallas ese hecho. Ambas acciones, por tanto, corresponden a una operación de publicación.
  1. ¿Qué mensaje recibido por un jugador provoca que se elimine a otro jugador de su pantalla?
    1. notificación
    2. baja
    3. subscripción
    4. publicación
Explicación
El borrado en la pantalla de un jugador de la imagen de otro se lleva a cabo cuando se recibe la notificación de que ese segundo jugador ha salido de la habitación que compartían hasta ese momento.
  1. ¿Qué mensaje recibido por un jugador provoca que se añada otro jugador en su pantalla?
    1. notificación
    2. baja
    3. subscripción
    4. publicación
Explicación
El dibujar en la pantalla de un jugador la imagen de otro se lleva a cabo cuando se recibe la notificación de que ese segundo jugador ha entrado en la habitación donde está ubicado el primero.
  1. Teniendo en cuenta la funcionalidad de J, ¿Cuántos temas existen en el esquema editor/subscriptor?
    1. Uno por habitación
    2. Sólo uno
    3. Uno por árbitro
    4. Uno por jugador
Explicación
Un jugador sólo debe ser informado cada vez que otro jugador entra o sale de la habitación donde está ubicado el primero. Por tanto, hay tantos temas como habitaciones.
  1. Se requiere saber cuánto tiempo participa en el juego cada jugador. Para ello, se calcula la diferencia del tiempo tomado en el servidor en OP3 y OP4. Se están valorando dos implementaciones: (1) en OP3 G envía el valor de tiempo a J y éste presenta ese valor original a G en OP4 para calcular la diferencia con el tiempo actual; (2) en OP3 G almacena el tiempo en ese momento y le devuelve a J un identificador de sesión que éste presenta a G en OP4 lo que le permite recuperar el valor original y restarlo del tiempo actual. ?`Qué solución (i) proporciona mayor tolerancia a los reinicios del servidor y cuál (ii) facilita el reparto de carga entre servidores si se usa un esquema de múltiples servidores en G?
    1. (1)(1)
    2. (2)(2)
    3. (1)(2)
    4. (2)(1)
Explicación
La solución (2) requiere estado en el servidor puesto que éste tiene que almacenar el momento en el que el usuario ha hecho el login. La solución (1) no requiere estado en el servidor ya que en la operación de logout éste recibe la marca de tiempo inicial. Por tanto, la solución (1), al no requerir estado en el servidor, proporciona mayor tolerancia a los reinicios del servidor y facilita el reparto de carga entre servidores si se usa un esquema de múltiples servidores.
  1. La carga al servidor de las imágenes del universo desde C toma un tiempo considerable y durante la misma puede perderse la conectividad con la empresa, sobretodo si el usuario creador utiliza un dispositivo móvil. Ante este problema, cuando se recupera la conectividad, se usa una petición PUT de HTTP con rangos que permite enviar un determinado intervalo de bytes de un recurso web. ¿Se trata de una operación (i) idempotente, (ii) que requiere estado en el servidor?
    1. sí; no
    2. no; sí
    3. no; no
    4. sí; sí
Explicación
La operación PUT con rangos es idempotente puesto que, aunque se repita varias veces, el resultado final es el mismo. Además, esta operación no requiere estado en el servidor al contener toda la información necesaria para su procesamiento (la identificación del recurso y el rango de bytes escritos).
  1. Suponiendo que se usa un esquema de leasing para mejorar la tolerancia a fallos del esquema editor/subscriptor, ¿qué módulos deben renovar el lease?
    1. J y A
    2. J
    3. A
    4. G
Explicación
Cuando se aplica un mecanismo de leasing en un esquema editor-subscriptor, son los subscriptores los encargados de enviar el mensaje de renovación. Por tanto, se trata de los módulos J y A.
  1. ¿Qué módulo se beneficiaría más de una operación de subscripción múltiple con comodines?
    1. A
    2. J
    3. G
    4. C
Explicación
Un jugador sólo está suscrito a un tema/habitación en cada momento. Un árbitro, sin embargo, necesita estar suscrito a todos los temas/habitaciones por lo que se beneficiaría del uso de una operación de subscripción múltiple.
  1. Suponga que se usa un sistema de comunicación de grupo para implementar un esquema editor/subscriptor basado en temas, ¿cuántas direcciones de grupo deben existir en el sistema?
    1. Una por cada tema
    2. Una por subscriptor
    3. Una por editor
    4. Una por evento
Explicación
Habría una dirección por cada tema ya que esto permitiría que la operación de publicación de un evento se llevara a cabo realizando un envío a la dirección asociada al tema correspondiente.
  1. Si se usa un esquema de binding, ¿qué módulos deben darse de alta en el mismo?
    1. G y A
    2. J y A
    3. G y J
    4. J
Explicación
Todo módulo que sea el destinatario de una petición debe darse de alta en el servicio de binding. El módulo G lo requiere tanto en su rol de proceso intermediario en el esquema editor/subscriptor como en su papel de servidor a la hora de descargar las imágenes del universo del juego. El módulo A también lo requiere puesto que actúa como servidor al que se le solicita el estado de ocupación de una o más habitaciones.
  1. ¿Para el seguimiento de cuál de las siguientes informaciones de estado sería más ventajoso usar un esquema con un filtro de eventos por contenido en vez de un filtro por temas en el sentido de reducir el número de notificaciones no deseadas?
    1. Ubicación en cada momento de un jugador dado.
    2. Qué jugadores hay en cada instante en un determinado conjunto de habitaciones.
    3. Conocer todo el estado del sistema.
    4. Interés en cuando cualquiera de un conjunto de jugadores entra en una determinada habitación.
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. Suponga un sistema de comunicación en grupo causal con 4 procesos (de P1 a P4) donde P4 tiene un vector (2,2,2,2) y recibe un mensaje M de P1 con un vector (5,3,3,0). ¿Cuántos mensajes adicionales tiene que recibir antes de entregar M?
    1. 4
    2. 2
    3. 3
    4. 5
Explicación
Dado que el mensaje proviene de P1, la primera componente del vector recibido está indicando que es el quinto mensaje de P1 pero, sin embargo, la primera componente del vector de P4 indica que hasta el momento sólo se ha recibido dos, por lo que faltan el tercer y cuarto mensaje para satisfacer la política FIFO que debe cumplirse también en un sistema causal. En cuanto a la segunda componente del mensaje recibido, indica que el proceso P1 ya ha recibido tres mensajes de P2 pero, sin embargo, la segunda componente del vector de P4 indica que éste hasta el momento sólo ha recibido dos de P2, por lo que falta un mensaje de dicho proceso. Con la tercera componente ocurre exactamente lo mismo. Recapitulando, faltan 4 mensajes.
  1. ¿Cuántos de estos sistemas de serialización incluyen información sobre la identificación de cada campo y sobre el tipo del mismo: XDR, Protocol Buffers y Java Serialization?
    1. 1
    2. 2
    3. 3
    4. 0
Explicación
XDR sólo transmite, o almacena, los datos que se pretender compartir, no incluyendo información identificativa de los campos que componen la información ni del tipo de los mismos. Protocol Buffers no incluye tampoco información de tipos pero sí añade información identificativa de los campos. Java Serialization incluye ambos tipos de informaciones.
  1. ¿Qué es cierto con respecto a un send sobre un socket: (1) cuando retorna, el programa no puede reutilizar el buffer inmediatamente; (2) no es zero-copy; (3) nunca se bloquea; (4) se bloquea hasta que el destinatario recibe el mensaje?
    1. 1
    2. 2
    3. 3
    4. 4
Explicación
Cuando devuelve el control una llamada send sobre un socket, el mensaje se ha copiado a un buffer local (bloqueándose si no hay sitio en el mismo), rompiendo el criterio zero-copy, por lo que el programa puede reutilizar inmediatamente el buffer del mensaje, pero no se garantiza que el mensaje haya llegado al nodo remoto.