Solución oficial PEC3 Curso 2021/2022 Primer Semestre PDF

Title Solución oficial PEC3 Curso 2021/2022 Primer Semestre
Course Sistemas distribuidos
Institution Universitat Oberta de Catalunya
Pages 13
File Size 434.6 KB
File Type PDF
Total Downloads 60
Total Views 714

Summary

Download Solución oficial PEC3 Curso 2021/2022 Primer Semestre PDF


Description

PEC3 Sistemas Distribuidos

Diciembre de 2021

1. Explica qué es el acoplamiento temporal y espacial. Expone los pros y contras de ambos y compara el acoplamiento/desacoplamiento en MPI, JMS, IP Multicast, WhatsApp y email. El acoplamiento temporal y espacial son características clave de los paradigmas de comunicación en sistemas distribuidos. Un paradigma de comunicación define cómo se comunican las diferentes entidades de un sistema distribuido. En paradigmas de comunicación como la comunicación entre procesos y la invocación remota existe acoplamiento temporal entre el receptor y el emisor ambas entidades existen al mismo tiempo- y acoplamiento espacial -ambas entidades comunicantes se conocen- y la comunicación entre ellos es directa ya que no hay ningún intermediario entre ambos. En cambio, en el paradigma de comunicación indirecta, a diferencia de los paradigmas mencionados en el párrafo anterior, el uso de un intermediario entre el emisor y el receptor deriva en un desacoplamiento temporal -emisor y receptor no tienen que existir al mismo tiempo para comunicarse- y desacoplamiento espacial; emisor y receptor no se conocen o no tienen por qué conocerse. La siguiente tabla muestra la relación entre el acoplamiento espacial y temporal en sistemas distribuidos: Acoplamiento temporal Comunicación dirigida a un receptor o receptores Acoplamiento espacial que debe(n) existir en ese momento

Desacoplamiento espacial

El emisor no tiene porqué conocer la identidad del receptor o receptores y este (estos) debe(n) existir en ese momento

Desacoplamiento temporal Comunicación dirigida a un receptor o receptores. Emisor(es) y receptor(es) pueden no existir a la vez El emisor no tiene porqué conocer la identidad del receptor o receptores. Emisor(es) y receptor(es) pueden no existir a la vez

Las ventajas de los sistemas que hacen uso de acoplamiento temporal y espacial son el rendimiento y la facilidad de gestión al no existir intermediarios entre las entidades que se comunican. Las desventajas son la rigidez que presentan dichos sistemas a la hora de realizar cambios en caso de que sea necesario reemplazar una de las entidades comunicantes y la necesidad de que existan al mismo tiempo para realizar la comunicación. Las ventajas de los sistemas desacoplados temporal y espacialmente son la flexibilidad que proporcionan para abordar cambios en emisores y receptores (pueden ser reemplazados, actualizados, replicados o migrados), que estos no tienen por qué conocerse y, además, no tienen por qué existir al mismo tiempo (importante en entornos volátiles, como por ejemplo redes móviles, en los que pueden “venir” e “irse” en cualquier momento). Las desventajas que presentan

1

PEC3 Sistemas Distribuidos

Diciembre de 2021

son la merma en el rendimiento por el nivel de indirección y la dificultad de gestión, ambas resultantes de la inclusión de un intermediario. La interfaz de paso de mensajes o MPI (Message Passing Interface) es un estándar que define la sintaxis y la semántica de las funciones contenidas en una biblioteca de paso de mensajes. En el modelo arquitectural de MPI, los procesos emisor y receptor utilizan búferes gestionados por la propia librería para mantener datos en tránsito. El paso de mensajes se puede realizar de forma síncrona o asíncrona. La variante síncrona bloquea el proceso que ha enviado el mensaje hasta que el receptor emite la respuesta y bloquea el proceso receptor hasta que el mensaje de respuesta llega al proceso emisor. La variante asíncrona solo bloquea el proceso emisor hasta que éste copia el mensaje que quiere enviar al búfer local. MPI utiliza un modelo de comunicación directa en el que existe acoplamiento temporal y espacial. JMS (Java Message Service) es una especificación de una forma estandarizada para la comunicación indirecta entre programas Java en entornos distribuidos. Unifica dos paradigmas de comunicación: el de publicación-suscripción y el de cola de mensajes, ofreciendo a desarrolladores la posibilidad de realizar la comunicación entre entidades de una a varias o de punto a punto, respectivamente. Para interactuar con un proveedor JMS es necesario crear una conexión entre un programa de cliente y un proveedor. La conexión resultante es un canal lógico entre el cliente y el proveedor y se puede utilizar para crear una o más sesiones. Una sesión es una serie de operaciones que implican la creación, producción y consumo de mensajes relacionados con una tarea lógica. El objeto de sesión es primordial para la operación de JMS, dando soporte a métodos para la creación de mensajes, productores de mensajes (un objeto para publicar mensajes sobre un determinado tema o para enviar mensajes a una cola) y consumidores de mensajes (un objeto para suscribirse a mensajes de cierto tema o para recibir mensajes de una cola). En JMS existe desacoplamiento temporal (el mensaje se almacena en el servidor hasta que el consumidor pueda recibirlo, no siendo necesario que ambos estén activos a la vez) y espacial (no es necesario que el productor conozca quién es el consumidor). La Multidifusión IP (IP Multicast) permite a un emisor enviar un único paquete IP a un conjunto de receptores que conforman un grupo de multidifusión. El emisor desconoce la identidad de los receptores individuales -hay desacoplamiento espacial- y el tamaño del grupo. Pertenecer a un grupo de multidifusión permite a un miembro integrante de dicho grupo recibir paquetes IP enviados al grupo. La pertenencia a grupos de multidifusión es dinámica; los receptores pueden unirse a ellos y abandonarlos en cualquier momento y pueden unirse a un número arbitrario de grupos. Es posible enviar datagramas a un grupo de multidifusión sin ser miembro de él. Los mensajes enviados a un determinado grupo se entregarán a todos los miembros que se encuentren disponibles en el momento de la comunicación y, por lo tanto, hay acoplamiento temporal (los receptores deben existir en el momento de la multidifusión IP o no recibirán el mensaje).

2

PEC3 Sistemas Distribuidos

Diciembre de 2021

WhatsApp es una aplicación de mensajería instantánea para teléfonos inteligentes que utiliza el protocolo XMPP (Extensible Messaging and Presence Protocol) para el intercambio de mensajes y Mnesia (un SGBD distribuido de SRT o tiempo real débil) para el almacenamiento persistente de datos. Su backend ha sido desarrollado principalmente en Erlang (un lenguaje concebido para realizar aplicaciones distribuidas, tolerantes de fallos, de tiempo real débil y de funcionamiento ininterrumpido) que permite realizar una gestión eficiente de las comunicaciones. Con dicha aplicación un emisor puede enviar mensajes, que se almacenan y procesan en servidores intermedios, a uno o varios receptores. Al existir un intermediario que realiza el envío de los mensajes, se trata de una comunicación indirecta que puede ser síncrona (intercambio de mensajes, imágenes, etc. en tiempo real) o asíncrona (el receptor no está disponible en el momento de la comunicación pero igualmente recibirá el mensaje más adelante cuando vuelva a estar activo). Se produce, por lo tanto, un desacoplamiento temporal (el receptor puede no estar activo cuando el emisor envíe el mensaje) y un acoplamiento espacial (el emisor debe conocer la identidad del receptor). El correo electrónico (email) es un servicio de red que permite a sus usuarios enviar y recibir mensajes electrónicos. Normalmente el intercambio de mensajes se realiza con el protocolo SMTP (Simple Mail Transfer Protocol) en asociación con otros protocolos (POP, IMAP, etc.) para que el receptor (usuario) pueda descargar los mensajes de los servidores de correo. Como los sistemas de correo electrónico se basan en un modelo de almacenamiento y reenvío, no es necesario que ambos extremos se encuentren conectados simultáneamente, lo que implica la existencia de desacoplamiento temporal. A su vez, el emisor del mensaje debe conocer la identidad del receptor para poder realizar el envío por lo que existe acoplamiento espacial. 2. Contesta lo siguiente sobre la arquitectura BitTorrent: a) Describe brevemente los componentes de la arquitectura. BitTorrent es un protocolo para compartir archivos entre iguales (peer-to-peer) diseñado especialmente para el intercambio de archivos de gran tamaño. En lugar de descargar el archivo desde un único servidor, el protocolo BitTorrent permite a los usuarios unirse entre ellos en un enjambre (swarm) para descargar y subir el archivo de forma simultánea. El protocolo es una alternativa al sistema basado en el modelo cliente-servidor, en el que normalmente se dispone de varios servidores espejo (mirror) desde donde el usuario descarga el archivo completo. BitTorrent puede funcionar en redes con poco ancho de banda, de forma que dispositivos con capacidad de procesamiento limitado (como por ejemplo teléfonos inteligentes) son capaces de distribuir archivos grandes a muchos receptores. Un usuario que quiere subir un archivo primero crea un archivo torrent y lo distribuye por medios digitales convencionales (páginas web, correo electrónico, etc.). Después hace que el archivo esté disponible en la red a través de un nodo BitTorrent que actúa como semilla (seed). Los usuarios que quieren descargar el archivo obtienen el archivo torrent y crean otro nodo BitTorrent que

3

PEC3 Sistemas Distribuidos

Diciembre de 2021

actúa como cliente o sanguijuela (leecher), intercambiando partes del archivo con la semilla y con otros clientes. El archivo que está siendo distribuido se divide en partes pequeñas (pieces). Cada vez que un usuario recibe una parte nueva del archivo puede a su vez compartirla con otros usuarios, liberando a la semilla original de tener que enviar una copia de esa parte a todos los usuarios que quieren el archivo. La tarea de distribuir un archivo es compartida por todos aquellos que desean obtener el archivo. Es perfectamente posible que la semilla solo envíe una copia del archivo y el archivo sea distribuido a un número ilimitado de usuarios. Cada parte del archivo está protegida por un hash criptográfico contenido dentro del archivo torrent. Esto asegura que cualquier modificación que se produzca en una parte puede ser detectada y, por lo tanto, evita que tanto las modificaciones accidentales como las maliciosas sean recibidas en otros nodos. Si un nodo tiene el archivo torrent auténtico puede verificar la autenticidad del archivo completo que ha recibido. Las partes normalmente no se descargan de forma secuencial sino que son reordenadas por el cliente BitTorrent, el cual comprueba las partes que tiene y las que faltan por recibir. Todas las partes del archivo son del mismo tamaño y son transmitidas una sola vez. Gracias a ello se puede detener la descarga de un archivo en cualquier momento y reanudarla posteriormente sin perder la información descargada, lo que hace que BitTorrent sea especialmente útil para la transferencia de archivos grandes. Cuando un cliente descarga el archivo completamente se convierte en una semilla. Este cambio eventual de clientes en semillas determina la salud (health) o disponibilidad del archivo (en base al número de usuarios que tienen el archivo completo). En resumen, hay cinco pasos básicos para establecer un proceso de compartición de archivos en BitTorrent:

4

PEC3 Sistemas Distribuidos

Diciembre de 2021

1. Para descargar un archivo el nodo A primero descarga el archivo torrent de un servidor web 2. El nodo A contacta con el tracker para obtener una lista de nodos activos que estén participando en la compartición del torrent 3. El tracker devuelve una lista de nodos involucrados en la compartición del torrent 4. El nodo A añade como vecinos a todos los nodos conectados de la lista y envía una petición a todos ellos para recuperar una parte del archivo 5. Finalmente, una vez aceptada la solicitud, el nodo A puede intercambiar la parte del archivo con sus vecinos BitTorrent es un sistema peer-to-peer altamente escalable, la demanda de cada nodo no depende del número de nodos vecinos. El sistema distribuido puede crecer fácilmente solo utilizando más pares. El rendimiento aumentará cuanto mayor sea el número de nodos. b) Describe y argumenta cuáles de las siguientes estrategias podrían afectar o limitar el rendimiento y escalabilidad de BitTorrent: i. Aplicar Anti-snubbing. Ocasionalmente, se puede dar el caso de que un nodo sea bloqueado por todos los nodos de los que estaba descarándose datos. Esta situación se puede producir por diversos motivos, por ejemplo porque el ancho de banda de subida no es suficientemente grande o porque tiene datos que ya tienen todos los nodos a los que está conectado. Para mitigar este problema, se utiliza el antibloqueo (anti-snubbing) por el que, si pasados sesenta segundos un nodo no recibe ningún dato por parte de nodos bloqueantes a los que está conectado, deja de servirles datos y busca nuevos nodos candidatos que puedan servirle datos. Esta medida es positiva ya que permite que el ratio de descarga se recupere mucho más rápidamente en caso de que se produzcan este tipo de bloqueos. ii.

Seleccionar ciertos peers y asignar más tráfico a ellos.

Esta medida puede limitar el rendimiento y escalabilidad de BitTorrent. Lo lógico es dejar en manos del protocolo la utilización de los cuatro mecanismos que proporciona la estrategia de selección de nodos: tit-for-tat (TFT), desbloqueo optimista, anti-snubbing y solo subida ya que cada uno de ellos está pensado para diferentes escenarios y todos en su conjunto conforman la base del algoritmo que mejora la experiencia de descarga, sobre todo de aquellos nodos que contribuyen al sistema. iii.

Suprimir tit-for-tat.

Esta medida puede limitar el rendimiento de BitTorrent y es desaconsejable. Cada nodo utiliza tit-for-tat para desbloquear a los cuatro nodos que solicitan datos que proporcionan un mayor ratio de descarga. Como el nodo puede recibir peticiones de más de cuatro nodos tiene que bloquear al resto. Es un mecanismo que se ejecuta cada diez segundos en cada nodo y en el que los ratios de descarga se determinan por la cantidad de datos recibidos en los últimos veinte segundos. El mecanismo tit-for-tat permite a los nodos incentivar a nodos

5

PEC3 Sistemas Distribuidos

Diciembre de 2021

vecinos que proporcionan el ratio de descarga más alto. Si se suprime tit-for-tat dejaremos a los nodos sin el mecanismo que tienen para maximizar sus ratios de descarga y se producirá una merma considerable en el rendimiento, no favoreciendo a aquellos nodos que más contribuyen al sistema y no penalizando a los que menos contribuyen. 3. Explica las diferencias entre los siguientes sistemas de comunicación indirecta: publish/subscribe y message queues. Pon ejemplos de ambos paradigmas para ilustrar las diferencias y describe brevemente algunos proyectos de software libre que los usen. Publish-subscribe: Se trata de una técnica para la comunicación indirecta que pone énfasis en la comunicación y procesamiento de eventos. En un sistema publish-subscribe intervienen dos actores principales: • •

Publicadores: se encargan de la publicación de eventos estructurados en un servicio de eventos Suscriptores: expresan su interés en eventos particulares a través de suscripciones que pueden ser patrones arbitrarios sobre los eventos estructurados

La tarea de un sistema publish-subscribe es casar suscripciones con eventos publicados y asegurar la correcta entrega de notificaciones de eventos. Un determinado evento puede ser entregado a muchos suscriptores, de ahí que la comunicación se considere de uno a muchos (one-to-many). Los sistemas publish-subscribe presentan dos características principales: •



Heterogeneidad: permite que componentes de un sistema distribuido que no fueron diseñados para interoperar puedan trabajar conjuntamente gracias al uso de las notificaciones de eventos como medio de comunicación Asincronismo: las notificaciones se envían de forma asíncrona por publicadores que generan eventos a todos los suscriptores que han mostrado interés en ellos. Los publicadores no deben sincronizarse con los suscriptores

No es necesario que un publicador conozca quienes son los subscriptores ni que los suscriptores sepan quien ha publicado la información que reciben a raíz de una suscripción y, por lo tanto, se produce desacoplamiento espacial. Por otro lado, no es necesario que existan o estén activos al mismo tiempo y, en consecuencia, existe desacoplamiento temporal. Ejemplos de sistemas publish-subscribe son los de “sindicación realmente simple” (RSS), las listas de correo electrónico (mailing lists) o el protocolo MQTT (estándar de facto para mensajería en IoT). También podemos encontrar proyectos de código abierto basados en dicha técnica de comunicación indirecta como Apache Pulsar -un sistema distribuido de eventos y difusión en continuo (streaming) altamente escalable capaz de gestionar grandes 6

PEC3 Sistemas Distribuidos

Diciembre de 2021

volúmenes de datos o como Dapr; que proporciona un API de garantía de al menos a vez (at least once guarantee ) y que se integra en varios intermediarios (brókeres) de mensajería y sistemas de colas. Message queues: Las colas de mensajes son componentes software también para la comunicación indirecta pero en ellas, a diferencia de los sistemas publish-subscribe, la comunicación es de un punto a punto y utilizan colas como estructuras de datos para el envío indirecto de mensajes. El emisor (proceso productor) deja el mensaje en una cola y un receptor (un único proceso consumidor) lo recoge. Normalmente las colas de mensajes soportan tres tipos diferentes de recepción: • • •

Recepción bloqueante: se producirá un bloqueo hasta que haya un mensaje disponible Recepción no bloqueante: comprobará el estado de la cola devolviendo un mensaje si este está disponible o una indicación de no disponibilidad en caso contrario Operación de notificación: emitirá una notificación de evento cuando un mensaje esté disponible en la cola

Varios procesos pueden enviar mensajes a una misma cola y, de igual manera, varios receptores pueden recogerlos de ella. Generalmente los mensajes se recuperan en el mismo orden en el que fueron introducidos y, por lo tanto, son estructuras de datos FIFO (First In First Out) aunque la mayoría de las implementaciones de colas de mensajes también soportan prioridad, la cual posibilita que los mensajes de mayor prioridad se entreguen primero. Una propiedad crucial de los sistemas de colas de mensajes es la persistencia: las colas mantendrán los mensajes indefinidamente hasta que sean consumidos por los receptores y los guardarán en dispositivos de almacenamiento persistente para habilitar una entrega fiable gracias a la cual cualquier mensaje enviado será entregado (validez). La entrega se realizará en un tiempo desconocido (desacoplamiento temporal), un mensaje recibido será igual al enviado y no se entregarán mensajes por duplicado (integridad). Por lo tanto, las colas de mensajes garantizan que un mensaje será entregado una única vez. Aunque las colas de mensajes guardan similitudes con otros paradigmas de comunicación como los sistemas de paso de mensajes, los sistemas de colas de mensajes hacen uso explícito de colas de terceros, separadas del emisor y del receptor (desacoplamiento espacial). Ejemplos de sistemas de colas de mensajes son WebSphere MQ de IBM (un middleware que ofrece comunicación indirecta entre emisores y receptores de mensajes disponible para un gran número de plataformas, tanto de IBM como de otras compañías) y Amazon SQS (que soporta envío programático de mensajes a través de aplicaciones de servicios web como forma de comunicación por Internet). También hay proyectos de código abierto de sistemas middleware que soportan colas de mensajes como Apache ActiveMQ (de Apache Software Foundation) u OpenMQ (de Eclipse Foundation).

7

PEC3 Sistemas Distribuidos

Diciembre de 2021


Similar Free PDFs