Sistemas Distribuidos

Profesor Daniel Barrientos

Introducción
Los modelos utilizados para modelar sistemas distribuidos nos sirven como herramientas para describir sus propiedades y analizar alternativas de diseño. Estos modelos nos ayudan a … .. clasificar y comprender las diferentes implementaciones .. identificar sus debilidades y sus fortalezas .. elaborar nuevos sistemas diferentes a partir de aquellos de construcción pre-validadas Cada tipo de modelo nos brinda una descripción abstracta, simplificada y consistente de los aspectos relevantes del diseño de un SD

Dificultades y Amenazas para los SD
Los sistemas desarrollados para el mundo real deberían ser diseñados con los siguientes objetivos en mente:
Cubrir la más amplia gama de posibles circunstancias
Modelos muy diversos de uso: Alta variación de carga de trabajo, la desconexión parcial de los componentes, o una mala conexión. Amplia gama de entornos de sistemas: Hardware heterogéneos, sistemas operativos, redes, y el rendimiento.

Hacer frente a las posibles dificultades y amenazas
Los problemas internos: No relojes sincronizados, actualizaciones conflictivas, fallos de hardware y software. Las amenazas externas: Los ataques a la integridad de datos, a la confidencialidad y a la disponibilidad de la información. Denegación de servicio.

Satisfacer las demandas actuales y posiblemente las futuras

Examinan aspectos individuales de los SD: Modelo de Interacción: estructura y secuenciamiento de las comunicaciones entre los elementos del sistema Modelo de Fallos: considera las maneras en que un sistema puede fallar y operar correctamente Modelo de Seguridad: analiza como el sistema puede protegerse de interferir con su correcta operación o con el robo de datos . Estos pueden ser computadoras individuales o agregadas Modelos Fundamentales .Tipos de Modelos Modelos Físicos Describe los componentes de hardware: computadoras y sus interconexiones de red Modelos Arquitectónicos Describe el sistema en base a las tareas de cómputo y de comunicación ejecutadas por sus elementos computacionales.

Tenían entre 10 y 100 nodos interconectados a una LAN. En base al modelo físico podemos identificar tres generaciones de SD Early Distributed Systems Aparecieron a fines de los ’70. principios de los ‘80.Modelos Físicos Un modelo físico es la representación de los elementos de hardware de un sistema distribuido que se abstrae de los detalles de las computadoras y de la tecnología de networking utilizada. LU 6. AppleTalk. print servers. Servicios mínimos: file servers.2 . Conectividad limitada a Internet. email y transferencia de archivos a través de Internet Alto nivel de homogeneidad y no necesariamente compatible con otras redes: IPX.

Print and other servers Local area network Desktop computers email server Web server email server File server print other servers the rest of the Internet router/firewall .

Pone énfasis en el uso de estándares abiertos y tecnologías de middleware. lenguajes de programación. redes.) Internet-scale Distributed Systems Son SD de gran escala que emergieron en los ‘90 en respuesta al dramático crecimiento de Internet Explotan la infraestructura de Internet para ser globales Tienen un gran número de nodos Alto nivel de heterogeneidad en arquitecturas de computadoras. sistemas operativos. Se utilizan servicios adicionales para proveer calidad de servicio end-to-end. . etc.Modelos Físicos (cont.

automóviles. los nodos eran típicamente computadoras de escritorio y. cluster de bases de datos. discreto y autónomo o independientes.Modelos Físicos (cont. las arquitecturas de cluster hicieron que los nodos autónoma cumplan con un rol dentro de un pool de nodos que en conjunto brindan un servicio dado . etc) Cloud computing y. Mayor heterogeneidad . relativamente estático. en particular. heladeras. Por ejemplo. por lo tanto. Mobile computing permitió que los nodos (laptops y smartphones) puedan moverse de una ubicación a otra.) Contemporary Distributed Systems En los sistemas anteriores. Ubiquitous computing mudó los nodos discretos a arquitecturas embebidas en objetos de uso cotidiano (lavarropas.

planicies inundadas. a su vez. Por ejemplo. pronóstico del tiempo. Un SdS puede ser definido como un sistema complejo que abarca una serie de subsistemas que son sistemas por si mismos y que colaboran para ejecutar una tarea en particular. complementado con sistemas de mensajería para informar alertas. efecto de las mareas. Integrado con sistemas de simulación y sistemas con datos históricos. Captura de datos mediante sensores que monitorean nivel de los ríos. sistemas de gestión ambiental para predicción de inundaciones. Todo esto. .) Ultra-Large-scale Distributed Systems Los modernos SD de ultra gran escala se conocen como arquitecturas de “Sistemas de Sistemas” (SdS). etc.Modelos Físicos (cont.

Ultra-Large Super Grande Mucha investigación . Muchos nuevos estándares Mucha investigación Prioridad significativa. Nuevos tipos de arquitectura Apertura No era un prioridad Calidad de Servicio Mínimo Internet-scale Grande Importante. lenguajes y middleware Nuevas dimensiones.Generaciones de Sistemas Distribuidos Escala Early Pequeña Heterogeneidad Limitada. prácticamente configuraciones homogéneas Significativa en términos de plataforma.

la demanda futura. adaptable y rentable (costo-efectivo) Vamos a abordar el tema en 3 etapas: Elementos de la arquitectura Patrones arquitectónicos compuestos Plataformas de Middleware . Las principales preocupaciones son que el sistema sea fiable. administrable. si es posible.Modelos Arquitectónicos La arquitectura de un sistema se refiere a su estructura en términos de sus componentes y la relación entre ellos Su objetivo es satisfacer la demanda actual y.

qué paradigma de comunicación utiliza? Qué roles y responsabilidades tienen dentro de la arquitectura en general? Como se distribuyen dentro de la infraestructura física? Cuál es su colocación? .Elementos de la Arquitectura Para entender los elementos que constituyen un sistema distribuido. más especificamente. es necesario responder las siguientes 4 preguntas Cuáles son las entidades comunicantes dentro de un SD? Cómo se comunican o.

En este caso. Esto es cierto con dos salvedades: En entornos primitivos. los sistemas operativos no soportan el concepto de proceso. las entidades comunicantes se denominan nodos.Entidades Comunicantes Perspectiva orientada al sistema Las entidades comunicantes son procesos que se comunican mediante algún paradigma de comunicación. tales como redes de sensores. En la mayoría de los entornos de SD. los threads son endpoints de las comunicaciones . los procesos son suplementados por threads. así que siendo estrictos.

Entidades Comunicantes (cont.) Perspectiva orientada al problema Las entidades comunicantes son abstracciones más orientadas al problema. Componentes: evolución natural del enfoque OO. La diferencia radica en que los componentes no solo especifican su interfaz sino también su dependencia con otros componentes Servicios Web: proveen una infraestructura para mantener una forma de interoperabilidad más rica y estructurada entre clientes y servidores . como ser: Objetos : el cómputo resulta en la interacción de objetos que representan unidades naturales de descomposición de un dominio de problema dado.

Vamos a considerar 3 tipos de paradigmas de comunicación IPC • Socket Programming • MPI Invocación Remota • RPC • RMI Comunicaciones Indirectas • • • • Comunicaciones en Grupo Sistemas de Publicación y Subscripción Cola de Mensajes DSM .Paradigmas de Comunicación Los paradigmas de comunicación determinan cómo se comunican entre si las entidades.

La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí. Incluye primitivas para: pasaje de mensajes. y soporte para comunicaciones multicast . Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria. acceso directo a la API ofrecida por los protocolos de Internet (socket programming) . normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. o a través de las herramientas provistas por las rutinas de IPC. Inter-Process Communication) es una función básica de los sistemas operativos.IPC • Socket Programming • MPI IPC La comunicación entre procesos (comúnmente IPC. ya sean variables compartidas o buffers.

Las RPC son muy utilizadas dentro del paradigma cliente-servidor.Invocación Remota • RPC • RMI Remote Invocation Representa el paradigma de comunicación más utilizado en los Sistemas Distribuidos. Remote Procedure Calls (RPC) Permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos. . Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado de dicha operación al cliente. 1.

A través de RMI. un cliente puede conectarse e invocar los métodos proporcionados por el objeto. con lo que dicho objeto estará accesible a través de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de ese momento. . Forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas basadas exclusivamente en Java. Remote Method Invocation (RMI) Es un mecanismo ofrecido por Java para invocar un método de manera remota. un programa Java puede exportar un objeto.Invocación Remota • RPC • RMI 2.

Comunicaciones Indirectas Las comunicaciones indirectas se realizan a través de una 3ra entidad permitiendo un alto grado de desacoplamiento entre el emisor y el receptor Los emisores no necesitan conocer quien se le está enviando la información (space uncoupling) Los emisores y los receptores no necesitan existir al mismo tiempo (time uncoupling). Las principales técnicas son: Comunicaciones en grupo Sistemas de Publicación y Subscripción Cola de Mensajes DSM (Memoria Compartida Distribuida) .

Estrategias de balanceo de carga . donde se requiere precisión y acceso actualizado a una amplia variedad de información. La comunicación en grupo es un pilar importante para los SD en áreas tales como: Diseminación confiable de información a muchos clientes. Multiuser games Soporte para monitoreo y administración de sistemas. Ej.Comunicaciones en Grupo Proveen un servicio donde un mensaje es enviado a un grupo y luego este mensaje es distribuido a todos los miembros del grupo. Industria financiera Soporte para aplicaciones cooperativas. Ej. Ej.

los consumidores interesados se subscriben a la misma y el productor periódicamente va publicanco información. la arquitectura publicación-subscripción está formada por los componentes siguientes: Productor de información Consumidor de Información Mediador (Broker) Canal . Para poder tener el comportamiento descrito.Sistemas de Publicación y Subscripción En estos sistemas los productores de información la publican anunciando la disponibilidad de un cierto tipo de información.

.

Los productores envían mensajes a una cola específica y los consumidores los reciben o son notificados del arrivo de nuevos mensajes. Tipicamente estos sistemas proveen una funcionalidad mejorada de resilencia asegurando que los mensajes no se perderán en caso de encontrarnos con una falla del sistema. Ejemplos de implementaciones comerciales: IBM's WebSphere MQ Oracle Advanced Queuing .Cola de Mensajes Las colas de mensajes brindan un protocolo de comunicación asincrónico entre procesos permitiendo el pasaje de mensajes entre diferentes sistemas de computación.

Las aplicaciones pueden trabajar sobre la memoria compartida. grabando a leyendo estructuras de datos como si estuvieran dentro de su espacio de direcciones locales La infraestructura subyacente debe garantizar la disponibilidad de una copia en tiempo y forma. y asegurar la sincronización y consistencia de los datos .Memoria Distribuida Compartida (DSM) Los sistemas con DSM proveer una abstracción para compartir datos entre procesos que no comparten una memoria física.

oriented Entities Nodes Procesos Problemoriented Entities Objets Components Paradigmas de Comunicación IPC Invocación Remota Comunicación Indirecta Comunicaciones en Grupo Publish-Subscribe Message queues DSM Message passing RPC Sockets Multicast RMI .Entidades Comunicantes System.

y estos roles son fundamentales para establecer la arquitectura general.Roles y Responsabilidades En un sistema distribuido los procesos interactúan unos con otros para llevar adelante una tarea. Se presentan dos estilos arquitectónicos derivados de los roles de los procesos individuales: Client-Server Peer-to-Peer (P2P) . los procesos asumen un rol. Al hacer esto.

Los procesos clientes interactúan con procesos servidores solicitando el acceso a los recursos compartidos que ellos manejan . Históricamente es la más importante y sigue siendo la más empleada. Los procesos asumen el rol de cliente o servidor.ClientClient -Server Es la arquitectura más citada cuando se habla sobre SD.

Los servidores a su vez pueden acceder a servicios de otros servidores como si fueran clientes Ejemplo: un Web Server es cliente de un File Serve .Clientes invocando a Servidores Cliente Invocación Invocación Servidor Resultado Servidor Resultado Cliente Leyenda: Proceso: Computador: Los procesos Cliente interactúan con procesos servidores alojados en otras computadoras con el objeto de acceder a los datos o recursos.

becomes a client) client Server/client server Multi-tier (cascade model) server client Server/client Server/client server .Tipos de Arquitectura ClientClient-Server Two-tier model (classic) client server Three-tier (when the server.

Clientes and Servidores Interacción típica entre un cliente y un servidor .

la capacidad del sistema aumenta Ejemplos: Gnutella. Napster. interactuando cooperativamente como pares sin ninguna distinción entre procesos clientes y servidores. Kaza. Esta arquitectura presenta algunas ventajas como: Es más confiable porque no existe un punto central de falla ni un punto central de control A medida que se agregan participantes.PeerPeer -toto-Peer En esta arquitectura todos los procesos involucrados en una tarea o actividad juegan roles similares. BitTorrent etc. .

Peer Processes: Aplicación distribuida basada en procesos pares Peer 2 Peer 1 Application Sharable objects Peer 3 Application Application Peer 4 Application Peers 5 .. .. N Distributed “white board” – users on several computers to view and interactively modify a picture between them..

El placement debe ser determinado en base a un sólido conocimiento de la aplicación. y unas pocas directrices generales para obtener una solución óptima. pero también involucra aspectos tales como confiabilidad y seguridad. Estrategias de Placement: Mapeo de Servicios en Múltiples Servidores Cacheo Código Móvil Agentes Móviles .Colocación (Placement) El placement es crucial para determinar las propiedades de un Sistema Distribuido. En general se lo asocia a la performance.

Servicio provisto por Múltiples Servidores Service Server Client Server Client Server Services may be implemented as several server processes in separate host computers. parallel databases Oracle . Example: Cluster based Web servers and apps such as Google.

Web Proxy Servers Client Proxy server Web server Client Web server Un cache es un almacenamiento de datos recientemente usados .

. so the browser gives applets limited access to local resources (e.Web applets a) client request results in the downloading of applet code Client Applet code b) client interacts with the applet Web server Web server Client Applet Applets downloaded to clients give good interactive response Mobile codes such as Applets are potential security threat.g. NO access to local/user file system).

Agents themselves can be vulnerable – they may not be able to complete task if they are refused access. (e. . savings in communications cost – virtual markets. Potential security threat to the resources in computers they visit. The environment receiving agent should decide which of the local resource to allow.. usually on behalf of some other process – advantages: flexibility. software maintain on the computers within an organisation.g.Variants of Client Sever Model: Mobile Agents A running program (code and data) that travels from one computer to another in a network carrying out an autonomous task. crawlers and web servers).

X-11 system.Thin clients and compute servers Network computer or PC Thin Client network Compute server Application Process Network computer: download OS and applications from the network and run on a desktop (solve up-gradation problem) at runtime.g. E. . Thin clients: Windows-based UI on the user machine and application execution on a remote computer.

Sign up to vote on this title
UsefulNot useful