introducción a los sistemas distribuidos · 2009. 8. 21. · desarrollo de aplicaciones...
TRANSCRIPT
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas 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.
Desarrollo de Aplicaciones Distribuidas 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
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 9
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 17
Escalamiento horizontal y vertical
Dr. Roberto Gómez CárdenasLámina 18
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 10
Escalamiento horizontal y vertical
Dr. Roberto Gómez CárdenasLámina 19
Ejemplos de limitantes escalabilidad 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 20
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.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 11
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 21
algoritmo.• No se asume la existencia de un reloj global.• El envío de mensajes es el medio de
comunicación.
Técnicas de escalamiento
• Esconder las latencias de la comunicación
• Distribución
• Replicación
Dr. Roberto Gómez CárdenasLámina 22
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 12
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 23
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 24
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 13
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 25
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 26
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 14
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 27
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 28
g ptodo instante las copias físicas xi tengan el mismo valor x
x1 = x2 = ... xi ... = xn = x
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 15
Ejemplo distribución
x1 x2
Pierre 500 Sam 500
Dr. Roberto Gómez CárdenasLámina 29
x3
Juan 900
Ejemplo replicación
Pi 500
x1x2
Pierre 500Sam 700Juan 900
Pierre 500Sam 700Juan 900
Dr. Roberto Gómez CárdenasLámina 30
x3
Pierre 500Sam 700Juan 900
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 16
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 31
• 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 32
Sistemas distribuidosubicuos
Computo en la nube
Sistemas caseros
Sistemas de cuidado de la salud
Redes de sensores
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 17
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 33
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 34
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 18
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 35
• 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 36
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 19
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 37
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 38
Sistema OperativoLocal
Componente aplicación paralela
Sistema OperativoLocal
Componente aplicación paralela
Sistema OperativoLocal
Componente aplicación paralela
Nodo Computadora Nodo Computadora Nodo Computadora
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 20
Diferencia clusters vs supercomputadoras
• EscalamientoDi ibilid d• Disponibilidad
• Administración sistema
Dr. Roberto Gómez CárdenasLámina 39
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 40
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 21
Capas de la arquitectura de un sistema grid
Aplicaciones
Capa Colectiva
Capa Conectividad Capa Recursos
Dr. Roberto Gómez CárdenasLámina 41
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 42
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).
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 22
¿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 43
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 44
(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
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 23
Gráfica dependencia
t1:= -b
t2:= b^2 t3:=4 * a
Dr. Roberto Gómez CárdenasLámina 45
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 46
Código objetoparalelo
Ejecución
Código objetoparalelo
Ejecución
Para
leli
Para
lel
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 24
Desarrollo aplicaciones distribuidas
• Memoria compartidaP d j• Paso de mensajes
• RPC• Objetos distribuidos
– Paso de mensajesRMI
Dr. Roberto Gómez CárdenasLámina 47
– 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 48
cabo a través de esta zona.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 25
Paso mensajes
• Procesadores se envían mensajes entre ellos.• Una opción: sockets• Una opción: sockets
Dr. Roberto Gómez CárdenasLámina 49
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 50
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 26
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 51
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 52
p q• La portabilidad prima sobre la potencia• Tolerancia a fallas• 1989 Oak Ridge National Laboratory• http://www.csm.ornl.gov/pvm/
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 27
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 53Cada 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 54
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;
}
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 28
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 55
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 56
• 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/
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 29
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 57
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 58
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 30
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 59
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 60
• Posible seleccionar entre diferentes protocolos de mensajería– JRMP, SOAP, RPC
• http://harness2.org
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 31
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 61
• 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 62
• Desarrollado y mantenido por Brendan Kosowski.• Basado en CLISP (Common LISP)• Plataformas Linux & BSD• http://grid.bmk.com.au/
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 32
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 63
• 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 64
• 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
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 33
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 65
• 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.
• 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 66
• Varios clientes realizan diferentes peticiones de forma concurrente
• Transacciones distribuidas
– Permitir que las aplicaciones se comuniquen entre ellas de forma directa: EAI
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 34
Sistemas procesamiento transacciones
• Sistemas usan transacciones requieren primitivas especiales que deben ser proporcionadas por elespeciales que deben ser proporcionadas por el sistema distribuido o por el sistema del lenguaje.
• Ejemplos primitivas
Primitiva DescripciónBEGIN_TRANSACTION Marcar el inicio de una transacciónEND TRANSACTION Terminar transacción e intentar completar esta
Dr. Roberto Gómez CárdenasLámina 67
END_TRANSACTION Terminar transacción e intentar completar estaABORT_TRASACTION 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 68
– 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.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 35
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 69
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 70
. . .
end.
. . .
end
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 36
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 71
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 72
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 37
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 73
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 74
p y• A y B responde “ok” a TC• TC responde “ok” a cliente.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 38
¿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 75
• 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 76
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 39
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 77
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 78
• Las dos fases del protocolo son– Fase de petición de completar– Fase de completar
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 40
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 79
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 80
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 41
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 81
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 82
3. Cada participante envía un reconocimiento (ack) al coordinador.
4. El Coordinador completa la transacción cuando han sido recibidos los reconocimientos
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 42
Fase 2 del 2PC
Dr. Roberto Gómez CárdenasLámina 83
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 84
p ppoder comunicarse entre ellos y no necesariamente a través del modelo de petición/respuesta.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 43
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 85
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 86
S.O. local 1 S.O. local 2 S.O. local 3 S.O. local 4
p ( )
Red
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 44
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 87
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 88
• 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
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 45
El modelo Publish/Subscribe
Dr. Roberto Gómez CárdenasLámina 89
El modelo Point-to-Point
• Modelo de mensajería tradicional
Dr. Roberto Gómez CárdenasLámina 90
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 46
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 91
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 92
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.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 47
Ejemplos redes ubicuoas
• Sistemas caseros.
• Sistemas de cuidado de la salud.
• Redes de sensores.
Dr. Roberto Gómez CárdenasLámina 93
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 94
g– Auto administración– Auto configuración– Espacios personales
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 48
Home Entertainment Network
Dr. Roberto Gómez CárdenasLámina 95
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 96
¿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?
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 49
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 97
agenda, fotos familiares, un diario, música y videos, etc.– Esto debe almacenarse se 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 98
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.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 50
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 99
,través de una conexión wireless, que recibielos 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 100
Transmisormovimiento
AlmacenamientoexternoTilt Sensor: Sensor de inclinación
ECG Sensor: Sensor electrocardiograma
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 51
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 101
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 102
• 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.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 52
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 103
– 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 104
– software de aplicación y – trasductores.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 53
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 105
– 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 106
Sitio del Operador
Los sensores soloenvían respuestas
Petición
Cada sensor puede procesar y almacenar datos
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 54
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 107
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 108
iniciador.– Agregaciones se hacen
donde dos o más ramas de un árbol se unen.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 55
Arquitecturas vs In-network data processing
Dr. Roberto Gómez CárdenasLámina 109
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 110
¿Puede ser contralada?
• ¿Qué pasa si el enlace de red falla?
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 56
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 111
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 112
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 57
Cloud computing
• Computación en nube• Definición NIS (Draft del 6 1 09)• Definición NIS (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 113
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 114
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 58
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 115
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 116
plataformas hetereogeneassimples.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 59
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 117
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 proveerse 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 118
recursos disponibles para su uso aparecen como infinitos y pueden ser adquiridos en cualquier cantidad y tiempo.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 60
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 119
• 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 120
– Proporciona procesamiento, almacenamiento, redes y otros recursos computacionales donde el consumidor ´puede desarrollar y correr cualquier software.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 61
Cloud Software as a Service(SaaS).
• Recursos proporcionado al consumidor es poder usar aplicaciones que corren en lapoder usar aplicaciones que corren en la infraestr
Dr. Roberto Gómez CárdenasLámina 121
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 122
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.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 62
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 123
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).
Diferencia entre modelo tradicional y el computación en nube
Dr. Roberto Gómez CárdenasLámina 124
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 63
Ejemplos computación en la nube
Dr. Roberto Gómez CárdenasLámina 125
Amazon y Google
Dr. Roberto Gómez CárdenasLámina 126
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 64
Arquitecturas sistemas distribuidos
Dr. Roberto Gómez CárdenasLámina 127
Arquitecturas sistemas distribuidos
• Arquitectura de un sistemaQ é t l f ?– ¿Qué componentes lo forman?
– ¿Cómo interaccionan entre sí?
• Dos modelos principales en los sistemas distribuidos
Dr. Roberto Gómez CárdenasLámina 128
distribuidos– Cliente-servidor– Igual a igual (peer-to-peer)
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 65
Arquitectura igual a igual
• Los procesos tienen un rol similar, aunque pueden asumir un rol q pcliente/servidor en ciertos momentos.
• Mejora la tolerancia a falla y la escalabilidad
• Difícil de coordinar
Dr. Roberto Gómez CárdenasLámina 129
• Ejemplo:– Búsqueda distribuida,– Enrutamiento– Cálculo distribuido
Arquitectura cliente/servidor
• Cliente– Proceso que quiere acceder a datos,
usar recursos o realizar operaciones en un dispositivo diferente.
• Servidor– Proceso que administra datos o
cualquier otro tipo de recurso y que es capaz de hacerlos disponibles a
Dr. Roberto Gómez CárdenasLámina 130
es capaz de hacerlos disponibles a otros procesos que están en otros dispositivos.
• Interacción– Enviar petición / recibir resultado
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 66
Interacción cliente servidor
Esperar por
Cliente
Servidor
Petición Respuesta
p pel resultado
Proporcionar l i i Tiempo
Dr. Roberto Gómez CárdenasLámina 131
el servicio Tiempo
Cliente servidor paso de mensajes
Dr. Roberto Gómez CárdenasLámina 132
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 67
Características paso mensajes
• Cada pareja transmite un mensaje entre cliente y servidorservidor.
• Por lo general es de forma asíncrona.• Habitualmente
– La instrucción send( ) es no bloqueante– La instrucción receive( ) es bloqueante (puede
implementarse como no bloqueante)
Dr. Roberto Gómez CárdenasLámina 133
implementarse como no bloqueante)• Los mensajes intercambiados pueden ser
– Mensajes de texto (p.e. HTTP)– Formateados de acuerdo a la aplicación (p.e. XML)– Mensajes binarios.
Cliente servidor: RPC
x = suma(1,2) en host B
suma(x, y){
res = x + yreturn res
}
Dr. Roberto Gómez CárdenasLámina 134
Host BHost A
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 68
Características RPC
• Desarrollado por la gente de Xerox en 1988.T i d l d j• Transparencia del paso de mensajes.
• Permite a los desarrolladores enfocarse en la aplicación bajo el paradigma de llamado de funciones.
• Versión orientada a objetos: RMI
Dr. Roberto Gómez CárdenasLámina 135
• Versión orientada a objetos: RMI– Remote Method Invocation
Tipos servidores
• Servidor de archivosS id d i• Servidor de impresoras
• Servidor de red• Servidor de bases de datos• Servidor de aplicaciones
Dr. Roberto Gómez CárdenasLámina 136
• Servidor de servicios de Internet – WWW, ftp, correo, etc
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 69
¿Un solo servidor o varios servidores?
peticiónpetición
resultado
Clientes
Servidor
Clientes
resultado
petición
resultado
petición
resultado
resultado
petición
resultado
petición
resultado
Servicio
Dr. Roberto Gómez CárdenasLámina 137
…. ….petición
resultado
petición
resultado
Un solo servidor Múltiples servidores
Características múltiples servidores
• Servicios son suministrados por multiples servidores– Distribución de los recursos entre servidores
• Ejemplo: Web• Mantenimiento de las ligas
– Ligas perdidas
– Replicación de los recursos• Servidores de alta disponibilidad: sitios de descarga, portales
• Replicación de recursosA t t i
Dr. Roberto Gómez CárdenasLámina 138
– Aumentar prestaciones– Tolerancia a fallos– Disponibilidad– Problema de coordinación o de coherencia
• La información no llega simultáneamente a todos los servidores.
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 70
Rack servers vs Blade servers
• Una computadora moderna requiere de E/S Procesador y Memoria
• RackRack– Los componentes son unidades completas que
contiene la CPU, memoria, fuente de alimentación, ventiladores y disipadores.
– Estos servidores son atornillados en el rack, y cada uno es conectado a la red corporativa usando un cable separado.
• Blade
Dr. Roberto Gómez CárdenasLámina 139
– Optimizados para minimizar el uso de espacio físico.– Incluye CPU, memoria y dispositivos para almacenar
datos. – No tiene fuente de alimentación eléctrica ni
ventiladores. – Son insertados en slots y enlazados entre si gracias a
un bus de alta velocidad dentro del chasis.
Servidores pesados o clientes pesados
• Fat clients vs fat servers• El modelo de servidor pesado carga más p g
funcionalidades en el servidor– Groupware, traductores y servidores web son
ejemplos de este tipo de servidores.• El modelo de cliente pesado hace lo contrario.
– Servidores de bases de datos son ejemplos de
Dr. Roberto Gómez CárdenasLámina 140
clientes pesados
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 71
Características clientes pesados
• La forma más tradicional de la arquitectura cliente/servidor.
• La parte pesada de la aplicación corre en el cliente.• En modelos de servidores de archivos y bases de
datos, el cliente sabe como están los datos organizados y almacenados en el lado del servidor.
• Estos clientes son usados para soporte de decisiones y
Dr. Roberto Gómez CárdenasLámina 141
p p ysoftware personal.
• Proporcionan flexibilidad y oportunidades para crear herramientas de tipo front-end que los usuarios finales crean sus propias aplicaciones.
Características servidores pesados
• Más fáciles de administrar y liberar en la red.– Ya que la mayor parte del código corre en el servidor– Ya que la mayor parte del código corre en el servidor.
• Intentan minimizar intercambios de red creando niveles de servicio más abstractos.
• En lugar de exportar datos en bruto, exportan procedimientos (o métodos) que operan con los datos
Dr. Roberto Gómez CárdenasLámina 142
datos.• El cliente proporciona el GUI e interactua con
servidor a través de RPCs (o RMIs)
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 72
Server side scripting
• Es una tecnología de servidor web en la cual la petición de un usuario es atendida corriendo unpetición de un usuario es atendida corriendo un script directamente en el servidor del web para generar páginas dinámicas – Sitios web interativos que sirven de interfaz con
bases de datos.Escritos en leng ajes como Perl PHP son
Dr. Roberto Gómez CárdenasLámina 143
– Escritos en lenguajes como Perl y PHP, son ejecutados por el servidor web cuando el usuario solicita un documento
– El usuario no puede ver el código fuente de los scripts.
Client side scripting
• Generalmente se refiere a las clases de programas de computadoras en el web que son ejecutados ende computadoras en el web que son ejecutados en el lado del cliente, a través de su web brower– Es una parte importante del concepto de DHTML
(Dynamic DHTML).– Se encuentran escritos en lenguajes como JavaScript o
VBScript
Dr. Roberto Gómez CárdenasLámina 144
– El browser debe entender los scripts.– Es posible que los usuarios no puedan ver su código
fuente
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 73
Arquitectura de una aplicación de n capas
• N capas (n-tiers) • Cualquier número de capas• Cualquier número de capas• Los más común:
– 1 aplicación monolítica, 2 capas y 3 capas• No implica separación física en diferentes
dispositivos, pueden ser implementados
Dr. Roberto Gómez CárdenasLámina 145
p , p p– Físicamente (procesamiento distribuido)
• Procesos en diferentes ubicaciones
– Lógicamente • Procesos en un o más procesadores físicos.
Ventajas
• Permite modificar una capa sin tener que modificar toda la aplicaciónmodificar toda la aplicación.– Aplicación una capa: existe un gran
acoplamiento en la aplicación.• Simplifica la administración de los sistemas.• Disponibilidad inmediata de cambios en la
Dr. Roberto Gómez CárdenasLámina 146
plógica de aplicación o datos.
• Posibilita el balanceo de la carga de trabajo entre distintos dispositivos (computadoras).
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 74
Ejemplo separación de funciones en modelo de 3 capas
• Lógica de presentación– Interfaz de usuario a través de la cual interactúa con laInterfaz de usuario a través de la cual interactúa con la
aplicación.– Interfaz gráfico (GUI) o basado en texto.
• Lógica de negocio– El núcleo de la aplicación.– Implementa la funcionalidad de la aplicación.
Dr. Roberto Gómez CárdenasLámina 147
• Lógica de datos– Administra la persistencia de los datos– Persistencia: Existencia o duración de una cosa durante
mucho tiempo
Interacción cliente servidor en 3 capas
Cliente
Esperar por el resultado
Cliente
ServidorAplicación
Peticiónoperación
Regresoresultado
Petición datos Regreso datos
Esperar por datos
Dr. Roberto Gómez CárdenasLámina 148
Tiempo
ServidorBase Datos
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 75
Ejemplo modelo de dos capas
• Parte cliente (front-end) y servidor (back-end)• Diferentes requisitos de hardware: velocidad de• Diferentes requisitos de hardware: velocidad de
procesamiento, capacidad de almacenamiento de datos, etc.
• Entorno heterogéneo y multi-vendedor: la plataforma no tiene por qué ser la misma (se comunican a través de un API conocido)
Dr. Roberto Gómez CárdenasLámina 149
comunican a través de un API conocido).• Cliente: interfaz gráfica de usuario, entorno
amigable.
Ejemplo modelo de tres capas
• Safari• Firefox• Internet Explorer• Konqueror
• Apache• PHP (PHP Hypertext Pre-processor)
• Internet Information ServicesASP (A ti S P )
Dr. Roberto Gómez CárdenasLámina 150
• ASP (Active Server Pages )
• MySQL• SQL Server
Desarrollo de Aplicaciones Distribuidas Introducción a los Sistemas Distribuidos
Dr. Roberto Gómez Cárdenas 76
Desventajas modulo 3 capas
• Asigna una gran carga a la red.E á difí il b f• Es más difícil programar y probar software que en una arquitectura de dos capas ya que más dispositivos tienen que comunicarse para completar una transacción del usuario.
Dr. Roberto Gómez CárdenasLámina 151
Ejemplo aplicación
Dr. Roberto Gómez CárdenasLámina 152