Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int...

65
Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 1 Introducción a los sistemas distribuidos Roberto Gómez Cárdenas h //h i / Dr. Roberto Gómez Cárdenas Lámina 1 http://homepage.cem.itesm.mx/rogomez [email protected] Hacer Con-ciencia Alguien pidió una explicación de la teoría de Einstein. El profesor Alguien pidió una explicación de la teoría de Einstein. El profesor con mucho gusto le habló de tensores y con mucho gusto le habló de tensores y geódesicas geódesicas tetradimensionales tetradimensionales. No he entendido una solo palabra No he entendido una solo palabra dijó dijó el estudiante estupefacto el estudiante estupefacto - No he entendido una solo palabra No he entendido una solo palabra - dijó dijó el estudiante estupefacto. el estudiante estupefacto. El profesor reflexionó un momento, y con menos entusiasmo le da una El profesor reflexionó un momento, y con menos entusiasmo le da una explicación menos técnica, conservando algunas explicación menos técnica, conservando algunas geódesicas geódesicas, pero , pero haciendo intervenir aviadores y disparos de revolver. haciendo intervenir aviadores y disparos de revolver. Ya entiendo casi todo Ya entiendo casi todo - dijo el estudiante con bastante alegría dijo el estudiante con bastante alegría - pero pero hay algo que casi no entiendo, esas geodésicas, esas coordenadas … hay algo que casi no entiendo, esas geodésicas, esas coordenadas … Dr. Roberto Gómez Cárdenas Lámina 2 2 De De primido primido, el profesor piensa un largo rato y se dedica exclusivamente a , el profesor piensa un largo rato y se dedica exclusivamente a aviadores que fuman mientras viajan a la velocidad de la luz, jefes de estación aviadores que fuman mientras viajan a la velocidad de la luz, jefes de estación que disparan un revólver con la mano derecha y verifican tiempos en un que disparan un revólver con la mano derecha y verifican tiempos en un cronómetro que tienen en la mano izquierda, trenes y campanas. cronómetro que tienen en la mano izquierda, trenes y campanas. - Ahora sí entiendo la relatividad Ahora sí entiendo la relatividad - exclamó el estudiante con alegría. exclamó el estudiante con alegría. - Sí - le le respondio respondio amargamente el profesor, amargamente el profesor, - pero ahora ya NO ES la relatividad pero ahora ya NO ES la relatividad

Transcript of Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int...

Page 1: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 1

Introducción a los sistemas distribuidos

Roberto Gómez Cárdenash //h i /

Dr. Roberto Gómez CárdenasLámina 1

http://homepage.cem.itesm.mx/[email protected]

Hacer Con-ciencia

Alguien pidió una explicación de la teoría de Einstein. El profesorAlguien pidió una explicación de la teoría de Einstein. El profesorcon mucho gusto le habló de tensores y con mucho gusto le habló de tensores y geódesicasgeódesicas tetradimensionalestetradimensionales..

No he entendido una solo palabraNo he entendido una solo palabra dijódijó el estudiante estupefactoel estudiante estupefacto-- No he entendido una solo palabraNo he entendido una solo palabra -- dijódijó el estudiante estupefacto.el estudiante estupefacto.

El profesor reflexionó un momento, y con menos entusiasmo le da unaEl profesor reflexionó un momento, y con menos entusiasmo le da unaexplicación menos técnica, conservando algunas explicación menos técnica, conservando algunas geódesicasgeódesicas, pero, perohaciendo intervenir aviadores y disparos de revolver.haciendo intervenir aviadores y disparos de revolver.

Ya entiendo casi todoYa entiendo casi todo -- dijo el estudiante con bastante alegría dijo el estudiante con bastante alegría -- pero pero hay algo que casi no entiendo, esas geodésicas, esas coordenadas …hay algo que casi no entiendo, esas geodésicas, esas coordenadas …

Dr. Roberto Gómez CárdenasLámina 2 2

De De primidoprimido, el profesor piensa un largo rato y se dedica exclusivamente a , el profesor piensa un largo rato y se dedica exclusivamente a aviadores que fuman mientras viajan a la velocidad de la luz, jefes de estaciónaviadores que fuman mientras viajan a la velocidad de la luz, jefes de estaciónque disparan un revólver con la mano derecha y verifican tiempos en unque disparan un revólver con la mano derecha y verifican tiempos en uncronómetro que tienen en la mano izquierda, trenes y campanas.cronómetro que tienen en la mano izquierda, trenes y campanas.

-- Ahora sí entiendo la relatividadAhora sí entiendo la relatividad -- exclamó el estudiante con alegría.exclamó el estudiante con alegría.-- Sí Sí -- le le respondiorespondio amargamente el profesor, amargamente el profesor, -- pero ahora ya NO ES la relatividadpero ahora ya NO ES la relatividad

Page 2: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 2

Desarrollos conceptuales1960s 1970s 1980s

Id

experiencia requerimientos experiencia requerimientosCiclos

Tiempo Compartido

Gráficas

Redes

Computadoras como

herramientaspersonales

Estaciones detrabajo

Cliente/Servidor

Redes Locales

Sistemasabiertos,

escalables,tolerantes

a fallas

Ideasclave

Dr. Roberto Gómez CárdenasLámina 3

Redes

Institucionespilares

Xerox AltoLisp machineApple IISmalltalkAloha net

MIT CTSSCambridge TSSTenex, UnixSketchpadARPANET

Xerox DoradoSun 1, Apollo DomainXerox: DFS, GrapevineBerkeley UnixNewcastle ConnectionCambridge DCSEthernet, Cambridge Ring

Sistema V - StanfordSun NFSMIT: X-11, ArgusCMU: Accent, AndrewMachAmoebaChrous

Dr. Roberto Gómez CárdenasLámina 4

Page 3: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 3

Antecedentes

• Dos grandes avances tecnológicos en los 80’s– Desarrollo de microprocesadores– Desarrollo de microprocesadores

• De una máquina de 10 millones de dólares que ejecuta una instrucción por minuto, se pasa a máquinas de 1000 dólares que ejecutan 10 millones de instrucciones por seg..

– Invención de redes• Posibilidad de conectar uno o más computadoras entre sí

– Pequeña observación:

Dr. Roberto Gómez CárdenasLámina 5

Pequeña observación:• Roll Royce de 100 dólares con un billón de kilómetros por litro• Tamaño manual para abrir puerta: 200 pgs.

¿Qué es un sistema distribuido?

Una colección de dispositivos independientes que es vista

como un solo sistema independiente

Dr. Roberto Gómez CárdenasLámina 6

Page 4: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 4

Objetivos de un sistema distribuido

• Recursos accesiblesT i• Transparencia

• Apertura• Escalabilidad

Dr. Roberto Gómez CárdenasLámina 7

Recursos computacionales

Dr. Roberto Gómez CárdenasLámina 8

Page 5: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 5

Hay de recursos, a recursos

Dr. Roberto Gómez CárdenasLámina 9

Dr. Roberto Gómez CárdenasLámina 10

Page 6: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 6

Transparencia

Esconder el hecho de que los procesos y los recursos se encuentran

físicamente distribuidos entre varios dispositivos

Dr. Roberto Gómez CárdenasLámina 11

Tipos de transparencia

Transparencia DescripciónAcceso Esconder diferencias en la representación de datos y como el

didrecurso es accedidoUbicación Esconder el lugar donde se encuentra un recursoMigración Esconder que un recurso pudo moverse a otra ubicaciónReubicación Esconder que un recurso puede moverse a otra ubicación

mientras se encuentre en usoReplicación Esconder que un recurso es replicado.Concurrencia Esconder que un recurso puede ser compartido por varios

Dr. Roberto Gómez CárdenasLámina 12

q p p pusuarios

Falla Esconder y recuperarse de la falla de un recurso

Page 7: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 7

Apertura

Sistema que ofrece servicios de acuerdo a reglas estandarizadas

que describen la sintaxis y que describen la sintaxis y semánticas de dichos servicios.

Dr. Roberto Gómez CárdenasLámina 13

Objetivo apertura

• Que sea posible intercambiar componentes de software y hardware, p ydando a un usuario mayor posibilidad de escoger productos de acuerdo a sus necesidades y fomentando la competencia entre proveedores, que deben mejorar sus servicios para ganar clientes (ciudadanos).

• Es la plataforma adecuada para el

Dr. Roberto Gómez CárdenasLámina 14

desarrollo de aplicaciones distribuidas, porque se pueden combinar las ventajas de diferentes máquinas y sistemas operacionales.

Page 8: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 8

Los IDL

• En sistemas distribuidos los servicios generalmente son especificados a través degeneralmente son especificados a través de interfaces, que son descritas a través de una Interface Definition Language.

• Las IDLs solo capturan la sintaxis de los servicios.

Dr. Roberto Gómez CárdenasLámina 15

• Especifican los nombres y funciones, tipos de parámetros, valores de regreso y excepciones que se pueden alcanzar, que se encuentran disponibles.

Ejemplo IDL en CORBA

Estructura dedatos

Excepción

Dr. Roberto Gómez CárdenasLámina 16

Interfaz

Page 9: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 9

Características interfaces

• Completas• Neutrales• Extensibles

• Interoperabilidad• Portabilidad

Dr. Roberto Gómez CárdenasLámina 17

Escalabilidad

Capacidad del sistema para t i jmantener, si no mejorar, su

rendimiento medio conforme aumenta o disminuye el número de

clientes o recursos.

Dr. Roberto Gómez CárdenasLámina 18

Page 10: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 10

Dimensiones de escalamiento

• Con respecto al tamaño– Añadir más usuarios y recursos al

sistema

Desafortunadamente un sistema que escala en cualquiera de estas

dimensiones casi siempre exhibe l d d l d sistema.

• Con respecto a la geografía– Usuarios y recursos pueden

encontrarse separadas por una gran distancia geográfica.

• Con respecto a su

alguna perdida en el desempeño cuando el sistema escala hacia arriba.

Dr. Roberto Gómez CárdenasLámina 19

Con respecto a su administración– Puede continuar a ser fácil de

administrar aún si este atraviesa diferentes organizaciones administrativas independientes.

Escalamiento horizontal y vertical

Dr. Roberto Gómez CárdenasLámina 20

Page 11: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 11

Escalamiento horizontal y vertical

Dr. Roberto Gómez CárdenasLámina 21

Ejemplos de limitantes escalabilidad en el tamaño en sistemas centralizados

Concepto Problema EjemploServicios centralizados

Cuello de botella Un solo servidor para todos los usuarios.

Datos Capacidad de los medios de Un solo directorio telefónico

Dr. Roberto Gómez CárdenasLámina 22

centralizados almacenamiento y saturación de las líneas de comunicación

para todos los usuarios.

Algoritmos centralizados

Transporte de toda la información de entrada y salida.

Llevar a cabo ruteo basadoen información completa.

Page 12: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 12

Características algoritmos distribuidos

• Ausencia de un estado global perceptible por un observadorun observador.

• Los elementos del sistema distribuido hacen decisiones basados en su información local.

• La falla en una máquina no acaba con el algoritmo.

Dr. Roberto Gómez CárdenasLámina 23

algoritmo.• No se asume la existencia de un reloj global.• Comunicación en base a mensajes

Problemas de escalar en la dimensión geográfica

• El problema de escalar de sistemas distribuidos que fueron diseñados para redes LAN es que estánfueron diseñados para redes LAN es que están basados en comunicación síncrona: cliente bloqueado hasta que la respuesta llega– Distancia pequeña entre las máquinas que se comunican:

respuesta entregada en microsegundos.– Distancia más grande: respuesta en milisegundos

Dr. Roberto Gómez CárdenasLámina 24

• Comunicación en redes LAN es confiable y de tipo broadcast– Localizar un servicio a nivel LAN es diferente que a

nivel Internet

Page 13: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 13

Problemas escalamiento dimensión administración

• Manejo de conflictos en la políticas de los diferentes dominios con respecto a uso de recursos (y pago)dominios con respecto a uso de recursos (y pago), administración y seguridad.

• Si un sistema distribuido se expande en otro domino, se cuenta con dos tipos de medidas de seguridad a tomar en cuenta– Sistema distribuido se tiene que proteger de ataques del

Dr. Roberto Gómez CárdenasLámina 25

Sistema distribuido se tiene que proteger de ataques del nuevo dominio.

– El nuevo dominio se tiene que proteger de ataques del sistema distribuido

Técnicas de escalamiento

• Existen tres técnicas

1. Esconder las latencias de la comunicación

2. Distribución

Dr. Roberto Gómez CárdenasLámina 26

3. Replicación

Page 14: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 14

Escondiendo las latencias

• Intentar evitar la espera de respuestas a peticiones remotas de serviciospeticiones remotas de servicios.

• Una alternativa: uso de comunicaciones asíncronas.

• Otra alternativa: reducción de la comunicación entre las dos partes, pasándole

Dr. Roberto Gómez CárdenasLámina 27

comunicación entre las dos partes, pasándole trabajo al cliente. – Ejemplo: acceder bases de datos usando formas.

Verificación de llenado formas en el cliente o en el servidor

Dr. Roberto Gómez CárdenasLámina 28

Page 15: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 15

Distribución

• Tomar un componente, dividirlo en pequeñas partes y después esparcir estas partes a través de todo ely después esparcir estas partes a través de todo el sistema.

• Ejemplo1: DNS– Espacio nombres organizado jerárquicamente en un

árbol de dominios, los cuales se dividen en zonas– Nombres en cada zona son manejadas por un servidor

Dr. Roberto Gómez CárdenasLámina 29

j p

• Ejemplo 2: WWW– Varios usuarios lo ven como un sistema de información

único, donde cada documento tiene su propio nombre en forma de URL

Ejemplo DNS

• Encontrando el nombre: nl.vu.cs.flits– Primero se busca en Z1, que regresa servidor de Z2…Primero se busca en Z1, que regresa servidor de Z2…

Dr. Roberto Gómez CárdenasLámina 30

Page 16: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 16

Replicar

• Replicar componentes a través del sistema distribuidodistribuido.

• Incrementa disponibilidad y ayuda en el balanceo de cargas entre componentes para un mejor desempeño.

• Dos puntos a tomar en cuenta

Dr. Roberto Gómez CárdenasLámina 31

Dos puntos a tomar en cuenta– Cache: forma especial de replicación– Consistencia: todas las replicas deben contar con

el mismo contenido.

Distribución vs Replicación

• DistribuciónP bt l t t lid d d l i f ió– Para obtener la totalidad de la información se tiene que consultar a todo el mundo

• Replicación– Asegurar la coherencia mutua de las copias a

I = (x1 + x2 + ... xi ... + xn)

Dr. Roberto Gómez CárdenasLámina 32

g ptodo instante las copias físicas xi tengan el mismo valor x

x1 = x2 = ... xi ... = xn = x

Page 17: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 17

Ejemplo distribución

x1 x2

Pierre 500 Sam 500

Dr. Roberto Gómez CárdenasLámina 33

x3

Juan 900

Ejemplo replicación

Pi 500

x1x2

Pierre 500Sam 700Juan 900

Pierre 500Sam 700Juan 900

Dr. Roberto Gómez CárdenasLámina 34

x3

Pierre 500Sam 700Juan 900

Page 18: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 18

Errores comunes de falsas presunciones

• La red es confiableL d• La red es segura

• La red es homogenea• La topología no cambia• La latencia es cero

Dr. Roberto Gómez CárdenasLámina 35

• El ancho de banda es infinito• El costo del transporte es cero• Solo hay un administrador.

Tipos de sistemas distribuidos

Sistemas distribuidosd t

Cluster computing

Supercomputadoras

Grid computing

Sistemas Distribuidos

de computo

Sistemas distribuidosde información

Grid computing

Computo cooperativo

Sistemas de procesamiento de transacciones

EAI: Enterprise Application Integration

Dr. Roberto Gómez CárdenasLámina 36

Sistemas distribuidosubicuos

Computo en la nube

Sistemas caseros

Sistemas de cuidado de la salud

Redes de sensores

Page 19: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 19

Sistemas distribuidos de computo

• Usados para tareas de computo de alto desempeñodesempeño.

• En esta categoría se pueden mencionar:– Supercomputadoras– Cluster computing– Grid computing

Dr. Roberto Gómez CárdenasLámina 37

Grid computing– Computo cooperativo

¿De que se trata?

• El objetivo es solucionar un problema proporcionando pequeñas partes del problema a varias unidades de cálculo para solucionarlos y después combinar las soluciones parciales para encontrar una solución del problema.

Dr. Roberto Gómez CárdenasLámina 38

Page 20: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 20

Computo distribuido vs supercomputadora

• Supercomputadora C j t d d f t t– Conjunto de procesadores fuertemente acoplados.

– Soporte de algoritmos inter-procesadores.– Generalmente con un propósito en específico.– Alto costo

Dr. Roberto Gómez CárdenasLámina 39

• Computo distribuidos– Acoplamiento débil– Costo variable– Diferentes opciones en software

Lista de supercomputadoras más rápidas

Dr. Roberto Gómez CárdenasLámina 40

Page 21: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 21

Los clusters

• Conjunto de recursos de hardware reunidos para llevar ahardware reunidos para llevar a cabo una tarea en común.

• Características– Mejor rendimiento.– Disponibilidad.

Dr. Roberto Gómez CárdenasLámina 41

p– Menor costo a una

supercomputadora.– Alta disponibilidad

Ejemplo arquitectura de un sistema cluster

Aplicación deadministración

Librería funcionesparalelas

Sistema OperativoLocal

Red de acceso remoto Red alta velocidad

Red estándar

Nodo Maestro

Dr. Roberto Gómez CárdenasLámina 42

Sistema OperativoLocal

Componente aplicación paralela

Sistema OperativoLocal

Componente aplicación paralela

Sistema OperativoLocal

Componente aplicación paralela

Nodo Computadora Nodo Computadora Nodo Computadora

Page 22: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 22

Diferencia clusters vs supercomputadoras

• EscalamientoDi ibilid d• Disponibilidad

• Administración sistema

Dr. Roberto Gómez CárdenasLámina 43

Un perroUn conjunto de perrosUn perro multícabezas

Grid computing

• Grid es un una infraestructura de software yhardware para coordinar el proceso de compartirp p precursos y resolver problemas en organizacionesvirtuales dinámicas.

Dr. Roberto Gómez CárdenasLámina 44

Page 23: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 23

Capas de la arquitectura de un sistema grid

Aplicaciones

Capa Colectiva

Capa Conectividad Capa Recursos

Dr. Roberto Gómez CárdenasLámina 45

Capa Fabricante

Computo voluntario

• Cómputo en el cual la gente (voluntarios) otorgan recursos computacionales a uno o varios proyectosrecursos computacionales a uno o varios proyectos. – Computo Distribuido.– Medio de almacenamiento.

• Características:– Los voluntarios son miembros del público general que

Dr. Roberto Gómez CárdenasLámina 46

Los voluntarios son miembros del público general que tienes su computadora conectada a Internet.

– Los proyectos generalmente son de tipo académico y de investigación científica (SETI@home, LHC@home, etc).

Page 24: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 24

¿Y cuál es el problema?

• ¿Cómo los comunico?Có l i i ?• ¿Cómo los sincronizo?

• No todos los algoritmos se pueden paralelizar.

Dr. Roberto Gómez CárdenasLámina 47

Paralelización de instrucciones básicas

• Ejemplo: la formula del “chicharronero”X= ( b + (b ^ 2 4 * a * c) ^ 0 5) / ( 2 * a )X= (- b + (b ^ 2 - 4 * a * c) ^ 0.5) / ( 2 * a )

(1) t1 := b ^ 2(2) t2 := 4 * a(3) t2 := t2 * c(4) t1 := t1 - t2 (5) t1 := t1 ^ 0 5

(1) t1 := -b (2) t2 := b ^ 2(3) t3 := 4 * a(4) t4 := 2 * a(5) t5 := t3 * c

Dr. Roberto Gómez CárdenasLámina 48

(5) t1 := t1 0.5(6) t1 := -b + t1(7) t2 := 2 * a (8) t1 := t1 / t2

( )(6) t5 := t2 - t5(7) t5 := t5 ^ 0.5(8) t5 := t1 + t5(9) t5 := t5 / t4

Page 25: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 25

Gráfica dependencia

t1:= -b

t2:= b^2 t3:=4 * a

Dr. Roberto Gómez CárdenasLámina 49

t4:=2*at5 := t3 * c

t5 := t2 - t5

t5 := t5 ^0.5t5 := t1 + t5

t5 := t5 / t4

Paralelismo implicito vs explicito

Programador Programador

Compiladorparalelizador

Programa fuente escrito enlenguaje secuencial C, fortran

Lisp o Pascal

Código fuente escrito en versión paralela de C, fortran

Lisp o Pascal

Compilador

lism

o Im

plíci

to

lism

o E

xplíc

ito

Dr. Roberto Gómez CárdenasLámina 50

Código objetoparalelo

Ejecución

Código objetoparalelo

Ejecución

Para

leli

Para

lel

Page 26: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 26

Desarrollo aplicaciones distribuidas

• Memoria compartidaP d j• Paso de mensajes

• RPC• Objetos distribuidos

– Paso de mensajesRMI

Dr. Roberto Gómez CárdenasLámina 51

– RMI

Memoria compartida

• No es el caso de sistemas distribuidos, aplica a lo que es computadoras paralelasa lo que es computadoras paralelas.

• Procesadores comparten una zona de memoria.

• Comunicación y sincronización se llevan a cabo a través de esta zona.

Dr. Roberto Gómez CárdenasLámina 52

cabo a través de esta zona.

Page 27: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 27

Paso mensajes

• Procesadores se envían mensajes entre ellos.• Una opción: sockets• Una opción: sockets

Dr. Roberto Gómez CárdenasLámina 53

RPC

• Enmascarar el envío mensajes• Cliente llama función definida en servidor• Cliente llama función definida en servidor

Dr. Roberto Gómez CárdenasLámina 54

Page 28: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 28

Vayamos más arriba

• PVMP ll l Vi t l M hi– Parallel Virtual Machine

• MPI– Message Passing Interface

Dr. Roberto Gómez CárdenasLámina 55

PVM

• Parallel Virtual Machine• Herramienta que permite crear aplicacionesHerramienta que permite crear aplicaciones

paralelas y distribuidas. • Funciona sobre una colección heterogénea de

computadoras corriendo Unix en una o más redes. • Comunicación: paradigma de paso de mensajes.• Se basa en el concepto de Máquina Paralela Virtual

Dr. Roberto Gómez CárdenasLámina 56

p q• La portabilidad prima sobre la potencia• Tolerancia a fallas• 1989 Oak Ridge National Laboratory• http://www.csm.ornl.gov/pvm/

Page 29: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 29

Esquema general PVM

“Ejecución de aplicaciones paralelas distribuidas en ordenadores heterogéneos”

maestro

esclavo1 esclavo3esclavo2 esclavo4

• libpvm3.a:d

Dr. Roberto Gómez CárdenasLámina 57Cada uno con su dirIP

M E1 E2 E3 E4pvm_send,pvm_recv,-------------

Hello Word: Maestro

#include <stdio.h>#include <stdlib.h>#include "pvm3.h"int main (int argc, char* argv[] ){

int i, mytid, *tids, nprocs;nprocs=atoi(argv[1]); if(nprocs<1)nprocs=1;

mytid=pvm_mytid();tids=malloc(sizeof(int)*nprocs);i=pvm spawn("hello worker" (char**)0

Dr. Roberto Gómez CárdenasLámina 58

i=pvm_spawn( hello_worker ,(char )0, PvmTaskDefault,"",nprocs,tids);

printf("hello, world! My id is %x \n",mytid);pvm_exit();free(tids);return 0;

}

Page 30: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 30

Hello Word: esclavo

#include <stdio.h>#include "pvm3.h"

int main(int argc, int argv[]){int mytid;char buff[100];mytid=pvm_mytid();gethostname(buff 100);

Dr. Roberto Gómez CárdenasLámina 59

gethostname(buff,100);printf("Hello world from %s!

My id is %x\n",buff,mytid);pvm_exit();return 0;

}

MPI

• Message Passing Inferface• Data de 1993Data de 1993• Diseñado para un desempeño alto tanto en máquinas paralelas como

en clusters de estaciones de trabajo.• La especificación detalla las funciones que se pueden utilizar, no el

modo como se compilan y lanzan-ejecutan los programas, lo cual puede variar de una implementación a otra.Si i d l d l SPMD l i ibi á li ió

Dr. Roberto Gómez CárdenasLámina 60

• Siguiendo el modelo SPMD, el usuario escribirá su aplicación como un proceso secuencial del que se lanzarán varias instancias que cooperan entre sí.

• http://www.mcs.anl.gov/research/projects/mpi/

Page 31: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 31

Ejemplo MPI: Hello world

#include <stdio.h>#include <mpi.h>#include <mpi.h>

int main (int argc, char *argv[ ]){

int rank, size,

MPI_Init (&argc, &argv); /* starts MPI */ MPI_Comm_rank (MPI_COMM_WORLD, &rank);

i ( i )

Dr. Roberto Gómez CárdenasLámina 61

MPI_Comm_size (MPI_COMM_WORLD, &size); printf( "Hello world from process %d of %d\n",

rank, size );MPI_Finalize();return 0;

}

Plataformas de desarrollo

• Plataformas de desarrollo de aplicaciones distribuidasdistribuidas.

• Varias de ellas son de código abierto.• Varían en el sistema operativo y los

lenguajes que soportan.

Dr. Roberto Gómez CárdenasLámina 62

Page 32: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 32

Alchemi

• Reposa sobre .NET• Instalación simple basada en instaladores windows• Instalación simple basada en instaladores windows.• Máquinas puede estar en una LAN o en Internet.• Máquinas puede encontrarse detrás de firewalls o

servidores NAT• Solo tiempo muerto de CPU de las máquinas en la

id d l li i d l i

Dr. Roberto Gómez CárdenasLámina 63

grid es usado, las aplicaciones de los usuairos no son afectadas.

• Modelo de programación orientado a objetos• http://www.gridbus.org/~alchemi/

H2O

• Plataforma middleware para construir y desarrollar aplicaciones distribuidasaplicaciones distribuidas.

• Basada en Java• Componentes pueden comunicarse via RMI

(síncronos y asíncronos) y un modelo de publicación/subscripción.

• Posible seleccionar entre diferentes protocolos de

Dr. Roberto Gómez CárdenasLámina 64

• Posible seleccionar entre diferentes protocolos de mensajería– JRMP, SOAP, RPC

• http://harness2.org

Page 33: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 33

Lenguajes grid

• El desarrollo de aplicaciones grid esta basado en el uso de toolkits y API’s quebasado en el uso de toolkits y API s que permiten integrar funcionalidad distribuida a un programa en otro lenguaje de programación como Java, C o alguna de la plataforma .NET.

Dr. Roberto Gómez CárdenasLámina 65

• Estos API’s encapsulan funcionalidad como llamadas al sistema y envío de trabajado a los nodos y los proporcionan como métodos o bindings.

Simple Grid Protocol

• Es un paquete freeware de computo grid.• Permite a los usuarios en una red TCP/IP o en• Permite a los usuarios en una red TCP/IP o en

Internet ejecutar programas en su computadora que utiliza recursos de computadoras inactivas en la red o Internet.– Programas compuestos de tareas locales y portables

• Desarrollado y mantenido por Brendan Kosowski

Dr. Roberto Gómez CárdenasLámina 66

• Desarrollado y mantenido por Brendan Kosowski.• Basado en CLISP (Common LISP)• Plataformas Linux & BSD• http://grid.bmk.com.au/

Page 34: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 34

Globus toolkit

• Toolkit de open source usado para construir gridscomputacionalescomputacionales.

• Las herramientas cubren mediciones de seguridad, localización de recursos, manejo de recursos, comunicaciones y más.

• Desarrollado y proporcionado por Globus Alliance.• Incluye varios estándares

Dr. Roberto Gómez CárdenasLámina 67

• Incluye varios estándares– OGSA, OGSI, WSRF, JSDL, DRMAA, GSI, etc

• Programación en Java y XML• http://www.globus.org/toolkit/

Comodity Grid (CoG) Kits

• Permite a usuarios Grid, desarrolladores de aplicaciones Grid y administradores de Grid utilizar, programar yGrid y administradores de Grid utilizar, programar y administrar Grids desde un marco de nivel alto.

• Proporciona un mapeo entre Java y el Globus Toolkit, extendiendo el usro de Globus al permitir el uso de características avanzadas de Java para programación Grid.

Dr. Roberto Gómez CárdenasLámina 68

• Se cuenta con herramientas automáticas para soportar código Fortran como objetos Phyton

• Soporta Java y Python.• http://wiki.cogkit.org/wiki/Main_Page

Page 35: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 35

BOINC

• Berkeley Open Infrastructure for Network Computing• Permite la computación distribuida aprovechando laPermite la computación distribuida aprovechando la

capacidad de computo no utilizada por los usuarios de computadoras personales.

• Desarrollado inicialmente para soportar el proyecto SETI@home.

• Arquitectura: Cliente-Servidor conectados con RPC

Dr. Roberto Gómez CárdenasLámina 69

• Arquitectura: Cliente-Servidor, conectados con RPC• Plataformas: Mac, Windows o Linux• Estadísticas uso: http://www.allprojectstats.com/• http://boinc.berkeley.edu/

Sistemas distribuidos de información

• Organizaciones confrontadas con una gran variedad de aplicaciones de red, pero para lasvariedad de aplicaciones de red, pero para las cuales resulta muy difícil inter-operar.

• Integración aplicaciones bajo dos enfoques:– Servidores corriendo aplicaciones accesibles a

programas remotos conocidos como clientes. V i li li dif i i d f

Dr. Roberto Gómez CárdenasLámina 70

• Varios clientes realizan diferentes peticiones de forma concurrente

• Transacciones distribuidas

– Permitir que las aplicaciones se comuniquen entre ellas de forma directa: EAI

Page 36: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 36

Sistemas procesamiento transacciones

• Aplicaciones Bases de Datos• Sistemas que usan transacciones requieren q q

primitivas especiales que deben ser proporcionadas por el sistema distribuido o por el lenguaje.

• Ejemplos primitivas

Primitiva DescripciónBEGIN TRANSACTION Marcar el inicio de una transacción

Dr. Roberto Gómez CárdenasLámina 71

BEGIN_TRANSACTION Marcar el inicio de una transacciónEND_TRANSACTION Terminar transacción e intentar completar estaABORT_TRANSACTION Matar la transacción y restablecer los antiguos

valoresREAD Leer datos de un archivo, o tablaWRITE Escribir datos a un archivo o tabla

Propiedades transacciones: ACID

• Atomicidad– Desde el punto de vista externo la transacción es indivisible.

• Consistencia– Una transacción T transforma un estado consistente de la base de datos en

otro estado consistente, aunque T no tiene por qué preservar la consistencia en todos los puntos intermedios de su ejecución.

• Aisladas (Isolated)– Transacciones concurrentes no deben interferir entre ellas.

l li i d d i b l i

Dr. Roberto Gómez CárdenasLámina 72

– Asegura que la realización de dos transacciones sobre la misma información sean independientes y no generen ningún tipo de error.

• Durables– Una vez que la transacción es completada (commits), los cambios son

permanentes.– Ninguna falla después de completada puede deshacer los resultados.

Page 37: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 37

Transacciones anidadas

• Construidas a partir de un número de sub-transacciones.

• Transacción de alto nivel puede crear hijos que corren en paralelo uno con otro en máquinas diferentes, para ganar desempeño o simplificar programación.

• Detalle a cuidar– Transacción empieza sub-transacciones.

Dr. Roberto Gómez CárdenasLámina 73

p– Una sub-transacción completa y se lo hace notar al padre.– El padre aborta, re-estableciendo el sistema a un estado

anterior al del inicio de la transacción.– Los resultados de la sub-transacción nunca serán deshechos.

Ejemplo transacción anidada

Substransacción Substransacción

Transacción anidada

Begin_transaction Reservación

Base datos aerolínea Base datos hotel

Dos bases de datos diferentes (independientes)

. . .

Begin_transaction Vuelo

. . .

end. {Vuelo}

. . .

Begin_transaction Hotel

Dr. Roberto Gómez CárdenasLámina 74

. . .

end.

. . .

end

Page 38: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 38

Transaction Processing Monitor

• También conocido como TP monitor.• Su tarea principal es permitir que una aplicación acceda p p p q p

a múltiples servidores/bases de datos, proporcionando un modelo de programación transaccional.

Peticiones

Servidor

P ti ió

Petición

Respuesta

Dr. Roberto Gómez CárdenasLámina 75

Aplicación del cliente

Monitor TP

Respuesta

Servidor

Servidor

Petición

Respuesta

Petición

Respuesta

Transacciones distribuidas

• Transacción es distribuida entre n procesos• Cada proceso debe decidir si completa (commit) o p p ( )

aborta la transacción• Una transacción debe completar en todos los sitios

o abortar en todos los sitios.

Dr. Roberto Gómez CárdenasLámina 76

Page 39: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 39

Ejemplo

• Transferencia dinero de un banco A a un banco Bbanco B

• Debitar en A, acreditar en B y decirle al cliente que todo es correcto.

• Necesario que ambos lo hagan o que ninguno lo haga.

Dr. Roberto Gómez CárdenasLámina 77

lo haga.• Nunca que solo uno lo haga.

– Preferible dejar todo como estaba antes, como si nada hubiera pasado.

Una implementación “naïve”

• ComponentesCli t B A B B di d d– Cliente, Banco A, Banco B y coordinador de transacciones TC

• Cliente envía petición transacción a TC.• TC informa a A y B que lleven a cabo

operaciones de debito y crédito

Dr. Roberto Gómez CárdenasLámina 78

p y• A y B responde “ok” a TC• TC responde “ok” a cliente.

Page 40: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 40

¿Qué puede salir mal?

• No hay suficiente dinero en la cuenta de AL l b B i• La cuenta en el banco B ya no existe o es incorrecta.

• La comunicación a B se rompe.• A o B crash

TC h t l í d j

Dr. Roberto Gómez CárdenasLámina 79

• TC crash entre el envío de mensajes.

¿Qué se desea?

• Si A completa, que B no aborte.Si A b B l• Si A aborta, que B no complete.

• A o B decidirán entre abortar o completar.

Dr. Roberto Gómez CárdenasLámina 80

Page 41: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 41

Propiedades de un “completado” atómico

1. Todos los participantes involucrados en la decisión alcanzan la misma decisióndecisión alcanzan la misma decisión.

2. Si cualquier participante decide completar, entonces todos los participantes deben votar SI.

3. Si todos los participantes votan SI y no ninguna falla ocurre, entonces todos los participantes deciden completar

Dr. Roberto Gómez CárdenasLámina 81

deciden completar4. Cada participante decide una sola vez (una

decisión no es reversible).

Two-Phase Commit Protocol(2PC)

• Protocolo distribuido que permite a todos los nodos de un sistema distribuido ponerse denodos de un sistema distribuido ponerse de acuerdo para completar o abortar una transacción.

• Elementos protocolo– Uno de los procesos actúa como coordinador– Los otros se conocen como cohorts

Dr. Roberto Gómez CárdenasLámina 82

• Las dos fases del protocolo son– Fase de petición de completar– Fase de completar

Page 42: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 42

Fase 1: Petición de completar

1. El coordinador envía un mensaje consulta para commit a todos los participantes.

2. Los participantes ejecutan la transacción hasta el punto donde ellos serán preguntados para realizar commit. – Pueden escribir una entrada a su log undo (log de deshacer)

y una entrada a su log redo(log de rehacer).3 C d i i d j d i

Dr. Roberto Gómez CárdenasLámina 83

3. Cada participante responde con un mensaje acuerdo si la transacción tuvo éxito, o un mensaje abortar si falló la transacción.

4. El Coordinador espera hasta que tenga un mensaje de cada participante.

Fase 1 del 2PC

Dr. Roberto Gómez CárdenasLámina 84

Page 43: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 43

Fase 2: completar (éxito)

• Coordinador recibió un mensaje acuerdo de todos los participantes durante la fase de petición de commit:1. El coordinador envía un mensaje commit a todos los

participantes.2. Cada participante completa la operación, y libera todos

los bloqueos y recursos mantenidos durante la transacción.

3 Cada participante envía un reconocimiento(ack) al

Dr. Roberto Gómez CárdenasLámina 85

3. Cada participante envía un reconocimiento(ack) al coordinador.

4. El coordinador completa la transacción cuando ha recibido todos los reconocimientos.

Fase 2 completar (fracaso)

• Si algún participante envió un mensaje abortar durante la fase de petición de commit:durante la fase de petición de commit:1. El coordinador envía un mensaje rollback a todos los

participantes.2. Cada participante deshace la transacción usando el log

undo (log de deshacer), y libera los recursos y bloqueos mantenidos durante la transacción.

3 C d i i í i i ( k) l

Dr. Roberto Gómez CárdenasLámina 86

3. Cada participante envía un reconocimiento (ack) al coordinador.

4. El Coordinador completa la transacción cuando han sido recibidos los reconocimientos

Page 44: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 44

Fase 2 del 2PC

Dr. Roberto Gómez CárdenasLámina 87

Enterprise Application Integration

• A medida que las aplicaciones son separadas de las bases de datos más evidente se hace lade las bases de datos, más evidente se hace la necesidad de facilidades para integrar aplicaciones independiente de sus bases de datos.

• Los componentes de las aplicaciones deben

Dr. Roberto Gómez CárdenasLámina 88

p ppoder comunicarse entre ellos y no necesariamente a través del modelo de petición/respuesta.

Page 45: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 45

Middleware

Capa de software intermedio entre dos entidades. Es la capa de software que nos

permiten gestionar los mecanismos de comunicaciones.

Dr. Roberto Gómez CárdenasLámina 89

Middleware como sistema distribuido

Computadora 1 Computadora 2 Computadora 3 Computadora 4

Aplicación A Aplicación C

Capa del sistema distribuido (middleware)

Aplicación B

Dr. Roberto Gómez CárdenasLámina 90

S.O. local 1 S.O. local 2 S.O. local 3 S.O. local 4

p ( )

Red

Page 46: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 46

Middleware de comunicación

Aplicación del

cliente

Aplicación del

clientecliente

Middleware de comunicación

Aplicación del l d d l

Aplicación del l d d l

Aplicación del l d d l

cliente

Dr. Roberto Gómez CárdenasLámina 91

lado delservidor

lado delservidor

lado delservidor

Opciones middleware de comunicación

• Necesidad de comunicación entre aplicaciones lleva a diferentes modelos de middleware delleva a diferentes modelos de middleware de comunicación.– RPC

• Remote Procedure Call– RMI

Remote Method In ocation

Dr. Roberto Gómez CárdenasLámina 92

• Remote Method Invocation– Message Oriented Middleware (MOM)

• Aplicaciones envían mensajes a los puntos de contacto• Mensajes descritos por un subject.• Sistemas de tipo publish/subscribe

Page 47: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 47

El modelo Publish/Subscribe

Dr. Roberto Gómez CárdenasLámina 93

El modelo Point-to-Point

• Modelo de mensajería tradicional

Dr. Roberto Gómez CárdenasLámina 94

Page 48: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 48

Sistemas distribuidos ubicuos

• Dispositivos móviles y empotrados • Pequeños con batería móviles y que cuenten con• Pequeños, con batería, móviles y que cuenten con

una conexión inalámbrica.• Este tipo de sistemas son parte del ambiente que

nos rodea.• En algunos casos los dispositivos pueden ser

configuradas por sus dueños pero de otra forma

Dr. Roberto Gómez CárdenasLámina 95

configuradas por sus dueños, pero de otra forma ellos necesitan descubrir su ambiente e introducirse en él lo mejor posible.

Requerimientos

• Percibir cambios contextuales– Dispositivo debe estar consciente de que el ambiente puede cambiar.– Por ejemplo: red no disponible en el caso de un usuario que se mueve

entre estaciones

• Fomentar la configuración ad-hoc– Varios dispositivos serán usados de diferentes formas por diferentes

usuarios.– Facilidad para configurar las aplicaciones que corren en el dispositivo

de forma automática o por el usuario

Dr. Roberto Gómez CárdenasLámina 96

de forma automática o por el usuario.

• Reconocer el compartir información como default– Dispositivos se integran a la red para acceder o proporcionar

información.– Contar con los medios para leer, escribir, almacenar, administrar y

compartir información.

Page 49: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 49

Ejemplos redes ubicuoas

• Sistemas caseros.

• Sistemas de cuidado de la salud.

• Redes de sensores.

Dr. Roberto Gómez CárdenasLámina 97

Sistemas caseros

• Una o más computadoras personales TVs equipospersonales, TVs, equipos de audio y video, dispositivos de juego, teléfonos, PDAs.

• Algunos retos

Dr. Roberto Gómez CárdenasLámina 98

g– Auto administración– Auto configuración– Espacios personales

Page 50: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 50

Home Entertainment Network

Dr. Roberto Gómez CárdenasLámina 99

Auto config. y auto admon: Estándar UPnP

• UPnP: Universal Plug and PlayDi i i b i d f á i• Dispositivos obtienen de forma automática direcciones IP, pueden descubrirse entre ellos, etc.

• A resolver:– ¿Cómo se puede actualizar el firmware y software

Dr. Roberto Gómez CárdenasLámina 100

¿Cómo se puede actualizar el firmware y software de los dispositivos sin intervención manual?

– ¿Cómo asegurarse de que la actualización no interfiere con la compatibilidad con otros dispositivos?

Page 51: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 51

Espacios personales

• Sistemas caseros consisten de dispositivos compartidos y personalescompartidos y personales.

• Datos en estos sistemas cuentan con restricciones para compartirse.

• Ejemplo– Parte del espacio personal de Alicia puede consistir de su

agenda fotos familiares un diario música y videos etc

Dr. Roberto Gómez CárdenasLámina 101

agenda, fotos familiares, un diario, música y videos, etc.– Esto debe almacenarse de tal forma que sean accesibles

para cuando ella lo considere apropiado.– Parte de este espacio personal puede ser temporalmente

accesible a otros, p.e. agenda para citas.

Sistema electrónicos de cuidado de salud

• Sistemas relacionados con el cuidado de la salud de las personas.

• Dispositivos para monitorear la salud de las personas y solicitar ayuda de forma automática en caso necesario.

• Dispositivos con sensores organizados dentro de una BAN (Body Area Network)

• El sistema debe estorbar lo menos posible al usuario.

Dr. Roberto Gómez CárdenasLámina 102

El sistema debe estorbar lo menos posible al usuario.• El sistema debe funcionar mientras la persona se

mueve sin cables atados a dispositivos no móviles.

Page 52: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 52

Arquitecturas

1. Un hub central es parte de la red BAN y colecta los datos conforme se necesitancolecta los datos conforme se necesitan.

– De tiempo en tiempo los datos son enviados a un dispositivo de almacenamiento más grande

2. La BAN esta “atada” a una red externa, a

Dr. Roberto Gómez CárdenasLámina 103

,través de una conexión wireless, que recibe los datos de los sensores.

Esquema de las dos arquitecturas

Red del área del cuerpo Red del área del cuerpo

Sensor Tilt

PDA

Sensoresmovimiento

SensorECG

GPRS/UMTS

Dr. Roberto Gómez CárdenasLámina 104

Transmisormovimiento

AlmacenamientoexternoTilt Sensor: Sensor de inclinación

ECG Sensor: Sensor electrocardiograma

Page 53: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 53

Aspectos a tomar en cuenta

• ¿Dónde y como se va a almacenar los datos de monitoreo?

• ¿Cómo se puede prevenir perdida de datos cruciales?• ¿Qué infraestructura es necesaria para generar y

propagar alertas?• ¿Cómo se puede proporcionar retroalimentación en

línea?

Dr. Roberto Gómez CárdenasLámina 105

línea?• ¿Cómo se puede garantizar la robustez del sistema de

monitoreo?• ¿Cuáles son los aspectos de seguridad a considerar y

como se pueden definir las políticas correctas?

Redes de sensores

• Consiste de decenas a centenas o miles de nodos pequeños con un dispositivo sensorial.

• La mayor parte de los dispositivos usan comunicación inalámbrica y los nodos usan baterías.

Dr. Roberto Gómez CárdenasLámina 106

• Limitación en recursos, capacidad de comunicación y energía hacen que la eficiencia sea un punto clave a tomar en cuanta en su diseño.

Page 54: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 54

Redes sensoriales y sistemas distribuidos

• Redes sensoriales pueden ser vistas como una base datos distribuidascomo una base datos distribuidas– Redes usadas para medir y supervisar

aplicaciones. – Operador extrae información de la

red, o parte de esta, a través de queries• Operaciones de agregación

Dr. Roberto Gómez CárdenasLámina 107

– Una operación de agregación calcula un valor único a partir de una colección de valores.

– Redes sensores: aggregation queries

Sistemas SCADA

• Supervisory Control and Data Acquisition

• Consisten primordialmente de cinco componentes principales: – una computadora maestra, – una terminal remota, – periféricos para la comunicación,

Dr. Roberto Gómez CárdenasLámina 108

– software de aplicación y – trasductores.

Page 55: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 55

Organización redes sensoriales

• Para organizar una red de sensores como una base de datos distribuida existen dos formasbase de datos distribuida, existen dos formas de hacerlo:– Sensores no llevan a cabo ningún cálculo, solo

envían información a una base de datos centralizada ubicada en el sitio del operador.

Dr. Roberto Gómez CárdenasLámina 109

– Sensores envían información a sensores relevantes, estos calculan una respuesta y el operador agrega las respuestas recibidas.

Esquema organización redes de sensores

Sitio del Operador

Red de Sensores

Datos del sensor sonenviados directamenteal operador

Red de Sensores

Dr. Roberto Gómez CárdenasLámina 110

Sitio del Operador

Los sensores soloenvían respuestas

Petición

Cada sensor puede procesar y almacenar datos

Page 56: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 56

Desventajas arquitecturas

• La primera arquitectura requiere envío información a través de la red con elinformación a través de la red, con el desperdicio de recursos y energía de la red.

• En la segunda, los sensores relevantes aportaran menos información.

Dr. Roberto Gómez CárdenasLámina 111

aportaran menos información.

• Solución: In-network data processing.

In-network data processing

• Procesamiento puede hacerse de varias formashacerse de varias formas.– Enviar query a todos los

procesadores a través de un árbol que abarque todos los nodos y cuya raíz sea el iniciador

Dr. Roberto Gómez CárdenasLámina 112

iniciador.– Agregaciones se hacen

donde dos o más ramas de un árbol se unen.

Page 57: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 57

Arquitecturas vs In-network data processing

Dr. Roberto Gómez CárdenasLámina 113

Problemas in-network data processing

• ¿Cómo se configura (dinámicamente) un árbol eficiente en una red sensorial?árbol eficiente en una red sensorial?

• ¿Cómo se lleva a cabo la agregación de resultados?– ¿Puede ser contralada?

Dr. Roberto Gómez CárdenasLámina 114

¿Puede ser contralada?

• ¿Qué pasa si el enlace de red falla?

Page 58: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 58

Tiny DB

• Interface de base de datos declarativa para redes de sensores inalámbricas.p– Interfaz tipo SQL

• Nodo intermediario colecta y agrega los resultados de sus hijos, junto con lo que ha recolectado y lo envía a la raíz.

• Para dar eficiencia, los queries abarcan un periodo de tiempo que permite la

Dr. Roberto Gómez CárdenasLámina 115

u pe odo de t e po que pe te acalendarización de operaciones, de tal forma que los recursos de red y energía sean aprovechados de forma óptima.

• ¿Queries iniciados en diferentes puntos?

Computo en la nube

Cloud computing

Dr. Roberto Gómez CárdenasLámina 116

Page 59: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 59

Cloud computing

• Computación en nube• Definición NIST (Draft del 6 1 09)• Definición NIST (Draft del 6-1-09)

– Es un modelo para habilitar acceso a un conjunto de recursos informáticos configurables (p.e. redes, servidores, almacenamiento, aplicaciones y servicios) que puede ser aprovisionados y liberados rápidamente con un mínimo esfuerzo o interacción con el proveedor de servicio

Dr. Roberto Gómez CárdenasLámina 117

de servicio.• La nube debe promover disponibilidad y esta

compuesta de cinco características esenciales, tres modelos de entrega y cuatro modelos de implantación.

Características esenciales

• On demand self-serviceUbi i k• Ubiquitous network access

• Location independent resource pooling• Rapid elasticity• Measured Service

Dr. Roberto Gómez CárdenasLámina 118

Page 60: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 60

On-demand self-service

• Consumidor puede unilateralmente aprovisionarse de recursos computacionales, como tiempo de servicio y almacenamiento en red, de forma automática conforme lo necesite sin requerir interacción humana con cada proveedor de servicio

Dr. Roberto Gómez CárdenasLámina 119

servicio.• El consumidor pay-as-you-go y

solo usa lo que necesita, todo manejado por un browser, una aplicación o un API

Acceso ubíquo a la red

• Los recursos se encuentran disponiblesencuentran disponibles en la red y son accedidos a través de mecanismos que promueven el uso de

l t f

Dr. Roberto Gómez CárdenasLámina 120

plataformas hetereogeneassimples.

Page 61: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 61

Poleo de recursos independiente de su ubicación

• El proveedor de recursos usa un modelo de atención concurrente, con diferentes recursos físicos y virtuales dinámicamente asignados y reasignados de acuerdo a la demanda del consumidor.

• Consumidor no controla o no l bi ió t d l

Dr. Roberto Gómez CárdenasLámina 121

conoce la ubicación exacta de los recursos proporcionados, pero puede especificar una ubiuación en un nivel de abstracción alto (país, estado o datacenter).

Elasticidad rápida

• Los recursos son provistos rápida y elásticamente pararápida y elásticamente para escalar de forma inmediata tanto hacia arriba como hacia abajo.

• Para el consumidor, los di ibl

Dr. Roberto Gómez CárdenasLámina 122

recursos disponibles para su uso aparecen como infinitos y pueden ser adquiridos en cualquier cantidad y tiempo.

Page 62: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 62

Servicio a la medida

• De forma automática se controlan y optimizan los recursos locales

d f id dusados recursos ofrecidos de acuerdo al tipo de servicio (p.e.almacenamiento, procesamiento, ancho de banda y cuentas activas usuarios).

• El uso de los recursos puede ser

Dr. Roberto Gómez CárdenasLámina 123

• El uso de los recursos puede ser monitoreado, controlado y reportado proporcionando transparencia del recurso consumido tanto para el proveedor como para el consumidor .

Modelos de entrega

• Cloud Software as a Service (SaaS). – Uso de aplicaciones corriendo en la nube, accesibles desde

varios clientes a través de interfaces “delgadas”.

• Cloud Platform as a Service (PaaS). – Desarrollar dentro de la nube aplicaciones usando lenguajes

de programación y herramientas soportadas por el proveedor.• Cloud Infrastructure as a Service (IaaS).

Dr. Roberto Gómez CárdenasLámina 124

– Proporciona procesamiento, almacenamiento, redes y otros recursos computacionales donde el consumidor ´puede desarrollar y correr cualquier software.

Page 63: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 63

Modelos de implementación

• Nube privada– La nube es operado solo para una organización.– Puede ser manejada por la misma organización o un

tercero.

• Nube comunitaria– La nube es compartida por varias organizaciones y

soporta a una comunidad específica que tiene intereses comunes (p e misión requerimientos de seguridad

Dr. Roberto Gómez CárdenasLámina 125

comunes (p.e. misión, requerimientos de seguridad, políticas y consideraciones de compliance).

– Puede ser manejada por la misma organización o un tercero.

Modelos de implementación

• Nube pública– Disponible a todo el público y o a un grupo industrial

grande y es propiedad de una organización que vende servicios de nube.

• Nube híbrida.– La infraestructura de la nube esta compuesta por dos o

más nubes (privada, comunitaria o pública) que permanecen como entidades únicas pero que son unidos

Dr. Roberto Gómez CárdenasLámina 126

permanecen como entidades únicas pero que son unidos por tecnología estandarizada o propietaria que habilita la portabilidad de datos y aplicaciones (p.e. cloud bursting).

Page 64: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 64

Diferencia entre modelo tradicional y el computación en nube

Dr. Roberto Gómez CárdenasLámina 127

Ejemplos computación en la nube

Dr. Roberto Gómez CárdenasLámina 128

Page 65: Introducción a los sistemas distribuidos · 2009-08-31 · Curso: Sistemas Distribuidos I Int roducción a los Sistemas Distribuidos Dr. Roberto Gómez Cárdenas 11 Escalamiento

Curso: Sistemas Distribuidos I Introducción a los Sistemas Distribuidos

Dr. Roberto Gómez Cárdenas 65

Amazon y Google

Dr. Roberto Gómez CárdenasLámina 129