Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arquitectura de
los Sistemas
Distribuidos
Índice
• Introducción
• Patrones de interacción
• Arquitecturas para computación distribuida
1ª parte
• Arquitectura cliente-servidor (incluida en
– Variaciones del modelo examen)
– Aspectos de diseño del modelo cliente/servidor
• Arquitectura editor-subscriptor
• Arquitectura productor-consumidor
• Arquitectura Peer-to-peer 2ª parte
– Sistemas P2P desestructurados (no incluida
• BlockChain, Napster, BitTorrent, Gnutella, Kazaa… en examen)
– Sistemas P2P estructurados (Protocolo Chord)
Sistemas Distribuidos Fernando Pérez Costoya
2
Retomando la definición de SD
• Plano físico (plataforma distribuida):
– Conjunto de nodos conectados por una red sin memoria compartida
• Plano lógico (aplicación o servicio distribuido):
– Conjunto de procesos que se comunican mediante paso de mensajes
Partición2
Map Reduce
Más detalles
en Sistemas
Orientados a
Servicios
vértice
inactivo
Grafo de computación
Ejecución
Resilient Distributed Datasets: A Fault-Tolerant
Abstraction for In-Memory Cluster Computing
C S Ed Su
C Ed Su
Prod Cons P
Prod Cons P P
Prod Cons P
Prod/Cons P2P
Sistemas Distribuidos Fernando Pérez Costoya
22
Modelo cliente/servidor
• Arquitectura asimétrica: 2 roles interacción petición/respuesta
– Cliente: Solicita servicio
• Activo: inicia interacción
– Servidor: Proporciona servicio
• Pasivo: responde a petición de servicio
• Desventajas de arquitectura cliente/servidor
– Servidor “cuello de botella” problemas de escalabilidad
– Servidor punto crítico de fallo
– Mal aprovechamiento de recursos de máquinas cliente
• Normalmente, acoplamiento espacial y temporal
• Servidor ofrece colección de servicios que cliente debe conocer
• Normalmente, petición especifica recurso, operación y args.
– NFS: READ, file_handle, offset, count
– HTTP: GET /index.html HTTP/1.1
Sistemas Distribuidos Fernando Pérez Costoya
23
Esquema cliente/servidor
Interfaz de Servicio
Petición (args.)
Resp=Código(args)
Interfaz de Servicio
Petición (args.)
https://www.quora.com/Whats-the-difference-between-a-reverse-proxy-and-forward-proxy
Sistemas Distribuidos Fernando Pérez Costoya
32
Cliente/servidor jerárquico
• Servidor actúa como cliente de otro servicio
– Igual que biblioteca usa servicio de otra biblioteca
• División vertical
• Funcionalidad dividida en varios niveles (multi-tier)
– P. ej. Aplicación típica con 3 capas:
• Presentación
• Aplicación: lógica de negocio
• Acceso a datos
– Cada nivel puede implementarse como un servidor
• División horizontal
– Múltiples servidores idénticos cooperan en servicio
• Similitud con P2P
– Traducir nombre de fichero en SFD o nombre de máquina con DNS
Sistemas Distribuidos Fernando Pérez Costoya
33
División horizontal
Espacios de nombres
Cliente montados
Servidores
idénticos
C C C S
p p p p p
C S C S C S
p
C C C S
C S d C S S d
C S d C S S d
C S d C S S d
R R R
C
C R C R R
C
R R R
https://jaksa.wordpress.com/2009/05/01/active-and-passive-replication-in-distributed-systems/
Sistemas Distribuidos Fernando Pérez Costoya
44
Código móvil
• Viaja el código en vez de los datos y/o resultados
• Requiere:
– Arquitecturas homogéneas o
– Interpretación de código o
– Máquinas virtuales
• Modelos alternativos
– Código por demanda (COD)
• Servidor envía código a cliente
• P.e. applets
– Evaluación remota (REV)
• Cliente dispone de código pero ejecución debe usar recursos servidor
• P.ej. Cyber-Foraging
– Agentes móviles
• Componente autónomo y activo que viaja por SD
Interfaz de Servicio
Petición
Resp=Código(args)
Interfaz de Servicio
Petición(args)+Código
Cliente Servidor
Respuesta
Resp=Código(args)
https://www.nginx.com/blog/7-tips-for-faster-http2-performance/
Sistemas Distribuidos Fernando Pérez Costoya
62
Evolución de HTTP
https://kemptechnologies.com/solutions/http2/
Sistemas Distribuidos Fernando Pérez Costoya
63
Client Pull vs Server Push
• C/S: modo pull → cliente “extrae” datos del servidor
• Escenario: servidor dispone de información actualizada
• P.e. retransmisión web en modo texto de acontecimiento deportivo
• P.e. servicio de chat basado en servidor centralizado
• ¿Cómo recibe cliente actualizaciones? Alternativas:
• Cliente polling periódico al servidor (web: HTTP refresh; Ajax polling)
• Servidor responde inmediatamente, con nuevos datos si los hay
• Long Polling: Servidor no responde hasta que tenga datos
• Server Push: servidor “empuja” datos hacia el cliente
• Cliente mantiene conexión persistente y servidor envía actualizaciones
• Web: HTTP Server Push, Server-Sent Events, Web Sockets
• Usar editor/subscriptor en vez de cliente/servidor
M1 M2
1
C DM2 + ptoS DM2 + ptoS S
M2
2 Idsrv ptoS
DM2 + ptoB binder
M1
C DM2+idsrv
Idsrv ptoS
1
M2
Binder ptoB
DM2 + ptoS S
M2
Idsrv ptoS
DM2 + ptoB binder
M1
¿idsrv?
1
C DM2+idsrv ptoS
M2
Binder ptoB 2
DM2 + ptoS S
Binder ptoB
Sistemas Distribuidos Fernando Pérez Costoya
70
(3a) ID servicio = [idsrv]; solo BG: Alta
M3
Idsrv DM2 + ptoS
DM3 + ptoB binder
M1 2
M2 1
binder DM3+ptoB
DM2 + ptoS S
M3
idsrv DM2 + ptoS
DM3 + ptoB binder
M1
¿idsrv?
1
C idsrv DM2 + ptoS
M2
binder DM3+ptoB 2
DM2 + ptoS S
M1 M2
Idsrv ptoS
C idsrv DM2 + ptoL BL
2
M3 M2 1
Idsrv DM2
BG DM3 + ptoB DM2 + ptoS S
3
4 Idsrv DM2 BL ptoL | BG DM3+ptoB
Sistemas Distribuidos Fernando Pérez Costoya
73
(3b) ID servicio = [idsrv]; BG+BL: Consulta
222
1
67.27.149.120
2 tiempoMad
cliente
333
3 tráficoMad
444
Info. conocida a priori
222
5
6.6.6.6 1
67.27.149.120
miBanco? 6.6.6.6:666 binderGlobal
4 tiempoMad
2
cliente 666
333
6
3
tráficoMad
7
444
Info. conocida a priori
Info. descubierta
Sistemas Distribuidos Fernando Pérez Costoya
78
Recapitulación (3b): binder local y global
saldo miCuenta? 89.107.176.80:222 89.107.176.80
9
binderLocal miBanco
1
alta(miBanco|222)
111 222
localhost:111
8
6.6.6.6 2
binderGlobal 67.27.149.120
alta(tiempoMad|67.27.149.120) 4 tiempoMad
cliente miBanco? 6.6.6.6:666 666 6.6.6.6:666
7 binderLocal 333
89.107.176.80 3
111
tráficoMad
5
444
Info. conocida a priori 6
Info. descubierta
Sistemas Distribuidos Fernando Pérez Costoya
79
Servicio con/sin estado
• ¿Servidor mantiene información de clientes?
• Ventajas de servicio con estado (aka con sesión remota):
– Mensajes de petición más cortos
– Mejor rendimiento (se mantiene información en memoria)
– Favorece optimización de servicio: estrategias predictivas
• Ventajas de servicio sin estado:
– Más tolerantes a fallos (ante rearranque del servidor)
• Peticiones autocontenidas
– Reduce nº de mensajes: no comienzos/finales de sesión.
– Más económicos para servidor (no consume memoria)
– Mejor reparto carga y fiabilidad en esquema con escalado horizontal
• Servicio sin estado base de propuesta REST Más detalles en
Sistemas Orientados
• Estado sobre servicios sin estado a Servicios
– Cliente almacena estado y lo envía al servidor (p.e. HTTP+cookies)
Sistemas Distribuidos Fernando Pérez Costoya
80
Servicio de ficheros con estado: OPEN
C S
open(“f”...)
x N | pos 0
OPEN, “f”
3 x
x
“f”; inodo N
C S
read(3,b,t)
x N | ant+tl
READ, x, t
3 x
DATOS, tl (leído)
“f”; inodo N
C S
lseek(3,m,p)
x N | pos p
LSEEK,x,m=SEEK_SET,p
3 x
p
“f”; inodo N
C S
close(3)
x -
CLOSE, x
3 -
OK
“f”; inodo N
C S
open(“f”...)
BUSCAR, “f”
3 N | pos 0
N
“f”; inodo N
C S
read(3,b,t)
READ, N, ant, t
3 N | ant+tl
DATOS, tl (leído)
“f”; inodo N
C S
lseek(3,m,p)
3 N | pos p
“f”; inodo N
C S
close(3)
3 -
“f”; inodo N
cola de mensajes de S
m1 C1
m2 C2
m3 libre S
Sistemas Distribuidos Fernando Pérez Costoya
93
Serv. cerrojos con estado: leases (4)
C1 C2 C3
c1 lease(m1)
c3 lock(m3) cola de mensajes de S
c2 lease(m2)
Ø Treinicio>Tlease S
Sistemas Distribuidos Fernando Pérez Costoya
94
Serv. cerrojos con estado: leases (5)
C1 C2 C3
suscribe(tipo5)
Su1 notifica(ev5)
Ed1
suscribe(tipo3)
Su2
publica(ev5)
Ed2
suscribe(tipo5)
Su3 notifica(ev5)
Ed3
baja(tipo1)
Su4
suscribe(tipo5)
Su1 obtiene()
Ed1
suscribe(tipo3)
Su2
publica(ev5)
Ed2
suscribe(tipo5)
Su3 obtiene()
Ed3
baja(tipo1)
Su4
Cl Ed
genera genera
datos datos
Su1 Ed1
Su2
Ed2
Su3
Ed3
Su4
Su1 Ed1
Su2
Int. Ed2
Su3
Ed3
Su4
Proceso intermediario
Desacoplamiento espacial
Cuello botella y punto fallo
Su1 Ed1
Int. Int.
Su2 Int.
Int. Int. Ed2
Su3 Int.
Int. Int. Ed3
Su4
Red de intermediarios
Desacoplamiento espacial
Escalabilidad y fiabilidad
Sistemas Distribuidos Fernando Pérez Costoya
110
Implementación ed/su con c. grupo
Su1 Ed1
Su2
Ed2
Su3
Ed3
Su4
Comunicación de grupo
Desacoplamiento espacial
suscribe(tipo5)
Pr1 obtiene()
Co1
put(al1, m)
Pr2
get(al1)
Co2
suscribe(tipo5)
Pr3 obtiene()
Co3
baja(tipo1)
Pr4
• Binding
• Servidor de cerrojos
• Caída del cliente
• Editor/subscriptor
consulta alta
Cliente Binder renovación Servidor
lock lock
Cliente renovación Servidor renovación Cliente
publica subscribe
Editor Broker renovación Subscriptor