You are on page 1of 40

Sistemas Distribuidos

Profesor Daniel Barrientos

Introduccin
Los modelos utilizados para modelar sistemas distribuidos nos sirven como herramientas para describir sus propiedades y analizar alternativas de diseo. 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 construccin pre-validadas Cada tipo de modelo nos brinda una descripcin abstracta, simplificada y consistente de los aspectos relevantes del diseo de un SD

Dificultades y Amenazas para los SD


Los sistemas desarrollados para el mundo real deberan ser diseados con los siguientes objetivos en mente:
Cubrir la ms amplia gama de posibles circunstancias
Modelos muy diversos de uso: Alta variacin de carga de trabajo, la desconexin parcial de los componentes, o una mala conexin. Amplia gama de entornos de sistemas: Hardware heterogneos, 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 informacin. Denegacin de servicio.

Satisfacer las demandas actuales y posiblemente las futuras

Tipos de Modelos
Modelos Fsicos
Describe los componentes de hardware: computadoras y sus interconexiones de red

Modelos Arquitectnicos
Describe el sistema en base a las tareas de cmputo y de comunicacin ejecutadas por sus elementos computacionales. Estos pueden ser computadoras individuales o agregadas

Modelos Fundamentales - Examinan aspectos individuales de los SD:


Modelo de Interaccin: 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 operacin o con el robo de datos

Modelos Fsicos
Un modelo fsico es la representacin de los elementos de hardware de un sistema distribuido que se abstrae de los detalles de las computadoras y de la tecnologa de networking utilizada. En base al modelo fsico podemos identificar tres generaciones de SD Early Distributed Systems
Aparecieron a fines de los 70, principios de los 80. Tenan entre 10 y 100 nodos interconectados a una LAN. Conectividad limitada a Internet. Servicios mnimos: file servers, print servers, email y transferencia de archivos a travs de Internet Alto nivel de homogeneidad y no necesariamente compatible con otras redes: IPX, AppleTalk, LU 6.2

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

Modelos Fsicos (cont.)


Internet-scale Distributed Systems
Son SD de gran escala que emergieron en los 90 en respuesta al dramtico crecimiento de Internet Explotan la infraestructura de Internet para ser globales Tienen un gran nmero de nodos Alto nivel de heterogeneidad en arquitecturas de computadoras, sistemas operativos, lenguajes de programacin, redes, etc. Pone nfasis en el uso de estndares abiertos y tecnologas de middleware. Se utilizan servicios adicionales para proveer calidad de servicio end-to-end.

Modelos Fsicos (cont.)


Contemporary Distributed Systems
En los sistemas anteriores, los nodos eran tpicamente computadoras de escritorio y, por lo tanto, relativamente esttico, discreto y autnomo o independientes. Mobile computing permiti que los nodos (laptops y smartphones) puedan moverse de una ubicacin a otra. Ubiquitous computing mud los nodos discretos a arquitecturas embebidas en objetos de uso cotidiano (lavarropas, heladeras, automviles, etc) Cloud computing y, en particular, las arquitecturas de cluster hicieron que los nodos autnoma cumplan con un rol dentro de un pool de nodos que en conjunto brindan un servicio dado . Por ejemplo, cluster de bases de datos. Mayor heterogeneidad

Modelos Fsicos (cont.)


Ultra-Large-scale Distributed Systems
Los modernos SD de ultra gran escala se conocen como arquitecturas de Sistemas de Sistemas (SdS). 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. Por ejemplo, sistemas de gestin ambiental para prediccin de inundaciones. Captura de datos mediante sensores que monitorean nivel de los ros, planicies inundadas, efecto de las mareas, pronstico del tiempo, etc. Integrado con sistemas de simulacin y sistemas con datos histricos. Todo esto, a su vez, complementado con sistemas de mensajera para informar alertas.

Generaciones de Sistemas Distribuidos


Escala Early Pequea Heterogeneidad Limitada, prcticamente configuraciones homogneas Significativa en trminos de plataforma, lenguajes y middleware Nuevas dimensiones. Nuevos tipos de arquitectura Apertura No era un prioridad Calidad de Servicio Mnimo

Internet-scale

Grande

Importante. Muchos nuevos estndares Mucha investigacin

Prioridad significativa.

Ultra-Large

Super Grande

Mucha investigacin

Modelos Arquitectnicos
La arquitectura de un sistema se refiere a su estructura en trminos de sus componentes y la relacin entre ellos Su objetivo es satisfacer la demanda actual y, si es posible, la demanda futura. Las principales preocupaciones son que el sistema sea fiable, administrable, adaptable y rentable (costo-efectivo) Vamos a abordar el tema en 3 etapas:
Elementos de la arquitectura Patrones arquitectnicos compuestos Plataformas de Middleware

Elementos de la Arquitectura
Para entender los elementos que constituyen un sistema distribuido, es necesario responder las siguientes 4 preguntas
Cules son las entidades comunicantes dentro de un SD? Cmo se comunican o, ms especificamente, qu paradigma de comunicacin utiliza? Qu roles y responsabilidades tienen dentro de la arquitectura en general? Como se distribuyen dentro de la infraestructura fsica? Cul es su colocacin?

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

Entidades Comunicantes (cont.)


Perspectiva orientada al problema Las entidades comunicantes son abstracciones ms orientadas al problema, como ser: Objetos : el cmputo resulta en la interaccin de objetos que representan unidades naturales de descomposicin de un dominio de problema dado. Componentes: evolucin natural del enfoque OO. La diferencia radica en que los componentes no solo especifican su interfaz sino tambin su dependencia con otros componentes Servicios Web: proveen una infraestructura para mantener una forma de interoperabilidad ms rica y estructurada entre clientes y servidores

Paradigmas de Comunicacin
Los paradigmas de comunicacin determinan cmo se comunican entre si las entidades. Vamos a considerar 3 tipos de paradigmas de comunicacin
IPC Socket Programming MPI Invocacin Remota RPC RMI Comunicaciones Indirectas Comunicaciones en Grupo Sistemas de Publicacin y Subscripcin Cola de Mensajes DSM

IPC Socket Programming MPI

IPC La comunicacin entre procesos (comnmente IPC, Inter-Process Communication) es una funcin bsica de los sistemas operativos. Los procesos pueden comunicarse entre s a travs de compartir espacios de memoria, ya sean variables compartidas o buffers, o a travs de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre s, normalmente a travs de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. Incluye primitivas para:
pasaje de mensajes, acceso directo a la API ofrecida por los protocolos de Internet (socket programming) , y soporte para comunicaciones multicast

Invocacin Remota RPC RMI

Remote Invocation Representa el paradigma de comunicacin ms utilizado en los Sistemas Distribuidos.


1. Remote Procedure Calls (RPC)

Permite a un programa de ordenador ejecutar cdigo en otra mquina remota sin tener que preocuparse por las comunicaciones entre ambos. Las RPC son muy utilizadas dentro del paradigma cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o funcin y enviando ste de vuelta el resultado de dicha operacin al cliente.

Invocacin Remota RPC RMI

2. Remote Method Invocation (RMI)

Es un mecanismo ofrecido por Java para invocar un mtodo de manera remota. Forma parte del entorno estndar de ejecucin de Java y proporciona un mecanismo simple para la comunicacin de servidores en aplicaciones distribuidas basadas exclusivamente en Java. A travs de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estar accesible a travs de la red y el programa permanece a la espera de peticiones en un puerto TCP. A partir de ese momento, un cliente puede conectarse e invocar los mtodos proporcionados por el objeto.

Comunicaciones Indirectas
Las comunicaciones indirectas se realizan a travs 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 informacin (space uncoupling) Los emisores y los receptores no necesitan existir al mismo tiempo (time uncoupling). Las principales tcnicas son:
Comunicaciones en grupo Sistemas de Publicacin y Subscripcin Cola de Mensajes DSM (Memoria Compartida Distribuida)

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. La comunicacin en grupo es un pilar importante para los SD en reas tales como:
Diseminacin confiable de informacin a muchos clientes, donde se requiere precisin y acceso actualizado a una amplia variedad de informacin. Ej. Industria financiera Soporte para aplicaciones cooperativas. Ej. Multiuser games Soporte para monitoreo y administracin de sistemas. Ej. Estrategias de balanceo de carga

Sistemas de Publicacin y Subscripcin


En estos sistemas los productores de informacin la publican anunciando la disponibilidad de un cierto tipo de informacin, los consumidores interesados se subscriben a la misma y el productor peridicamente va publicanco informacin. Para poder tener el comportamiento descrito, la arquitectura publicacin-subscripcin est formada por los componentes siguientes:
Productor de informacin Consumidor de Informacin Mediador (Broker) Canal

Cola de Mensajes
Las colas de mensajes brindan un protocolo de comunicacin asincrnico entre procesos permitiendo el pasaje de mensajes entre diferentes sistemas de computacin. Los productores envan mensajes a una cola especfica 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 perdern en caso de encontrarnos con una falla del sistema. Ejemplos de implementaciones comerciales:
IBM's WebSphere MQ Oracle Advanced Queuing

Memoria Distribuida Compartida (DSM)


Los sistemas con DSM proveer una abstraccin para compartir datos entre procesos que no comparten una memoria fsica. 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 sincronizacin y consistencia de los datos

Entidades Comunicantes System- oriented Entities Nodes Procesos Problemoriented Entities Objets Components

Paradigmas de Comunicacin IPC Invocacin Remota Comunicacin Indirecta Comunicaciones en Grupo Publish-Subscribe Message queues DSM

Message passing RPC Sockets Multicast RMI

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

ClientClient -Server
Es la arquitectura ms citada cuando se habla sobre SD. Histricamente es la ms importante y sigue siendo la ms empleada. Los procesos asumen el rol de cliente o servidor. Los procesos clientes interactan con procesos servidores solicitando el acceso a los recursos compartidos que ellos manejan

Clientes invocando a Servidores

Cliente

Invocacin

Invocacin

Servidor

Resultado

Servidor

Resultado

Cliente Leyenda: Proceso: Computador:

Los procesos Cliente interactan con procesos servidores alojados en otras computadoras con el objeto de acceder a los datos o recursos. 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

Tipos de Arquitectura ClientClient-Server


Two-tier model (classic)

client

server

Three-tier (when the server, becomes a client)

client

Server/client

server

Multi-tier (cascade model)


server

client

Server/client

Server/client

server

Clientes and Servidores


Interaccin tpica entre un cliente y un servidor

PeerPeer -toto-Peer
En esta arquitectura todos los procesos involucrados en una tarea o actividad juegan roles similares, interactuando cooperativamente como pares sin ninguna distincin entre procesos clientes y servidores. Esta arquitectura presenta algunas ventajas como:
Es ms confiable porque no existe un punto central de falla ni un punto central de control A medida que se agregan participantes, la capacidad del sistema aumenta

Ejemplos: Gnutella, Napster, Kaza, BitTorrent etc.

Peer Processes: Aplicacin 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.

Colocacin (Placement)
El placement es crucial para determinar las propiedades de un Sistema Distribuido. En general se lo asocia a la performance, pero tambin involucra aspectos tales como confiabilidad y seguridad. El placement debe ser determinado en base a un slido conocimiento de la aplicacin, y unas pocas directrices generales para obtener una solucin ptima. Estrategias de Placement:
Mapeo de Servicios en Mltiples Servidores Cacheo Cdigo Mvil Agentes Mviles

Servicio provisto por Mltiples Servidores


Service Server Client

Server

Client Server
Services may be implemented as several server processes in separate host computers. Example: Cluster based Web servers and apps such as Google, parallel databases Oracle

Web Proxy Servers


Client Proxy server Web server

Client

Web server

Un cache es un almacenamiento de datos recientemente usados

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, so the browser gives applets limited access to local resources (e.g. NO access to local/user file system).

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, usually on behalf of some other process advantages: flexibility, savings in communications cost virtual markets, software maintain on the computers within an organisation. Potential security threat to the resources in computers they visit. The environment receiving agent should decide which of the local resource to allow. (e.g., crawlers and web servers). Agents themselves can be vulnerable they may not be able to complete task if they are refused access.

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. Thin clients: Windows-based UI on the user machine and application execution on a remote computer. E.g, X-11 system.

You might also like