• No se han encontrado resultados

Sistemas Distribuidos

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Distribuidos"

Copied!
47
0
0

Texto completo

(1)

Sistemas Distribuidos

Sesión 1 – Introducción a los Sistemas Distribuidos

Diego Sevilla Ruiz

DITEC Facultad de Informática

(2)

Índice

Sistemas Distribuidos: Introducción y Conceptos Sistemas Distribuidos: Arquitecturas

Sistemas Cloud

Sistemas Operativos Distribuidos

(3)

Sistemas Distribuidos (enfoque clásico)

Un sistema distribuido es aquel en el que los componentes localizados en computadores, conectados en red, comunican y coordinan sus acciones únicamente mediante el paso de mensajes. [Colouris, p.1].

Concurrencia de los componentes Carencia de un reloj global Fallos independientes

(4)

Sistemas Distribuidos (actualmente)

Uso ubícuo de Internet (y de sus protocolos) Sistemas abiertos

La consistencia fuerte sólo se necesita en algunos casos En la mayoría de los casos, se puede tolerar una “consistencia eventual” (W. Vogels.Eventually Consistent. ACM Queue vol. 6, no. 6, December 2008.)1

Uso ubícuo de cachés, sistemas aboertos, protocolos estándar (HTTP) homogeneización de datos y procesamiento, Map/Reduce, paralelismo funcional, automático, REST, etc.

(5)

Sistemas Distribuidos: Retos

Heterogeneidad Redes Hardware Sistemas Operativos Middleware Extensibilidad Seguridad Escalabilidad Tratamiento de Fallos Concurrencia Transparencia

(6)

Sistemas Distribuidos: Heterogeneidad

Hardware, Sistema Operativo, lenguajes, Redes Razones:

Ingeniería – Diferentes personas eligen diferentes soluciones Coste – Se compran recursos que se adapten a las necesidades Aplicaciones antiguas – Imaginemos una aplicación de reserva de billetes en COBOL. Se tienen que amortizar las inversiones Hardware antiguo – El hardware nuevo que se compra es necesariamente diferente.

(7)

Sistemas Distribuidos: Heterogeneidad (ii)

Herramientas:

Protocolos de comunicación APIs estándar (Middleware)

Sistemas Abiertos (i.e. CORBA, Internet, etc.) Especificaciones públicas

Mecanismos de comunicación estandarizados Utilizando hardware y software COTS

(8)

Sistemas Distribuidos: Extensibilidad

Característica de un sistema que permite añadirle nuevas características y servicios de forma dinámica

Herramientas:

Sistemas Abiertos Loose Coupling

(9)

Sistemas Distribuidos: Seguridad

Elemento más importante y más complejo (conexiones y equipos físicamente distribuidos)

Necesidad de:

Autenticar a usuarios y recursos Definir roles y patrones de acceso Encriptar las comunicaciones Seguridad física

Herramientas:

PKIs, SSL, Servicios de Directorio, Proxys anonimizadores, funciones dehash, etc.

(10)

Sistemas Distribuidos: Escalabilidad

Un sistema es escalable si el aumento de demanda de servicios se puede suplir con una aportación de recursos

También: Un sistema puede ofrecer servicio a un número

potencialmente muy grande de demandas: degrada el tiempo medio de respuesta, pero no se colapsa

Prever el desbordamiento de recursos tanto software como hardware Evitar cuellos de botella de prestaciones

Soluciones:

Uso de software eficiente en tiempo y espacio

Patrones de diseño y de código (idiomas) para manejar eficientemente conexiones, threads, etc.

Uso de cachés, consistencia eventual, etc.

Uso de algoritmos altamente paralelizables (programación funcional, lógica, algoritmos Map/Reduce), etc.

(11)

Sistemas Distribuidos: Fallos

El rango de fallos en sistemas distribuidos es mayor que en cualquier otro sistema

Además, es interesante que los sistemas distribuidos «toleren» fallos.¿Por qué?

Cuestiones:

Detección de fallos (unos detectables, otros no) Enmascaramiento de fallos (p. ej. patrónProxy) Redundancia y votado

Disponibilidad

Idempotentibilidad

(12)

Sistemas Distribuidos: Concurrencia

Normalmente los datos se comparten

Hay que establecer órdenes de acceso y procesos atómicos:

Transacciones

Cuello de botella si los datos están almacenados en un sólo ordenador

Necesidad de transacciones distribuidas Problemas de consistencia

A veces se necesitan coordinar varios procesos de varios

ordenadores (barreras). La mala programación de estos procesos puede hacer el sistema muy ineficiente

(13)

Sistemas Distribuidos: Transparencia

El tópico más importante y el más difícil de conseguir

Con transparencia, el desarrollo de aplicaciones distribuidas es similar al de aplicaciones convencionales

Delega en los niveles inferiores la complejidad y ofrece servicios fiables:

Transparencia de localización Transparencia de concurrencia Transparencia de replicación Transparencia ante fallos Transparencia . . .

(14)

Arquitecturas – Sistemas Centralizados

No escalables

(15)

Arquitecturas – Primeros sistemas distribuidos

Primeros programas distribuidos

Conexiones explícitas, protocolos explícitos, herramientas básicas P. ej. Demonios remotos UNIX

(16)

Arquitecturas – Primeros sistemas distribuidos (ii)

Servicios básicos por parte del Sistema Operativo Direccionamiento

Sockets

(17)

Arquitecturas – Internet/World Wide Web/CGI

Nivel 1 HTTP Internet TCP/IP HTTP Nivel 2 Nivel 3 P´aginas HTML Prog. CGI Servidor HTTP Browser SGBD Servidor SMTP

(18)

Arquitecturas – Internet/World Wide Web/CGI (ii)

Sockets

API de bajo nivel ¿Gestión de errores?

No hay tipos de datos... ¿comprobación? Protocolo CGIad-hoc

Stateless (salvo con otros hackscomo los cookies)

El servidor no da soporte para persistencia (bases de datos), transacciones, seguridad, gestión de usuarios, etc.

Lasaplicacionestienen que implementarTODO, o usarframeworks etc.

(19)

Arquitecturas – 2 y 3 niveles

Cliente

Presentaci´on L´ogica del negocio

Acceso a datos Servidor Servidores BD Sistemas Legacy etc. Nivel 1 Nivel 2 Cliente Presentaci´on

L´ogica del negocio Acceso a datos

Servidor

Servidores BD Sistemas Legacy

etc.

(20)

TPMs, Clusters, etc.

En la práctica, se utilizan sistemas de n capas

La distribución: múltiples clientes por Web (thin clients) y un sistema de BBDD que está basado en clúster

Clústers de bases de datos/procedimientos proporcionados por paquetes comerciales (Oracle, DB/2, etc.)

(21)

Sistemas de más alto nivel: RPC

Primer sistema en diferenciar interfaz/implementación Más alto nivel (comprobación de tipos)

Interfaz (lista de operaciones) Stubs/Skeletons El interfaz se describe en C

El compilador de RPC genera los stubs y los skeletons El programador realiza llamadas locales

Los stubs y skeletons realizan el trabajo remoto TRANSPARENCIA LOCAL/REMOTA

Ejemplo: SUN RPC

(22)
(23)

Objetos Distribuidos: CORBA/RMI

Muy parecido a RPC, pero basado en objetos El middleware ahora toma más importancia

(24)

Message-Oriented Middleware

Síncrono/asíncrono

Normalmente Suscripción/Respuesta Documentos XML Mensajes Loose Coupling

(25)
(26)

D-Bus (ii)

1 M e s s a g e m e s s a g e = new M e s s a g e (" / r e m o t e / o b j e c t / p a t h ", " M e t h o d N a m e ", arg1 , a r g 2 ) ; 3 C o n n e c t i o n c o n n e c t i o n = g e t B u s C o n n e c t i o n () ; c o n n e c t i o n . s e n d ( m e s s a g e ) ; 5 M e s s a g e r e p l y = c o n n e c t i o n . w a i t F o r R e p l y ( m e s s a g e ) ; if ( r e p l y . i s E r r o r () ) { 7 // ... } e l s e { 9 O b j e c t r e t u r n V a l u e = r e p l y . g e t R e t u r n V a l u e () ; }

(27)

D-Bus (iii)

$ dbus - m o n i t o r 2 m e t h o d ca l l s e n d e r = : 1 . 7 5 1 - > d e s t = org . g n o m e . G C o n f s e r i a l =2 p a t h =/ org / g n o m e / G C o n f ; i n t e r f a c e = org . g n o m e . G C o n f ; m e m b e r = G e t I O R m e t h o d r e t u r n s e n d e r = : 1 . 4 - > d e s t = : 1 . 7 5 1 r e p l y _ s e r i a l =2 4 s t r i n g " IOR : 0 1 . . . " s i g n a l s e n d e r = org . f r e e d e s k t o p . D B u s - > d e s t =( nu l l d e s t i n a t i o n ) s e r i a l = 1 2 1 8 p a t h =/ org / f r e e d e s k t o p / D B u s ; i n t e r f a c e = org . f r e e d e s k t o p . D B u s ; m e m b e r = N a m e O w n e r C h a n g e d 6 s t r i n g " : 1 . 7 5 1 " s t r i n g " : 1 . 7 5 1 "

(28)

Peer to Peer

Modelo más descentralizado: todos aportan por igual o en la medida de sus posibilidades

(29)

Web Services/SOA

Todo se hace accesible a través de servicios (web) Protocolos «estándar»: HTTP, XML, SOAP, WSDL ¿Qué pasa con los callbacks?

(30)
(31)

REST (ii)

Patrón arquitectural de desarrollo de aplicaciones sobre el Web Desarrollado por Roy T. Fielding en su tesis doctoral

Aprovecha el web tal y como está

El web ha sido escalable hasta ahora por tener una serie de requisitos: se aplicarán a REST

Identificación de recursos

Todos los elementos accedidos remotamente tienen una identificación (URI). Se elige una representación para cada recurso (XML, YAML)

Manipulación de recursos

Hay operaciones para crear, modificar y borrar (CRUD) recursos

Mensajes auto-descriptivos

Los recursos incluyenmetadatos(cache, validez, MIME). Incluidos en losheadersde HTTP

Los metadatos permiten tratar el mensaje

Tejido hypermedia como representación del estado de la aplicación (HATEOAS)

(32)

Componentes: CCM/EJB

Componentes: Entidades redistribuibles binarias ejecutadas en un entorno de ejecución (run-time)

Modelo contenedor

Unidades independientes de construcción de programas Unidades binarias de desarrollo, prueba y ensamblado Soporte run-time que permite instalar componentes

El entorno de ejecución (run-time) ofrece todos los servicios a los componentes instalados

Seguridad, transacciones, persistencia, etc.

(33)
(34)

Modelos de Componentes Distribuidos

Los componentes se encuentran distribuidos Diferentes organizaciones ofrecen componentes

Bien para descargar

Bien para utilizarlos remotamente bajo pago

Necesidad de un entorno seguro, autenticado... p. ej. Grid Transparencia local/remota

(35)
(36)
(37)
(38)

Sistemas Operativos Distribuidos

Sistemas Distribuidosversus Sistemas Operativos Distribuidos? Polémica hace unos años

Principales diferencias:

Heterogeneidad (hw, so., etc.)

Sistema débilmente acoplado vs. Sistema fuertemente acoplado Inmaduros en su comienzo

Ahora sería el momento de avanzar en la dirección GNU/Hurd

CODA

(39)

Introducción a los Patrones y Herramientas

Patrones

Solución dada reiteradamente a un problema común «Best practices»

Suben el nivel de abstracción, tratan problemas en abstracto En programación distribuida poca experiencia

Los utilizaremos para aprender sobre cómo construir mejores aplicaciones distribuidas

Elementos:

Nombre, Contexto, Problema, Cuestiones relevantes, Solución

Lenguaje de Patrones: Conjunto de patrones relacionados que sirven para un fin común (POSA2)

(40)

Introducción a los Patrones y Herramientas (ii)

Idioms

Patrones, pero de más bajo nivel

Asociados a un lenguaje, normalmente C++ No por ello menos importantes

Importantísimos por ejemplo en elmappingde C++ a CORBA Ejemplo: «Scoped Locking»

C++ Idioms: James O. Coplien

(41)

Introducción a los Patrones y Herramientas (iii)

Scoped Locking (POSA2, p. 325) (Resource Acquisition is Initialization)

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int función(...) { pthread_mutex_lock(&mutex); if (condición) { // lo que sea pthread_mutex_unlock(&mutex); return 1; } pthread_mutex_unlock(&mutex); return 0; }

(42)

Introducción a los Patrones y Herramientas (iv)

(43)

Introducción a los Patrones y Herramientas (v)

Scoped Locking (cont.)

class SyncLock { public: SyncLock(pthread_mutex_t* m) { mutex_ = m; pthread_mutex_lock( mutex_ ); } ~SyncLock() { pthread_mutex_unlock( mutex_ ); } private: pthread_mutex_t* mutex_; }

(44)

Introducción a los Patrones y Herramientas (vi)

Scoped Locking (cont.) – RAII http://www.hackcraft.net/raii/ pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int función(...) { SyncLock sl(&mutex); if (condición) { // lo que sea return 1; } return 0; }

(45)
(46)

Modelos

(47)

Modelos (ii)

SyncLock

Referencias

Documento similar

Estos sistemas se denominan sistemas de Video bajo Demanda de gran escala (LVoD) y deben satisfacer los siguientes requisitos: elevada escalabilidad para el sistema (que

Sin embargo, esto no era posible en los sistemas de orden total, donde la coordinación de los procesos de un grupo con su router y la coordinación entre los routers de los pares

Esta asignatura abarca los sistemas en tiempo real aplicadas a entornos industriales, incluyendo la programación en Java y tecnologías para buses de campo y procesamiento

Después se ha realizado el proceso de integración general tanto de manera ponderada como sin ponderar sobre las hiperalertas obtenidas de los tres métodos de

Entre ellas, generar datos de diferentes proyectos de manera sencilla, generar visualizaciones de genes individuales categorizados por una o dos variables, generar gráficos de

Los  Sistemas  en  Tiempo  Real  (STR)  generalmente  se  implantan  en  computadoras  digitales  con 

Este grupo no solo ha desarrollado sistemas para Linux, sino que además para casi todos los sistemas operativos existentes y que son las más utilizadas, como: Solaris,

abstracción de recursos, donde cada petición HTTP contiene toda la información necesaria para responder a la petición, sin necesidad de que el cliente ni el servidor