disenio de sistemas distribuidos
DESCRIPTION
Diseño de Sistemas DistribuidosTRANSCRIPT
Clase 10
Diseño de Sistemas Distribuidos
1
Conocer las diferentes tecnologías de comunicación para con los sistemas distribuidos
Conocer las consideraciones al diseñar sistemas distribuidos
2
Introducción
Sistemas Distribuidos ◦ Tecnologías de comunicación
◦ Diseño de los Sistemas Distribuidos
Arquitectura orientada a servicios
3
Evolución
50’s – 70’s : Una computadora múltiples usuarios
80’s – 90’s : Una computadora un usuario
2000’s : Un usuario múltiples computadoras
Actualmente la información es totalmente distribuida, aunque los datos centralizados se siguen utilizando.
4
Procesamiento distribuido La distribución del cómputo puede realizarse de
diversas formas de acuerdo a su grado de acoplamiento en:
Fuertemente acopladas: Multiprocesadores (memoria compartida). UMA (Uniform Memory Access)
Débilmente acopladas: Multicomputadoras (memoria privada). NUMA (Non Uniform Memory Access).
5
Sistemas Multiprocesadores
6
Sistemas Multicomputadoras Están basados en el modelo cliente/servidor
Este modelo se basa en un protocolo solicitud – respuesta. El cliente envía una solicitud de cierto servicio al servidor, el servidor realiza el trabajo y regresa el resultado de la operación.
La principal ventaja de este protocolo es su sencillez, únicamente se necesita
la ubicación del servidor.
7
Sistemas Multicomputadoras
8
Peer to Peer Es una red de computadoras en la que todos o
algunos aspectos funcionan sin clientes ni servidores fijos, sino una serie de nodos que se comportan como iguales entre sí:
9
Grid Computing Llamamos grid al sistema de computación distribuido
que permite compartir recursos no centrados geográficamente para resolver problemas de gran escala. Los recursos compartidos pueden ser ordenadores (PC, estaciones de trabajo, supercomputadores, portátiles, móviles, etc.), software, datos e información, instrumentos especiales (radio, telescopios, etc.) o personas.
10
Cluster El término cluster se aplica a los conjuntos o
conglomerados de computadoras construidos mediante la utilización de hardware comunes y que se comportan como si fuesen una única computadora
11
Es aquel que se ejecuta como un sistema centralizado, pero que realmente se ejecuta sobre múltiples e independientes CPU, haciéndolo de una forma “transparente” para los usuarios
12
Características Múltiples elementos de procesamiento
Mecanismos de intercomunicación
Independencia a fallos en los nodos de procesamiento
Estado de compartición
Esquema de protección
Sistemas Abiertos
Plataforma diversas (heterogéneas)
13
Ventajas Compartir información y otros recursos
Economizar el rendimiento (procesamiento y almacenamiento)
Crecimiento incremental
Alta disponibilidad
Confiabilidad (tolerancia a fallos)
14
Tecnologías de comunicación RPC (Remote Procedure Call)
Es una comunicación entre procesos que permite que un programa ejecute una subrutina o procedimiento en otro espacio de direcciones (comúnmente en otro ordenador en una red compartida) sin que el programador codifique explícitamente los detalles de esta interacción remota.
15
Tecnologías de comunicación Sockets
Elemento final de un flujo de comunicación entre procesos sobre la red.
Los sistemas operativos proporcionan una API para sockets, que es una interfaz de programación de aplicaciones, que permite a los programas controlar y usar los sockets de red.
Una dirección de socket es la combinación de una dirección IP y un número de puerto.
16
Tecnologías de comunicación Comunicación de bajo nivel de red:
17
Tecnologías de comunicación RMI (Remote Method Invocation)
Es un mecanismo ofrecido por Java para invocar un método de manera remota. 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. Es orientado a objetos.
18
Tecnologías de comunicación CORBA
(Common Object Request Broker Architecture)
Es una arquitectura marco para el desarrollo de aplicaciones distribuidas orientadas a objetos basada en unas especificaciones para las interface de los objetos utilizados.
Utiliza un intermediario ORB (Object Request Broker)
19
Tecnologías de comunicación COM/DCOM
COM (Component Object Model) y DCOM (Distributed Component Objetc Model) definen la arquitectura distribuida orientada a componentes de Microsoft. A grandes rasgos su funcionamiento y objetivos son similares a los de CORBA.
No implementa herencia, sino que usa un modelo de reutilización de los objetos antiguos incorporándolos dentro de los nuevos.
20
Tecnologías de comunicación EJB (Enterprise JavaBeans) Es una arquitectura de componentes del lado del
servidor para la construcción modular de aplicaciones empresariales Java.
La especificación EJB proporciona una forma estándar para ejecutar el código de back-end de las aplicaciones (en lugar de código de interfaz de 'front-end'). Orientados a manejar las preocupaciones comunes como la persistencia, la integridad de las transacciones y la seguridad de los componentes.
21
Tecnologías de comunicación Componentes: DCOM vs EJB
22
Tecnologías de comunicación SOAP (Simple Object Access Protocol)
Es un protocolo para el intercambio de información estructurada en la implementación de servicios web. Se basa en XML para el formato del mensaje, y por lo general se basa en otros protocolos de capa de aplicación, sobre todo de transferencia de hipertexto (HTTP) para la negociación y transmisión del mensaje.
23
Tecnologías de comunicación REST (Representational State Transfer)
Estilo de arquitectura de software para sistemas distribuidos con servicios web.
Las solicitudes y las respuestas se construyen alrededor de la transferencia de las representaciones de los recursos. Un recurso puede ser prácticamente cualquier elemento con significado. Una representación de un recurso suele ser un documento que recoge el estado actual o previsto del recurso.
24
Tecnologías de comunicación Servicios Web: SOAP vs REST
25
Tecnologías de comunicación Middleware Los componentes en un sistema distribuido pueden
implementarse en distintos lenguajes de programación y ejecutarse en tipos de procesador diferentes por completo. Por lo tanto un sistema distribuido requiere software que pueda gestionar esas diversas partes y garantizar que puedan comunicarse e intercambiar datos.
El término se usa para referirse a este software: se encuentra en el centro, entre los componentes distribuidos del sistema
26
Tecnologías de comunicación Middleware ◦ Soporte de interacción
◦ Soporte de provisión de servicios comunes
27
Conflictos Transparencia ◦ ¿En qué medida el sistema distribuido debe aparecer al usuario
como un solo sistema? ¿Cuándo es útil para los usuarios entender que el sistema es distribuido?
Apertura ◦ ¿Un sistema debe diseñarse usando protocolos estándar que
soporte interoperabilidad o deben usarse protocolos más especializados que restrinjan la libertad del diseñador?
Escalabilidad ◦ ¿Cómo puede construirse el sistema para que sea escalable?
¿Esto es cómo podría diseñarse un sistema global para que su capacidad se pueda aumentar en respuesta a demandas crecientes hechas sobre el sistema?
28
Conflictos Seguridad ◦ ¿Cómo pueden definirse e implementarse políticas de
seguridad útiles que se apliquen a través de un conjunto de sistemas administrados de manera independientes?
Calidad de servicio ◦ ¿Cómo debe especificarse la calidad del servicio que se entrega
a los usuarios del sistema y cómo debe implementarse el sistema para entregar una calidad de servicio aceptable para todos los usuarios?
Gestión de fallas ◦ ¿Cómo pueden detectarse las fallas del sistema, contenerse (de
modo que tengan efectos mínimos sobre otros componentes del sistema) y repararse?
29
Arquitectura maestro-esclavo Que se usa en sistemas de tiempo real en los que se
requiere garantía de tiempos de respuesta de interacción
Existe una dependencia funcional y técnica del cliente
30
Arquitectura cliente-servidor 2 niveles Se usa para sistemas cliente servidor simple, y en
situaciones donde es importante centralizar el sistema por razones de seguridad. En algunos casos la comunicación del cliente y el servidor está encriptado
31
Arquitectura cliente-servidor multinivel Se usa cuando existe un enorme volumen de
transacciones a procesar por el servidor
32
Arquitectura de componentes distribuidos Se usa cuando es necesario combinar los recursos
de diferentes sistemas y base de datos, o como un modelo de implementación para sistemas cliente-servidor multinivel
Ejemplo: CORBA
33
Arquitectura peer to peer Se usa cuando los clientes intercambian de manera
local la información almacenada, y el papel del servidor es presentar a los clientes entre sí. También puede usarse cuando se deba elaborar un amplio número de cálculos independientes
34
Servicio Es un componente de software que entrega
funcionalidad específica y útil, y es independiente a la aplicación que lo usa.
Permite el acceso a una o más capacidades, que son proporcionadas mediante una interfaz definida y se ejecuta acorde con las restricciones y políticas especificadas en la descripción del servicio.
35
Servicio Un intermediario es opcional para ubicar los servicios
El proveedor y el consumidor mantienen un contrato de servicio
36
SOA (Service Oriented Architecture) Es una forma de desarrollar sistemas distribuidos en
la que los componentes del sistema son servicios independientes y generalmente se ejecutan en computadoras distribuidas geográficamente
Implementan recursos de software disponibles y visibles en una red como servicios bien definidos. Cada servicio debe resolver un objetivo de negocio predefinido y ejecutarse como una unidad de trabajo separada
37
SOA Bajo acoplamiento y alta cohesión:
38
El procesamiento de cómputo distribuido puede estar fuertemente acoplado (multiprocesadores) o débilmente acoplado (multicomputadores)
Un Sistemas Distribuido es aquel que se ejecuta como un sistema centralizado, pero que realmente se ejecuta sobre múltiples e independientes CPU, haciéndolo de una forma “transparente” para los usuarios
Hay diferentes tecnologías de comunicación para los SD: no orientadas a objetos, orientadas a objetos, orientadas a componentes y orientadas a servicios web
Para el diseño de sistemas distribuidos existen conflictos que debe ser comprendidos y previstos 39
¿Qué tipo de tecnologías para la comunicación de sistemas distribuidos conoce?
40