You are on page 1of 63

Sistemas Distribuidos

Presentacin e introduccin
Ing. Lintol Contreras Salas

Tipos de sistemas informticos


Computer systems

Distributed systems

Single system

(multiple systems)
PC/work.

SMP/MPP

clusters

Vector

Mainframe

Client/Server

Cloud

Grids

Peer-to-peer

control and management


centralized

decentralized

Sistema distribuido
Sistema compuesto por recursos de computacin fsicamente

distribuidos conectados a travs de una red que se comunican y


coordinan entre s

Computacin distribuida
Computacin que se realiza en un sistema distribuido

procesos

servicios

procesos

procesos

Mejoras en las tecnologas para SSDD


Avance en los procesadores

K. Hwang et al.

Mejoras en las tecnologas para SSDD


Arquitecturas multicore y many-core

K. Hwang et al.

Mejoras en las tecnologas para SSDD


Mejoras en las memorias y tecnologas de almacenamiento

K. Hwang et al.

Mejoras en las tecnologas para SSDD


Mejoras en la tecnologa de red
Ley de Gilder
Q

El ancho de banda agregado se triplica cada ao

Mejoras en las tecnologas para SSDD


Virtualizacin

Sistema tradicional

virtualizacin

Posibilidad de ejecutar en un computador (host) un programa que crea


un computador virtual (guest) sobre el que ejecutar cualquier entorno.

Prximos 10 aos
(Communications of the ACM, 9/2011)
Internet de las cosas. En 2020 habr 50 billones de

dispositivos interconectados (6 por persona)


Datos. En 2011 se van a crear en el mundo 1.2 zettabyes de
datos
En 2015 el 91% de los datos en Internet sern videos
Cloud. En 2020, una tercera parte de los datos residirn en el
cloud
Mejoras en las redes. En 2021 se espera que las velocidades de
las redes se incrementen 3 millones de veces
Incremento de la conectividad y de las redes sociales
Q

En Communications of the ACM


(08/2013)
En Communications of the ACM (08/2013)
Q

According to IBM, humans collectively produce about 2.5


exabytes of data each day;
Three zettabytes of data exist in the digital world
90% of the data in the word has been created over the last
two years

Elementos de un sistema distribuido


Programa: conjunto de instrucciones.
Proceso: programa en ejecucin.
Datos manipulados por los programas
Componente: elemento HW o SW

del

que soporta la ejecucin sistema


Una red de computadores es un conjunto de computadores
conectados por una red de interconexin.
Un protocolo es un conjunto de reglas e instrucciones que
gobiernan la comunicacin en un sistema distribuido, es decir,
el intercambio de mensajes.

Caractersticas
Mltiples componentes autnomos
Ausencia de un reloj global
Todos los recursos pueden no ser accesibles a la vez
El software ejecuta en procesos concurrentes sobre mquinas
diferentes
Software ms complejo

Mltiples puntos de fallo


Mltiples puntos de control
Comunicacin a travs de redes

Ventajas que pueden ofrecer los sistemas


distribuidos
Compartir recursos (HW, SW, datos).
Ofrecen una buena relacin coste/rendimiento
Capacidad de crecimiento
Tolerancia a fallos, disponibilidad, replicacin
Distribucin de la carga
Concurrencia. Servicio a mltiples usuarios
Velocidad. Capacidad global de procesamiento disponible para
ejecucin paralela de una aplicacin

Aspectos de diseo
Heterogeneidad: contemplar diferentes HW, SW, lenguajes de

programacin, velocidad,
Extensibilidad: abierto a nuevos estndares, aplicaciones,
tecnologas.
Escalabilidad: permitir el crecimiento del sistema
Seguridad: confidencialidad, integridad, autenticacin
Tolerancia a fallos y disponibilidad: identificar y tratar los

fallos
Control de concurrencia: coordinar las acciones que
ocurren diferentes sistemas.

en

Aspectos de diseo
Puntos de control no nicos: funciones distribuidas en sistemas

autnomos
Sin una visin global: es imposible tener una visin precisa e
instantnea del estado de todo el sistema
Transparencia: visin de un sistema unico
Asincrona: los mensajes tardan un tiempo (variable) en ser

entregados
Calidad de servicio: ofrecer garantias del servicio
(velocidad, seguridad, disponibilidad,.)
Algoritmos eficientes

Sistemas distribuidos y paralelos

Sistemas distribuidos
Objetivo: compartir recursos y colaborar.
Redes de computadores
Sistemas paralelos
Objetivo:
Alto rendimiento (speedup).
Alta productividad
Mquinas paralelas (arquitecturas dedicadas)
Multiprocesadores
Multicomputadores
Redes de estaciones de trabajo trabajando como un multicomputador
(cluster)
Grid Computing (www.gridcomputing.com)
Q
Q

Tipos de sistemas paralelos

Fuertemente acoplados
Multiprocesadores de memoria
compartida
Multicomputadores de memoria
distribuida
Debilmente acoplados
Clusters
Gestin centralizada
Grids
Agregacin de sistemas distribuidos
Gestin distribuida
Q

Transparencia

Heterogeneidad: acceso a recursos heterogneos de forma idntica


Acceso: acceso a recursos locales y remotos de forma idntica
Ubicacin: Acceso a recursos sin conocimiento de su posicin fsica en
la red
Concurrencia: ejecucin concurrente de procesos sin interferencias
Replicacin: uso de mltiples rplicas de recursos sin conocimiento de su
existencia
Fallos: permitir la ejecucin aun en presencia de fallos
Movilidad: permitir el movimiento de los recursos y clientes sin afectar a
su funcionamiento
Crecimiento: permitir la capacidad de crecimiento sin afectar al sistema
y aplicaciones
Rendimiento: rendimiento similar en recursos locales y remotos

Escalabilidad
Un sistema distribuido es escalable si su capacidad de

procesamiento puede crecer al aadir ms usuarios


Aumenta el rendimiento al aumentar el nmero de nodos
El tiempo de respuesta no aumenta
La fiabilidad no se degrada
Q

Dimensiones:
Q

Numrica: usuarios, objetos, servicios


Geogrfica: distancia
Administrativa: nmero de organizacin involucradas

Tcnicas de escalabilidad
Replicacin
Q

Datos: mltiples copias del mismo dato


Procesos: mltiples ejecuciones de la misma computacin

Caching

Consistencia
Distribucin
Distribucin de carga en mltiples nodos
Q

Control de concurrencia
Un sistema distribuido es inherentemente concurrente
Se debe asegurar:
Q

Linearizability: el resultado de la ejecucin llamadas


concurrentes debe ser equivalente a su ejecucin secuencial
Serializability: El resultado de la ejecucin de secuencias
de
operaciones
ejecutadas concurrentemente deben ser
equivalentes a la ejecucin secuencial de cada una de esas
secuencias

Flix Garca Carballeira

Sistemas Distribuidos (2013-2014)

24

Tolerancia a fallos
Un sistema distribuido es inherentemente ms propenso a

errores
Un sistema es tolerante a fallos si el sistema cumple sus
especificaciones a pesar de la presencia de fallos
Se debe asegurar:
Q

Disponibilidad: los recursos son disponibles a pesar de que


haya fallos.
Atomicidad: la consistencia de los recursos se debe asegurar
a pesar de fallos

Falacias de los sistemas distribuidos


http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Comput

ing
La red es fiable
La latencia es cero
El ancho de banda es infinito
Q

La red es segura
La topologa no cambia
Hay un administrador
El coste de transporte es cero
La red es homognea

Lectura
The Seven Deadly Sins of Distributed Systems

Steve Muir, Department of Computer Science, Princeton


University
First Workshop on Real, Large Distributed Systems
(PDF)

El teorema CAP
Brewer, PODC 2000

Middelware
Software que soporta la ejecucin de aplicaciones distribuidas

Aplicaciones
Lenguajes de programacin
Middleware
Sistema operativo

Sistema operativo

Hardware

Hardware
Red de interconexin

Artculo: Midleware for distributed systems


Q

http://www.cs.wustl.edu/~schmidt/PDF/middleware-chapter.pdf

Funciones de un middleware
Permite que componentes, procesos o aplicaciones

intercambien informacin
Ocultar la distribucin
Ocultar la heterogeneidad de los componentes (HW, SW,
datos, protocolos, lenguajes de programacin, )
Ofrecer interfaces de alto nivel estndar y uniformes para el
desarrollo de aplicaciones
Ofrecer servicios comunes para facilitar la colaboracin entre
las aplicaciones

Modelo genrico de middleware


Interfaz para los clientes
Procesos que ofrecen servicios

Paradigmas de comunicacin
Paso de mensajes
Modelo cliente-servidor
Objetos distribuidos
Servicios web
Middlewares orientados a mensajes

Comunicacin basada en mensajes

Punto a punto

Sockets

multicast

Comunicacin cliente-servidor
Cliente

Solicitar
operacin

Servidor

Mensaje de peticin
Recibir peticin
Seleccioar servicio

(esperar)
Mensaje de respuesta
(contina)

Sockets, RPC, RMI, Servicios Web

Ejecutar servicio
Enviar respueta

Llamadas a procedimientos remotos


Remote procedure calls (RPC)
Process B

Process A
proc1(arg1, arg2)
proc2(arg1)

proc3(arg1,arg2,arg3)

Flix Garca Carballeira

Sistemas Distribuidos (2013-2014)

35

Llamadas a procedimiento remoto


Cliente
main(){
...
r = sumar (4, 5);
...
}

p e tici
n
servidor

respuesta
sumar(int a, int b)
int r;
r = a + b;
return r;
}

Llamada a procedimiento remoto


Cliente

Stub

main(){
...
r = sumar (4, 5);
...
}
sumar(int a, int b)
send(a, b);
receive(r);
return(r);
}

Dir retorno

a
b
c

p e ticio
n
respuesta

servidor
main(){
receive (4, 5)...
r = sumar (4, 5);
send (r)
}
sumar(int a, int b)
int r;
r = a + b;
return r;
}

Stub

Evolucin de las RPC

Objetos distribuidos
Invocacin de mtodos remotos
Mquina A

Mquina B

Mquina C

Ejemplos de middlewares orientado a objetos


The Common Object Request Broker Architecture (CORBA)
Distributed Computing Environment (DCE)
Java Remote Method Invocation (RMI)
Distributed Component Object Model (DCOM de Microsoft)
Mirosoft .NET

CORBA
Representa un modelo para crear objetos y componentes

distribuidos
Modelo de comunicacin estndar para entornos heterogneos
(HW, SW, lenguajes)
Es una especificacin
Desarrollado por Object Management Group (OMG)
Q

Arquitectura de comunicaciones
en CORBA
Cliente

DII

Stub

ORB

Objeto Servidor

ORB

ORB

Interfaz

Interfaz

ORB

Red

Skel.

DSI

Object Adapter (OA)

Comunicacin mediante CORBA


Cliente

Objeto Servidor
6
5

DII

Stub

ORB

ORB

Interface

Interface

Skel.7

ORB

DSI

Object Adapter (OA)

ORB

Lenguaje de definicin de interfaces


(IDL)
Es el lenguaje mediante el cual se describen los mtodos que

un determinado objeto del entorno proporciona al resto de


elementos del mismo.
Independiente del lenguaje de programacin.
interface

Cuenta

{
ingresar(in

long

cantidad);

boolean
boolean retirar(in long cantidad);
long

balance();

};

Proyeccin (mapping) de lengajes


Especifican cmo se traduce el IDL a los distintos lenguajes de

programacin.
IDL
short

C++
CORBA::Short

long

CORBA::Long

float
char
string
boolean

CORBA::Float
CORBA::Char
char *
CORBA::Boolean

Ejemplo de aplicacin
Definicin del IDL
struct

HoraDelDia

short

hora;

short

minutos;

short

segundos;

};
Interface

Hora

HoraDelDia
};

{
obtener_hora();

Lenguaje de definicin de interfaces


Tipos bsicos
Tipos compuestos
Interfaces y operaciones
Excepciones
Atributos
Herencia

Servicio de nombres (CosNaming)


Permite asociar nombres lgicos con referencias a objetos.
El servidor publica el nombre de sus objetos con sus

referencias
El cliente busca en el servicio de nombre la referencia

Registro de un nombre

bind(MiCuenta,IOR:X)

NameService
MiCuenta=IOR:X

Cuenta

Localizacin del servidor de nombres

IOR:NS=resolve_initial_references(NameService)

Cliente

NameService
MiCuenta=IOR:X

Cuenta

Resolucin del nombre

IOR:X=resolve(MiCuenta)

Cliente

NameService
MiCuenta=IOR:X

Cuenta

The rise and fall of CORBA

Communications of the ACM


Volume 51 , Issue 8 (August
2008)
PDF

Middlewares orientados a mensajes


Message-Oriented Middleware (MOM)
Modelo de comunicacin asncrono
Mensajes normalmente sin tipo. La estructura interna de los

mensajes es responsabilidad de la aplicacin.


Mayor flexibilidad

Objetivos de los MOM


Integracin de diferentes tipos de sistemas
Garanta en la entrega y persistencia de los

mensajes
Los mensajes llegan en el orden correcto
Prioridades
Entrega causal
Diferentes modelos de comunicacin
Punto a punto
Uno a muchos
Muchos a muchos

Ejemplos de middlwares orientados a


mensajes
Sun Java Message Service (JMS)
WebSphere MQ (was MQSeries)
SunTM ONE Middleware
MSMQ Microsoft Message Queue Server
MessageQ de Bea Systems

Ejemplos de sistemas distribuidos


Sistemas Cliente-servidor
Redes de estaciones de trabajo
Internet
Clusters
Grid computing
Peer-to-peer Cloud
computing
Computacin voluntaria
Redes de sensores

Cluster
Arquitectura distribuida formada por un conjunto de

computadores independientes interconectados que funciona


como un nico sistema (single system image)
nodes

network
frontend

Grid computing
The Globus Project defines Grid as:
Q

Infrastructure that enables the integrated, collaborative use


of high-end computers, networks, databases, and scientific
instruments owned and managed by multiple organizations
What is the Grid? A Three Point Checklist (2002)

The Gridbus project defines Grid as:


Q

Type of parallel and distributed system that enables the


sharing, selection, and aggregation of geographically
distributed autonomous resources dynamically at
runtime depending on their availability, capability,
performance, cost and users quality-of-service
requirements.

Computacin voluntaria

voluntarios

Internet
Proyectos

Computacin voluntaria
La computacin voluntaria es un tipo de computacin
distribuida que se basa en el empleo de ordenadores
(voluntarios) conectados a Internet.
En general, estos ordenadores suelen ser ordenadores
domsticos de uso privado, que se utilizan para la ejecucin de
diversos proyectos cientficos.

Ejemplos de proyectos basados en BOINC


Einstein@home

LIGO; gravitational wave astronomy


Rosetta@home
U. Washington; protein study
SETI@home
U.C. Berkeley; SETI
LHC@home
CERN; accelerator simulation
Africa@home
STI, U. of Geneva; malaria epidemiology
IBM World Community Grid
Q

Modelo de ejecucin (pull)


voluntario

Servidor BOINC
Solicita trabajo
Enva trabajo

Descarga los archivos de entrada


Ejecuta el
trabajo

Enva los resultados

Sistemas Peer to peer


Sistema totalmente distribuido de gran escala:
Q

Origen en 1999 con el sistema Napster


Sin control centralizado, mltiples dominios de
administracin
Los nodos participantes son simtricos en
funcionalidad tareas (cliente/servidor)
Gran nmero de nodos poco fiables
Utilizado fundamentalmente para la distribucin de
contenidos y comparticin de ficheros

Cloud Computing
Vieja idea: software como servicio
Objetivo: ofrecer computacin a travs de servicios ofrecidos

desde Internet
Actualmente: HW, infraestructura, plataforma, aplicaciones y
datos como servicio
In this architecture, the data is mostly resident on servers
somewhere on the Internet and the application runs on
both the cloud servers and the users browser.
Eric Schmidt in Information Factories by G. Gilder

Redes de sensores
Una red de sensores (el ingles, Wireless Sensor Network) es

un sistema distribuido donde parte de sus nodos (nodos


sensores) son capaces de interactuar con el entorno fsico
Interactuar: lectura/actuacion sobre el medio

Wireless Sensor and Actuator Networks (WSAN)

Nodos sensores son dispositivos electrnicos, autnomos,


distribuidos geogrficamente alrededor de un fenmeno para
monitorizarlo, con capacidades de:
Q

lectura, computo, almacenamiento y


comunicacin
inalmbrica

You might also like