Objetivo: Identificar los fundamentos de sistemas distribuidos y tecnologías de programación paralela a través de la revisión sistemática de contenidos actualizados, con la finalidad de construir una base sólida de conocimientos que permita su posterior aplicación.
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
1. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 1
05/12/2022
Fundamentos de sistemas
paralelos y distribuidos
Unidad 1
Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo
para uso de los cursos de Aplciaciones Distribuidas
2. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 2
05/12/2022
Objetivo general de la Unidad 1
Identificar los fundamentos de sistemas
distribuidos y tecnologías de programación
paralela a través de la revisión sistemática de
contenidos actualizados, con la finalidad de
construir una base sólida de conocimientos que
permita su posterior aplicación.
3. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 3
05/12/2022
Unidad 1: Fundamentos de sistemas
paralelos y distribuidos
• Computación en Paralelo y Computación
Distribuida
• Conceptos de Sistemas distribuidos
• Caracterización de un sistema distribuidos
• Message Exchange Patterns (MEPs)
• Arquitectura de desarrollo de Servicios
• Arquitecturas paralelas
4. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 4
05/12/2022
•En ingeniería es imprescindible conocer qué significa cada vocablo sin ambigüedad
•En el ámbito de la computación distribuida, no existe un vocabulario universal
•Esto es debido a:
•Hay múltiples actores involucrados (industria, universidades, individuos)
•Cada actor tiene sus propios intereses (quizás en conflicto)
•El estado del arte evoluciona a gran velocidad
•Esto produce que:
•Se fomente la confusión entre los diferentes actores involucrados
•Se dificulte la estandarización
•En esta asignatura vamos a mantener una serie de convenciones en relación a la
nomenclatura y al vocabulario para poder “hablar con precisión”
•Para ello, definiremos un conjunto de términos de manera precisa
•Habrá que tener en cuenta que, en otros contextos, los términos aquí definidos
pueden tener significados (sensiblemente) diferentes
El vocabulario de la computación distribuida
5. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 5
05/12/2022
Monoprogramación: Ejecución secuencial de trabajos
9 28
E/S
T2
T3
T5
t
T2 T3
T5
S.O.
T2
T3
T5
T3 T5
19
T3
T5
T6
T5 T6
CPU ociosa 35,7%
Multiprogramación: Ejecución simultánea de trabajos
T2
T3
T5
t
S.O.
UCP
IT2
T2
T3
T5
T1, T2,
T3, T4,
T5, T6
IT3
IT5
15 1718
6. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 6
05/12/2022
Conceptos necesarios
• Compute Intensive – un solo problema que
requiere una gran cantidad de
computación(cálculo).
• Memory Intensive – un solo problema que
requiere una gran cantidad de memoria.
• Data Intensive – un solo problema que
opera en un gran conjunto de datos.
• High Throughput – muchos problemas no
relacionados que se calculan de forma
masiva.
7. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 7
05/12/2022
Aplia
c ci C (Hi h T t
u )
Comu
p ting
u
hroughp
g
s HT
one
Aplicaciones HTC (High Throughput Computing)
• Su objetivo es aumentar el número de ejecuciones por unidad de tiempo
• Su rendimiento se mide en número de trabajos ejecutados por segundo
• Áreas de aplicación: HEP, bioinformática, finanzas…
Preprocessing Job
Master Job (M)
Postprocessing Job
Job 0 Job i Job n
… …
Preprocessing Job
Postprocessing Job
Job 0 Job 1 Job n
… …
Preprocessing Job
Postprocessing Job
Job 0
Job i
Job n
… …
HTC
Síncrono
HTC
Asíncrono
Master-slave
8. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 8
05/12/2022
Ecuación no lineal de Schrödinger
Ecuaciones de Maxwell-Bloch Esquemas numéricos
∂u
=
ui +
1 −ui −
1
∂x h
k
h
Aplicaciones HPC (High Performance Computing)
• Su objetivo es reducir el tiempo de ejecución de una única aplicación paralela
• Su rendimiento se mide en número de operaciones en punto flotante por
segundo (FLOPS)
• Áreas de aplicación:
• Estudio de fenómenos a escala microscópica (dinámica de partículas)
• Resolución limitada por la potencia de cálculo del computador
• Cuantos más grados de libertad (puntos), mejor reflejo de la realidad
• Estudio de fenómenos a escala macroscópica (sistemas descritos por
ecuaciones diferenciales fundamentales)
• Precisión limitada por la potencia de cálculo del computador
• Cuantos más puntos, más se acerca la solución discreta a la continua
9. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 9
05/12/2022
HTC vs HPC
• Las tareas de HPC se caracterizan por necesitar
grandes cantidades de potencia de cómputo
durante cortos períodos de tiempo.
– Los entornos HPC a menudo se miden en términos
de FLOPS.
• Las tareas de HTC también requieren grandes
cantidades de cómputo, pero durante mucho más
tiempo (meses y años, en lugar de horas y días).
– A HTC no le preocupan las operaciones por segundo,
sino las operaciones por mes o por año.
– Por lo tanto, el campo de HTC está más interesado
en cuántos trabajos se pueden completar durante un
largo período de tiempo en lugar de qué tan rápido.
10. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 10
05/12/2022
Modelos de computación y programación
•Definición de Modelo de Computación (Programación):
“Paradigma que proporciona y determina la visión que un programador tiene sobre la
ejecución (y desarrollo) de un programa”
Podemos establecer diferentes clasificaciones de los Modelos de
Computación/Programación dependiendo del criterio que deseemos utilizar:
•Criterio basado en la modularidad del código:
•Modelo de programación orientado a objetos
•Modelos de programación procedimental
•Criterio basado en el tipo de sistema sobre el que ejecuta el programa:
•Modelo de computación monolítica
•Modelo de computación paralela
•Modelo de computación distribuida
•Modelo de computación cooperativa (computación P2P)
11. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 11
05/12/2022
Modelos de computación
•Computación Monolítica
•Procesadores: El programa ejecuta en un solo procesador
•Ligazón: Ninguna
•Requiere: Se requiere el hardware de un ordenador
•Ejemplo: Ejecución de programas en un PC
•Cuestión: ¿Soporta la computación monolítica los sistemas multiusuario?
•Computación Paralela
•Procesadores: El programa ejecuta en un conjunto de procesadores que están
fuertemente ligados
•Ligazón
•Los procesadores cooperan íntimamente y se sincronizan
•Los procesadores comparten memoria principal
•Los procesadores comparten otros recursos del ordenador (periféricos, etc.)
•Requiere:
•Se requiere el hardware de un ordenador
•Se requiere el hardware de varios procesadores (CPUs)
•Se requiere un mecanismo de interconexión y control de los procesadores
•Ejemplo: Ejecución de programas en un ordenador con núcleo dual.
•Cuestión: ¿Puede un mismo programa secuencial ejecutar en múltiples
procesadores?
12. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 12
05/12/2022
Modelos de computación
•Computación Distribuida
•Procesadores: El programa ejecuta en un conjunto de procesadores que están
ligeramente ligados
•Ligazón:
•Los procesadores pueden intercambiar mensajes
•Los procesadores no comparten (directamente) memoria principal
•Los procesadores no comparten (directamente) sus recursos hardware
•Requiere: (Un sistema distribuido)
•El hardware de varios ordenadores
•Una red de ordenadores
•Hardware de interconexión
•Ejemplo: Ejecución de un programa en una red de área local
•Computación Cooperativa y Computación P2P (un tipo de Comput. Distribuida)
•Procesadores: El programa ejecuta en un conjunto dinámico y muy grande de
procesadores que están débilmente ligados. Se asume que los recursos de
procesador de los que el programa puede disponer están restringidos.
•Ligazón: Similar a la de la computación distribuida
•Requiere: Un sistema distribuido + una red de área extendida (Internet p.e.)
•Ejemplo: Ejecución de un programa en Internet (SETI@home)
13. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 13
05/12/2022
Computación Distribuida
•Definición de Computación Distribuida
“Modelo de computación que se caracteriza por estar adaptado a la ejecución de
programas en sistemas distribuidos”
•Definición de Sistema Distribuido
“Sistema informático compuesto por un conjunto de nodos de procesamiento
(ordenadores) que se encuentran ligados a través de una red que permite el intercambio
de mensajes entre los mismos”
•La computación distribuida (los sistemas distribuidos) se ha convertido en un
elemento esencial en la industria en las últimas décadas
•Redes de área local
•Internet
•Aplicaciones Cliente/Servidor
•¿Por qué la computación distribuida es tan popular?
14. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 14
05/12/2022
Ventajas de la Computación Distribuida
•Compartición de recursos
•Cualquier recurso disponible en la red puede ser accedido por otros nodos
•Ejemplos: Servidores de ficheros, Servidores de BD, Impresoras, etc.
•Ahorro de costes
•Los ordenadores son baratos, conectar ordenadores en red es barato Construir
un sistema distribuido es barato
•Computación distribuida se pueden compartir los recursos más caros
•Ejemplos: Impresora a color, hardware específico, memoria, etc.
•Escalabilidad
•Con computación monolítica, los recursos disponibles están limitados a los
presentes en un solo ordenador
•Con computación distribuida, los recursos disponibles se pueden escalar
introduciendo nuevos nodos (ordenadores) en el sistema soporte
•Tolerancia a fallos
•Un recurso crítico puede ser replicado en varios nodos (distantes) de la red.
•Ejemplo: Copias de seguidad (Backups)
•Ventajas de la Comunicación
•No es posible intercambiar información entre ordenadores distantes sin utilizar un
modelo de computación distribuida
15. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 15
05/12/2022
Inconvenientes de la Computación Distribuida
•Si hay tantas ventajas, ¿por qué no todas las aplicaciones son distribuidas?
La computación distribuida también presenta serios inconvenientes
Modelo de fallos más complejo y difícil de gestionar
•Computación monolítica
•Lo habitual es que todas las partes de un programa fallen de manera simultánea
•No existe el concepto de fallo de comunicación
•Cuando hay fallos, es posible recuperar el estado de cada parte del programa
•En computación distribuida
•Cada parte del programa falla de manera independiente
•Hay (frecuentemente) fallos en las comunicaciones. La red no es fiable
•Cuando hay fallos, no hay conocimiento global sobre el estado del programa.
Habitualmente no es posible que unas partes del programa puedan tener
información relativa al estado de otras
•Hay más elementos susceptibles de fallo: “un sistema distribuido es aquel en el
que el fallo de un ordenador que, ni siquiera sabes que existe, puede dejar tu
propio ordenador inutilizable” – Leslie Lamport.
16. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 16
05/12/2022
Inconvenientes de la Computación Distribuida
Mayor vulnerabilidad frente a ataques intencionados (aspectos de seguridad)
•Computación monolítica
•Es muy difícil manipular la información que se intercambia entre las distintas
partes de un programa
•Es muy difícil suplantar partes de un programa
•Existe un único administrador conocido y “fiable”
•La administración está centralizada
•Los problemas siempre “vienen de dentro del sistema” (p.e. virus)
•En computación distribuida
•La seguridad de la comunicación no está, en principio, garantizada
•La identidad de las partes no está, en principio, validada
•Puede haber diferentes administradores con “fiabilidad” desconocida
•La administración es descentralizada
•En sistemas abiertos (p.e. Internet), se fomenta el que cualquiera pueda formar
parte del sistema distribuido
•Los problemas pueden venir de fuera (p.e. gusanos) o de dentro del sistema
(p.e. virus)
17. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 17
05/12/2022
Inconvenientes de la Computación Distribuida
Mayor complejidad de desarrollo
•Computación monolítica
•Hay un solo hardware en el que se ejecuta la aplicación
•El modelo de fallos es sencillo de gestionar
•Los problemas de seguridad son mínimos
•Hay información global sobre el estado de las distintas partes del programa
•La comunicación entre los miembros es potente y flexible
•En computación distribuida
•Puede haber múltiples plataformas hardware en las que el programa ejecuta
•El modelo de fallos es complejo y difícil de gestionar
•Los problemas de seguridad son abundantes y con soluciones complejas
•No hay información global sobre el estado de las distintas partes del programa
•La comunicación está limitada (en ancho de banda, en latencia, etc.)
•Diferentes sistemas utilizan diferentes formatos de representación de datos
18. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 18
05/12/2022
Las Falacias de la Computación Distribuida
… by Peter Deutsch, James Gosling
• Las Falacias de la Computación Distribuida son un conjunto de suposiciones
erróneas que suelen asumir los programadores inexpertos en desarrollo de
software distribuido
“All prove to be false in the long run and all cause big trouble and painful learning
experiences” – Peter Deutsch
1. La red es fiable
2. La latencia es cero
3. El ancho de banda es infinito
4. La red es segura
5. La topología no cambia
6. Hay un administrador
7. El coste de transporte es cero
8. La red es homogénea
19. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 19
05/12/2022
Unidad 1: Fundamentos de sistemas
paralelos y distribuidos
• Computación en Paralelo y Computación
Distribuida
• Conceptos de Sistemas distribuidos
• Caracterización de un sistema distribuidos
• Message Exchange Patterns (MEPs)
• Arquitectura de desarrollo de Servicios
• Arquitecturas paralelas
20. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 20
05/12/2022
Un paseo por las Arquitecturas de las TI
La evolución arquitectural de las TI ha seguido los siguientes
principios.
Conseguir un universo de información fácil de compartir y
escalar.
Resistencia ante fallos.
Balanceo de carga de procesamiento.
Clientes ligeros.
Personalización del entorno.
Menor coste, más eficiencia.
Usuario final nada especializado.
Mainframes PCs
Arquitectura
Cliente/Servidor
Arquitectura
Web
Grid Cloud
21. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 21
05/12/2022
Arquitectura de Sistemas Centralizados
• Único computador (caro y de gran potencia) con
terminales alfanuméricos directamente conectados.
• Entornos de empresa:
– Soporte multiusuario
– Uso de mainframes o minicomputadores
• Entornos científicos:
– Ejecución eficiente de aplicaciones
– Uso de supercomputadores
• Uso ocasional de la red:
– Transferir ficheros o logins remotos
• Interfaz de usuario poco amigable
– Interfaces gráficas gastan muchos recursos
22. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 22
05/12/2022
Arquitectura de Sistemas Centralizados
Mainframes / Minis y Micros
Mainframes: robustos armarios
sin distribución, hoy percibidos
casi como dinosaurios
Minis y Micros: se achican las
máquinas aquí conectadas por
redes con topología fija: anillos,
token-ring, estrella, Ethernet, etc.)
Ley de Gordon Moore:
“Cada 18 meses se duplica el núm. de
transistores en un circuito integrado y
su precio se reduce a la mitad”,
¡Imparable desde Abril, 1965!
“Cada 2 años en los ordenadores (que
surgen en 1971)”
¡Imparable desde 1975!
23. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 23
05/12/2022
Arquitectura de Sistemas Distribuidos
• Conjunto de procesadores conectados por una red
• Cada usuario tiene capacidad de procesamiento local
que permite interfaces de usuario sofisticadas.
• Uso intensivo de la red para compartir recursos:
– dispositivos
– datos
– procesadores (migración de procesos)
• Capacidad global de procesamiento
disponible para:
– Servicio a múltiples usuarios
– Ejecución paralela de una aplicación
PC
PC
PC
PC
PC
ethernet
24. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 24
05/12/2022
Nacimiento de los Sistemas
Distribuidos
Causas:
• Tecnología de microprocesadores: relación potencia/coste.
• Tecnologías de comunicaciones:
– Protocolos de comunicaciones.
– Redes de área local (LAN): Coste y prestaciones.
– Internet
• Factores comerciales:
– Comercio electrónico: e-comerce.
– Información distribuida (WWW).
– Reducción de costes.
25. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 25
05/12/2022
Ventajas de los Sistemas Distribuidos
• Economía: Buena relación rendimiento/coste
– Ley de Grosch (obsoleta):
Prestaciones = cte x (Precio)2
• Alto rendimiento: Procesamiento paralelo.
• Soporte de aplicaciones inherentemente distribuidas.
– Por ejemplo: empresa distribuida geográficamente
• Capacidad de crecimiento: Escalabilidad.
• Fiabilidad y disponibilidad: Tolerancia a (ciertos) fallos.
• Carácter abierto y heterogéneo:
– Estándares de interoperabilidad.
• Compartir recursos y datos.
26. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 26
05/12/2022
Desventajas de los Sistemas
Distribuidos
• Necesidad de un nuevo tipo de software:
– Más complejo.
– No hay todavía un acuerdo sobre cómo debe ser.
• Red de interconexión introduce nuevos
problemas:
– Pérdida de mensajes y saturación.
– Latencia puede provocar que al recibir un dato ya
esté obsoleto.
– La red es un elemento crítico.
• Seguridad y confidencialidad
27. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 27
05/12/2022
Aplicaciones de los Sistemas
Distribuidos
• Servicios Internet: correo, noticias, Web, ... nuevos servicios.
• Redes corporativas e intranets.
• Procesamiento paralelo:
– Procesamiento masivo (solución a la eficiencia).
– Topología distribuida (problemas de naturaleza distribuida)
• Sistemas distribuidos de gestión de bases de datos y
explotación de los mismos: e.g. Data Warehousing.
• Aplicaciones multimedia.
• Sistemas industriales distribuidos y aplicaciones de control.
• Sistemas distribuidos de tiempo real.
• ..... < y muchos más >
28. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 28
05/12/2022
Sistemas Cooperativos
Definición: [Cho97]
Sistemas software orientados a servicios de alto nivel que
requieren el soporte de mecanismos de comunicación en base a
los cuales los protocolos de comunicaciones de alto nivel se
construyen.
Características:
– Se mantiene el grado de trasparencia sacrificando la visión de
único sistema. Son sistemas autónomos independientes.
– Se construyen en base a middlewares (CORBA, DCE, DCOM,
...)
– Los sistemas resultan de la integración de múltiples servicios
proporcionados por diferentes elementos de la red.
29. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 29
05/12/2022
Middleware
Middleware:
– Capa de software que ejecuta sobre el sistema operativo local
ofreciendo unos servicios distribuidos estandarizados.
– Sistema abierto independiente del fabricante.
– No depende del hardware y sistema operativo subyacente.
Ejemplos:
– DCE (Open Group).
– CORBA (OMG).
– ...
Hardware
SO
Hardware
SO
Hardware
SO
Middleware
30. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 30
05/12/2022
Mensajes
Un mensaje es una pieza discreta de datos enviada desde una applicación hacia otra.
Mensajes tipicamente contienen headers (metadata) y un body (application payload)
metadata
data Data description
Something happened!
Do something
superset
31. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 31
05/12/2022
Middleware
(middleware orientado a mensajes)
• Mensajes se intercambian entre middlewares
(middleware orientado a mensajes)
– El middleware entiende el formato del mensaje
– No siempre entiende el contenido del mensaje,
en particular el cuerpo.
• Entiende al menos algunos de los metadatos en los
headers
• Middleware es el pegamento(glue) que
combina las aplicaciones de nivel superior.
32. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 32
05/12/2022
Mensajes y Middleware
Machine A Machine B Machine C
Distributed Applications
Middleware Services
OS, e.g.
Windows
OS, e.g.
Mac OS X
OS, e.g.
Linux
Network
messages
33. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 33
05/12/2022
Objetivos de un Sistema Distribuido
En general el desarrollo de sistemas distribuidos
intenta poner solución a los siguientes objetivos:
1. Transparencia.
2. Fiabilidad.
3. Rendimiento.
4. Capacidad de crecimiento.
5. Flexibilidad.
6. Seguridad.
Sistemas operativos distribuidos, sistemas en red y
sistemas cooperativos requieren diferentes facetas
de estos objetivos.
34. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 34
05/12/2022
Transparencia
Existen varios perfiles de trasparencia:
– Acceso: Manera de acceder a recurso local igual que a remoto.
– Posición: Se accede a los recursos sin conocer su localización.
– Migración: Recursos pueden migrar sin afectar a los usuarios.
– Concurrencia: Acceso concurrente no afecta a los usuarios.
– Replicación: La existencia de réplicas no afecta a los usuarios.
– Fallos: La ocurrencia de fallos no afecta a los usuarios.
– Crecimiento: El crecimiento del sistema no afecta a los
usuarios.
– Heterogeneidad:Carácter heterogéneo no afecta a los usuarios.
¿Es buena tanta transparencia?
– A veces el usuario precisa conocer cómo es el sistema
subyacente
1
35. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 35
05/12/2022
Fiabilidad
Fiabilidad como disponibilidad:
– Teóricamente: OR-lógico de sus componentes.
– En ciertos casos: AND-lógico de varios componentes.
– Mecanismos: redundancia y evitar componentes
críticos.
– Tolerancia a fallos: Los componentes pueden no
caerse pero funcionan de forma errónea.
Fiabilidad como coherencia:
– Se dificulta con la redundancia: inconsistencias
La fiabilidad está relacionada con la seguridad (otro
objetivo).
2
36. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 36
05/12/2022
Rendimiento
Rendimiento para un servicio multiusuario:
– Objetivo: Rendimiento no peor que un sistema centralizado
Rendimiento para la ejecución paralela de aplicaciones:
– Objetivo: Rendimiento proporcional a procesadores empleados
Factores:
– Mayor número de procesadores
– Elementos críticos:
• Especialmente la red: Latencia de la comunicación, uso de caches, ...
– Grano de paralelismo (relación proceso/comunicación).
– Replicación de elementos/tareas.
– Equilibrado de carga.
3
37. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 37
05/12/2022
Capacidad de Crecimiento
Diseño de un sistema distribuido debe evitar “cuellos de
botella”:
– Componentes centralizados
– Tablas centralizadas
– Algoritmos centralizados
Problemática agravada por el número de elementos:
– Ninguna máquina tiene información completa del estado
del sistema
– Las decisiones se basan sólo en información disponible
localmente
– El fallo de una máquina no debe invalidar el algoritmo
– No debe asumir la existencia de un reloj global
4
38. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 38
05/12/2022
Flexibilidad(1)
Capacidad para ampliarlo o extenderlo con
nuevas funcionalidades de forma sencilla.
Definición de responsabilidades:
– Sistemas con m-kernel:
• Comunicación entre procesos.
• Cierta administración de memoria.
• Administración y planificación de procesos (limitada y
de bajo nivel).
• Entrada/salida de bajo nivel.
– El resto, servicios a nivel de usuario.
5
39. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 39
05/12/2022
Flexibilidad(2)
Un elemento fundamental de la flexibilidad son los
sistemas abiertos.
El desarrollo de estos sistemas requiere:
– Sus interfaces y protocolos deberían ser públicos.
– Contrario a ”tecnología propietaria”.
– Uso de estándares siempre que sea posible.
– Disponibilidad de su código fuente (libremente o no).
– Regulación por parte de un colectivo (usuarios u
organizaciones) y no por particulares (fabricantes).
40. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 40
05/12/2022
Seguridad
• Un sistema distribuido es inherentemente inseguro.
• Diversas formas de ataque a la seguridad:
– Escucha de mensajes, inyección de mensajes falsos,
retransmisión de mensajes escuchados anteriormente,
suplantación de cliente o servidor, privación de servicio,
etc.
• 2 aspectos:
– Autenticación: verificación de la identidad de un
componente
– Integridad y carácter confidencial de los datos transmitidos
• Solución a ambos basada generalmente en
criptografía
6
41. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 41
05/12/2022
Comunicación en Sistemas
Distribuidos
Permite la interacción entre aplicaciones y servicios
del sistema.
Modelos de comunicación entre procesos:
– Memoria compartida (Sólo uni/multiprocesador no
distribuido).
– Paso de mensajes.
El nivel de abstracción en la comunicación:
– Paso de mensajes puro (Cliente-Servidor).
– Llamadas a procedimientos remotos.
– Modelos de objetos distribuidos.
42. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 42
05/12/2022
Factores de Comunicación
Los diferentes mecanismos de comunicación
se caracterizan por los siguientes factores:
– Rendimiento: Latencia, ratio de transferencia,
ancho de banda, ...
– Escalabilidad: Número de elementos activos.
– Fiabilidad: Pérdida de mensajes.
– Seguridad:Cifrado, certificación, ...
– Movilidad: Equipos móviles.
– Calidad de Servicio (QoS): Reserva y garantía de
anchos de banda.
– Comunicación en grupo: Multicast.
43. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 43
05/12/2022
Niveles de Comunicación
TCP/UDP
Protocolo y
Representación
RMI/RPC
App./Servicios
3) Llamadas a
procedimientos
remotos y objetos
distribuidos.
ATM/Ethernet
Interfaz
y
Lógica de
Comunicación
App./Servicios
2) Funcionalidades de
comunicación de bajo
nivel. Sistemas Operativos
Distribuidos.
TCP/UDP
API (sockets)
Aplicaciones
y
Servicios
1) Paso de
mensajes puro.
Aplicaciones en
red.
44. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 44
05/12/2022
Primitivas de Comunicación
Cada una de las funciones de comunicación de una
tecnología determinada. Las primitivas básicas son:
– Envío: send(destino,mensaje).
– Recepción: receive(fuente,mensaje).
Otras primitivas:
– Conexión: connect(destino).
– Desconexión: close().
Cada una de las primitivas tiene las siguientes
características:
– Boqueantes vs No-bloqueantes.
– Síncronas vs Asíncronas.
– Fiables vs No-fiables.
45. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 45
05/12/2022
Bloqueantes vs. No-bloqueantes
Las características de bloqueo son:
– Primitivas bloqueantes: La operación bloquea al elemento
que la solicita hasta que ésta sea completada.
– Primitivas no-bloqueantes: La operación no detiene la
ejecución del elemento que la solicita.
Las llamadas no bloqueantes tienen distinto sentido
dependiendo de la primitiva que se trate:
– Envío no bloqueante: El emisor almacena el dato en un
buffer del núcleo (que se encarga de su transmisión) y
reanuda su ejecución.
– Recepción no bloqueante: Si hay un dato disponible el
receptor lo lee, en otro caso indica que no había mensaje.
46. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 46
05/12/2022
Sínconas vs. Asíncronas
Esta característica afecta no tanto a la primitiva
como a la transmisión en sí.
– Comunicación síncrona: Envío y recepción se
realizan de forma simultanea.
– Comunicación asíncrona: El envío no requiere
que el receptor este esperando.
La comunicación asíncrona usa un buffer de
almacenamiento.
Implica ciertas condiciones de bloque en envío
y recepción.
47. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 47
05/12/2022
Fiabilidad
El envío fiable de datos garantiza que un
mensaje enviado ha sido recibido por el
receptor.
Implica la retransmisión de mensajes de
validación (ACKs).
La fiabilidad la puede garantizar:
– El protocolo de comunicación (TCP si y UDP no).
– Los elementos emisor y receptor.
48. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 48
05/12/2022
Primitivas de Comunicación
EMISOR
Núcleo
Emisor
RED
RECEPTOR
Núcleo
Receptor
1
2
7
3
6
4
8 5
msg
ACK
• Envío no bloqueante: [1:8] El emisor continua al pasar el mensaje al núcleo.
• Envío bloqueante: [1:2:7:8] El emisor espera a que el núcleo transmita por red el
mensaje.
• Envío bloqueante fiable: [1:2:3:6:7:8]: El emisor espera a que el núcleo receptor
recoge el mensaje.
• Envío bloqueante explícito: [1:2:3:4:5:6:7:8]: Idem al anterior, pero es la aplicación
receptora la que confirma la recepción.
• Petición-Respuesta: [1:2:3:4:<servicio>:5:6:7:8]: El emisor espera a que el receptor
procese la operación para reanudar la ejecución.
49. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 49
05/12/2022
Direccionamiento
Información válida para la identificación de elementos
del sistema. Posibles receptores de un mensaje.
Mecanismos:
– Dirección dependiente de la localización:
• Por ejemplo: dirección máquina + dirección puerto local.
• No proporciona transparencia.
– Dirección independiente de la localización (dir. lógica):
• Facilita transparencia.
• Necesidad de proceso de localización:
– Mediante broadcast.
– Uso de un servidor de localización que mantiene relaciones entre
direcciones lógicas y físicas.
• Uso de cache en clientes para evitar localización.
50. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 50
05/12/2022
Comunicación en Grupo
Se habilita por medio de:
– Variantes de protocolos de red: IP-multicast.
– Emulandola por medio de protocolos de alto nivel o por las
aplicaciones.
El direccionamiento se realiza por medio de una
dirección de grupo (grupo al que pertenecen todos los
receptores).
Modelos de grupos:
– Grupo abierto.
– Grupo abierto controlado.
– Grupo cerrado.
51. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 51
05/12/2022
Comunicación en Grupo
Utilidad para los sistemas distribuidos:
– Ofrecer tolerancia a fallos basado en servicios replicados.
– Localizar objetos en sistemas distribuidos.
– Mejor rendimiento mediante datos replicados.
– Actualizaciones múltiples.
– Operaciones colectivas en cálculo paralelo.
Problemática:
– Comunicación fiable es difícil.
– Escalabilidad de las tecnologías (Internet con MBone).
– Gestión de grupos.
– Encaminamiento (Flooding, Spanning Tree, RPB, TRPB,
RPM).
52. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 52
05/12/2022
Ordenación en Comunicación en
Grupo
De acuerdo a las garantías de ofrecidas en la
recepción de mensajes de grupo se tienen:
– Ordenación FIFO: Los mensajes de una fuente
llegan a cada receptor en el orden que son enviados.
– Ordenación Causal: Los mensajes enviados por dos
emisores distintos so recibidos en el orden relativo en
el que se han enviado.
– Ordenación Total: Todos los mensajes (de varias
fuentes) enviados a un grupo son recibidos en el
mismo orden por todos los elementos.
53. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 53
05/12/2022
Unidad 1: Fundamentos de sistemas
paralelos y distribuidos
• Computación en Paralelo y Computación
Distribuida
• Conceptos de Sistemas distribuidos
• Caracterización de un sistema distribuidos
• Message Exchange Patterns (MEPs)
• Arquitectura de desarrollo de Servicios
• Arquitecturas paralelas
54. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 54
05/12/2022
Características de un Sistema
Distribuido
Definición: [Tan95]
Un sistema distribuido es una colección de
computadoras independientes que aparece ante los
usuarios del sistema como una única computadora.
• Recursos distribuidos para un trabajo común.
• N computadoras
• Un “servicio” único a los usuarios.
Tradicionalmente (1972):
– Clasificación de Flynn: SISD, SIMD, MISD, MIMD
55. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 55
05/12/2022
Características de un Sistema
Distribuido
Un sistema distribuido implica las
siguientes consecuencias:
• No existe un reloj común: Afecta a
cualquier aspecto de coordinación y
mensajes.
• Concurrencia global: Los elementos del
sistema se ejecutan realmente en paralelo.
• Fallos independientes: Los modos de fallo
del sistema pueden ser locales a un
subconjunto de sus componentes.
56. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 56
05/12/2022
Heterogeneidad de un Sistema
Distribuido
Un sistema distribuido puede estar formado por multitud de
elementos conectados por redes LAN o WAN:
– Terminales X y Estaciones Java (Network Computer).
– PCs y estaciones de trabajo.
– Sistemas portátiles (redes móviles: GSM, WAP y ...)
– Minicomputadores.
– Supercomputadores.
– Multiprocesadores con memoria compartida o no.
– Servidores especializados (de almacenamiento, de impresión,
...).
– Sistemas empotrados.
Fomentada por los siguientes factores:
– Extensibilidad de los sistemas distribuidos.
– Especialización de los servidores.
57. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 57
05/12/2022
Componentes de un Sistema
Distribuido
El desarrollo de un sistema distribuido complejo requiere
el uso de las siguientes funciones y servicios:
1. Servicios de comunicación.
2. Sistemas de ficheros y nombrado distribuido.
3. Servicios de sincronización y coordinación.
4. Memoria compartida distribuida.
5. Gestión de procesos.
6. Servicio de seguridad.
Estas funcionalidades se plasman en elementos
concretos del sistema: componentes, protocolos,
algoritmos, soporte hardware/software, ...
58. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 58
05/12/2022
Servicios de Comunicación
• Modelos de interacción:
– Cliente/servidor: (2-niveles, 3-niveles o n-niveles)
– Peer-to-peer: Equilibrio de roles.
– Intermediarios: Proxy, Dispacher, Caches, ...
– Unicast vs Multicast
– Fiabilidad.
– Síncronos vs Asíncronos
• Tecnologías de comunicación:
– Paso de mensajes: Berkeley sockets.
– Llamada a procedimientos remotos: RPC.
– Tecnologías de objetos distribuidos: CORBA, DCOM, EJB
– Código móvil: Entornos de agentes.
1
59. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 59
05/12/2022
Sistemas de Ficheros Distribuidos
Identificación, localización y acceso a elementos del
entorno distribuido.
Comprende:
– Sistemas de ficheros distribuidos (SFD): NFS, AFS.
– Servicios de nombres: DNS, COS-Naming (CORBA).
– Servicios de directorio: X.500, LDAP, JNDI.
Cuestiones:
– Arquitectura de los servicios.
– Almacenamiento intermedio: caching.
– Replicación y coherencia.
2
60. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 60
05/12/2022
Servicios de Sincronización y
Coordinación
• Comprende los conceptos de:
– Tiempo en entornos distribuidos: Sincronización de relojes
y relojes lógicos.
– Concurrencia y Paralelismo: Exclusión mutua e
interbloqueos.
– Algoritmos distribuidos: Elección de líder, coordinación, ...
– Transacciones: Propiedades ACID, modelos de
commit/rollback.
• Afecta a otros servicios:
– Nombrado e identificación.
– Seguridad y fiabilidad.
– Comunicaciones.
– ...
3
61. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 61
05/12/2022
Memoria Compartida Distribuida
(DSM)
Hardware:
– Memoria físicamente compartida.
– Memoria distribuida (lógicamente compartida).
– Acceso uniforme vs acceso no uniforme.
Distributed Shared Memory:
– Basada en páginas.
– Basada en variables compartidas.
– Basada en objetos.
Modelos de consistencia
4
62. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 62
05/12/2022
Gestión de Procesos
• Taxonomía de los procesos:
– Niveles de granularidad.
– Congelación de procesos (persistencia).
– Migración de procesos (estado/código).
• Planificación de procesos:
– Planificación interna: Procesos y threads.
– Planificación global.
– Migración y equilibrado de carga.
– Aprovechamiento de máquinas inactivas.
5
63. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 63
05/12/2022
Servicio de Seguridad
Tipología de los ataques:
– Privacidad y confidencialidad.
– Autenticación (spoofing).
– Denegación de servicio.
Modelos y herramientas de seguridad:
– Cifrado: clave pública (RSA) y privada (DES).
– Protocolos de seguridad: IPsec, SSL.
– Certificados y firmas digitales: X.509.
– Elementos de seguridad: Firewalls.
Entornos seguros: e.g. Kerberos.
6
64. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 64
05/12/2022
Unidad 1: Fundamentos de sistemas
paralelos y distribuidos
• Computación en Paralelo y Computación
Distribuida
• Conceptos de Sistemas distribuidos
• Caracterización de un sistema distribuidos
• Message Exchange Patterns (MEPs)
• Arquitectura de desarrollo de Servicios
• Arquitecturas paralelas
65. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 65
05/12/2022
Message Exchange Patterns (MEPs)
• Los patrones de intercambio de mensajes
(MEP) describen cómo los sistemas
pueden intercomunicarse utilizando
mecanismos entendidos unánimemente.
• A menos que se especifique lo contrario,
los eurodiputados describen patrones
lógicos en lugar de físicos estrictos.
66. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 66
05/12/2022
Message Exchange Patterns (MEPs)
• MEPs lógicos: establecen cómo se intercambian los datos a
nivel conceptual/de casos de uso.
– Por ejemplo, un MEP unidireccional establece que "no hay
respuesta" después de disparar una solicitud. Sin
embargo, si el mensaje se entrega usando, digamos,
HTTP, efectivamente hay alguna forma de respuesta a
nivel de HTTP. Simplemente resulta que no tiene
relevancia para el "caso de uso".
• MEPs físicos: establecen cómo se intercambian físicamente
los datos entre los sistemas informáticos. Dentro de la capa
física, la distinción también varía según la capa elegida.
– Por ejemplo, si consideramos la capa de transporte del
modelo OSI, UDP sería un MEP unidireccional, mientras
que TCP puede admitir el MEP de solicitud/respuesta,
pero en realidad es un flujo bidireccional.
67. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 67
05/12/2022
Message Exchange Patterns (MEPs)
Vistazo general de
los patrones de
intercambio de
mensajes (MEP) más
comunes aplicables a
los dominios
Business Integration
y SOA.
68. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 68
05/12/2022
Message Exchange Patterns (MEPs)
1. Request/Response
2. One-Way
3. Publish/Subscribe (MOM)
4. Request/Call-back
69. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 69
05/12/2022
Solicitud/Respuesta
Request/Response
• El patrón de intercambio de mensajes de
solicitud/respuesta (MEP) es aquel en el que el
consumidor envía una solicitud y espera una
respuesta. Este patrón también puede
denominarse Solicitud/Respuesta, Entrada-Salida
(SOAP) y RPC.
• Un MEP de solicitud/respuesta se puede
implementar de forma síncrona, asíncrona o de
sondeo:
– MEP de solicitud/respuesta síncrona: el consumidor
tiene que esperar hasta que el proveedor pueda
producir una respuesta o realizar un seguimiento de
un flujo de comunicación.
1
70. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 70
05/12/2022
Solicitud/Respuesta
Request/Response
– MEP de solicitud/respuesta asíncrona: el flujo de
control del consumidor se libera justo después de
emitir la solicitud. El proveedor producirá la solicitud
en paralelo y se la entregará al consumidor una vez
que esté lista.
– MEP de solicitud/respuesta de sondeo(Polling): de
manera similar al MEP anterior, el flujo de control de
código del consumidor se libera justo después de
emitir la solicitud, ya que el proveedor producirá la
respuesta de forma asíncrona. Sin embargo, el
consumidor tiene que verificar repetidamente
(sondear) al proveedor hasta que la respuesta esté
disponible.
72. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 72
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
73. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 73
05/12/2022
Synchronous Request/Response MEP
• A menos que se especifique lo contrario, se
supone que el MEP de solicitud/respuesta es
síncrono.
– Esto significa que el consumidor está bloqueado (no
puede reanudar su flujo de código) hasta que el
proveedor pueda generar una respuesta.
• En lenguajes de programación regulares (no
basados en eventos), todas las invocaciones
regulares de métodos/funciones son, por
definición, sincrónicas.
– Es decir, el código de invocación no puede continuar
a menos que el método o función devuelva un
resultado.
75. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 75
05/12/2022
Synchronous Request/Response MEP
• Un aspecto clave del MEP de solicitud/respuesta
síncrona es que tanto el consumidor como el
proveedor deben estar en línea hasta que la
respuesta se transmita completamente al consumidor.
– Cualquier interrupción en el medio puede provocar que los
datos de la transacción se pierdan para siempre.
• Esta es la naturaleza de la mayoría de las
comunicaciones basadas en HTTP y la razón por la
cual el concepto de idempotencia es tan relevante en
estilos arquitectónicos como REST.
• Una invocación a una API síncrona puede ser de
bloqueo de subproceso único, sin bloqueo de
subproceso único o de subprocesos múltiples.
76. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 76
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
77. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 77
05/12/2022
Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
Este es el modo de invocación predeterminado en el que
el flujo del consumidor permanece bloqueado hasta que
se devuelve una respuesta.
A menos que el controlador de E/S admita un
mecanismo de tiempo de espera efectivo, el código del
consumidor se subordina a la latencia del proveedor, así
como a la de su cadena de suministro.
1. rate = provider.getExchangeRate(1.2, "USD","GBP")
2. ...El flujo está atascado aquí ...
3. print "The exchange rate is : " + rate
Ejemplo en Pseudocódigo :
78. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 78
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
79. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 79
05/12/2022
Synchronous Request/Response MEP
b) Non-blocking Single-threaded Invocation
En el caso de una invocación sin bloqueo, el consumidor puede
verificar la disponibilidad de los datos de respuesta de forma interactiva
y obtener datos por fragmentos. Esto proporciona las siguientes
ventajas:
• Se puede implementar fácilmente un mecanismo de tiempo de
espera para abortar el proceso de solicitud/respuesta si excede un
tiempo máximo definido.
• Se pueden ejecutar otras piezas de código mientras se transmiten
la solicitud y las respuestas, por ejemplo, mostrar una barra de
progreso.
1. request = provider.getExchangeRate(1.2,"USD",GBP")
2. while (!request.sendEOF)
3. print "Sending request..."
4. end while
5. while (!request.receiveEOF)
6. print "Receiving response...";
7. end while
8. print "The exchange rate is : " + request.response;
Ejemplo en Pseudocódigo :
80. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 80
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
81. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 81
05/12/2022
Synchronous Request/Response MEP
c) Multi-threaded Invocation
Una invocación de subprocesos múltiples tiene las mismas
ventajas que la invocación sin bloqueo, excepto que el código
del consumidor no necesita interactuar con el objeto de solicitud
o las funciones para realizar un seguimiento de su progreso.
En este caso, el código de invocación se ejecuta como un
proceso paralelo e independiente.
1. define requestThread as Thread
2. rate = provider.getExchangeRate(1.2, "USD","GBP")
3. print "The exchange rate is : " + rate
4. end define
5.
6. run requestThread
7. ... continue flow ...
Ejemplo en Pseudocódigo :
82. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 82
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
83. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 83
05/12/2022
Synchronous Request/Response MEP
d) Asynchronous Request/Response MEP
El MEP de solicitud/respuesta asíncrona es un enfoque para crear un flujo
lógico externo de solicitud/respuesta que, en realidad, se implementa como
una interacción de solicitud/devolución de llamada. Este patrón puede
denominarse "síncrono virtual" o "sincronización con envoltorio asíncrono".
Este patrón es típico en la construcción de servicios web que envuelven
sistemas heredados basados en colas, como los que se basan en la tecnología
IBM WebSphere MQ.
La principal ventaja de este enfoque es que el proceso de envío y recepción de
una solicitud está desacoplado. Esto permite al consumidor realizar otras
actividades entre el intercambio de mensajes.
La desventaja es que puede ser necesario un identificador de correlación y que
el proveedor puede requerir funciones de confiabilidad (como almacenamiento
de mensajes y mecanismos de falla/reintento) ya que el consumidor puede no
estar en línea cuando el proveedor haya terminado de calcular la respuesta.
84. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 84
05/12/2022
Solicitud/Respuesta
Request/Response
d) Asynchronous Request/Response MEP
Ejemplo en Pseudocódigo: no se muestran identificadores de correlación por
simplicidad.
1. define onMessage (response)
2. rate = response
3. end define
4.
5. provider.request.getExchangeRate(1.2, "USD","GBP")
6. provider.callBack = onMessage
7. provider.invoke()
8.
9. while (rate == null)
10.... do something else ...
11.end while
12.
13.print "The exchange rate is : " + rate
Explanation:
Lines 1-3: Define call-back
function onMessage
Lines 5-6: Establish
desired service and
register call-back function
Lines 9-11: Wait until a
response (rate) is
produced.
85. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 85
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
86. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 86
05/12/2022
Polling Request/Response MEP
• Este patrón podría verse como un proceso de dos pasos en
el que el primer paso consiste en el MEP unidireccional y el
segundo en un MEP regular de solicitud/respuesta síncrona.
• A diferencia del MEP de solicitud/respuesta asíncrono, el
proveedor no puede iniciar una solicitud hacia el proveedor;
en cambio, el consumidor tiene que sondear al proveedor
regularmente hasta que haya una respuesta disponible. El
uso de un identificador de correlación es casi obligatorio ya
que el consumidor debe comunicar al proveedor la solicitud
específica en la que está interesado.
Ejemplo en Pseudocódigo :
1. id = provider.requestExchangeRate(1.2, "USD","GBP")
2.
3. while (rate == null)
4. rate = provider.requestExchangeResultForId(id)
5. end while
87. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 87
05/12/2022
Solicitud/Respuesta
Request/Response
• Synchronous Request/Response MEP
a) Blocking Single-threaded Invocation
b) Non-blocking Single-threaded Invocation
c) Multi-threaded Invocation
d) Asynchronous Request/Response MEP
• Polling Request/Response MEP
• Request/Response in SOAP
88. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 88
05/12/2022
Request/Response in SOAP
• Así es como se entiende la Solicitud/Respuesta
MEP en SOAP:
SOAP 1.0 SOAP 1.2 Description
Request/Response In-Out Conventional MEP
Solicit-Response Out-In
The provider becomes
the consumer and vice
versa
n/a In-Optional-Out Optional response
n/a Out-Optional-In
Optional response (the
provider becomes the
consumer)
89. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 89
05/12/2022
Message Exchange Patterns (MEPs)
1. Request/Response
2. One-Way
3. Publish/Subscribe (MOM)
4. Request/Call-back
90. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 90
05/12/2022
One-Way
• El patrón de intercambio de mensajes unidireccionales (MEP)
es aquel en el que el consumidor envía un mensaje único a
un proveedor sin esperar una respuesta. Este patrón también
se puede denominar fire and forget (disparar y olvidar), solo
en entrada (SOAP) y, a veces, basado en cola.
• Un MEP unidireccional puede implementarse de forma
asíncrona, asíncrona/verificable o síncrona/fiable:
– MEP asíncrono unidireccional: la implementación "pura" de
disparar y olvidar del patrón en el que el consumidor no tiene
medios para verificar la llegada del mensaje.
– MEP unidireccional asíncrono/verificable: una variación que
permite al proveedor comunicarse con el consumidor en un
punto determinado para notificar los mensajes que han llegado.
– MEP unidireccional síncrono/confiable: la entrega de un
mensaje unidireccional con un acuse de recibo esperado del
proveedor.
2
92. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 92
05/12/2022
Unidireccionales
One-Way
• Asynchronous One-Way MEP
• Asynchronous One-Way/Verifiable MEP
• Synchronous One-Way/Reliable MEP
• Other Classifications
• One-Way in SOAP
93. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 93
05/12/2022
Asynchronous One-Way MEP
• Esta es la implementación "pura" del patrón fire and
forget en el que el consumidor no tiene medios para
verificar la llegada del mensaje. El patrón rara vez se
implementa de una manera tan cruda a menos que:
– Solo la "llegada estadística(statistical arrival)" es
importante; por ejemplo, un requisito que dice que solo
debe llegar el 80% de los mensajes. Aun así, aún debe
existir un mecanismo de monitoreo para realizar un
seguimiento de los datos estadísticos.
– El mensaje se entrega a través de un mecanismo seguro
que “no suelta mensajes”. En este caso, existe una forma
de middleware que actúa como consumidor real. Tal capa
de middleware estaría, en realidad, siguiendo al MEP
asíncrono/verificable.
Ejemplo en Pseudocódigo :
1. provider.submitExpenses("Slavoj Zizek", 4.50, "Pizza");
2. ... flow continues ...
94. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 94
05/12/2022
Unidireccionales
One-Way
• Asynchronous One-Way MEP
• Asynchronous One-Way/Verifiable MEP
• Synchronous One-Way/Reliable MEP
• Other Classifications
• One-Way in SOAP
95. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 95
05/12/2022
Asynchronous One-Way/Verifiable MEP
• Esta variación todavía tiene la ventaja del aspecto
de fire and forget en el sentido de que el
consumidor no necesita esperar al proveedor por
un acuse de recibo(acknowledgement o ack). Sin
embargo, en algún momento en el futuro, el
proveedor se pondrá en contacto con el
consumidor para notificarle los mensajes que ha
recibido.
• Este esquema permite al consumidor ejecutar un
“proceso de conciliación” y devolver aquellos
mensajes que no hayan sido recibidos por el
proveedor.
96. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 96
05/12/2022
Asynchronous One-Way/Verifiable MEP
Ejemplo en Pseudocódigo :
1. define acknowledge (name)
2. unverified.remove (name)
3. end define
4. define retryUnverified as Thread
5. while (unverified.size > 0)
6. for all (name : unverified)
7. provider.invoke (name)
8. end for all
9. end while
10. end define
11.
12. name = "Zizek"
13. provider.register (
14. name,
15. submitExpenses("Zizek", 4.50, "Pizza")
16. )
17.
18. unverified.add (name)
19. provider.invoke (name)
20.
21. ... do more ...
22. ... receive call backs to acknowledge ...
23.
24. run retryUnverified
Explanation:
•Lines 1-3: Call-back function for the
provider to notify of received messages.
•Lines 4-10: Message retry loop.
•Lines 12-16: Invocation registration (for
future retrial if required).
•Lines 18-19: First one-off invocation.
Notas:
• Se requiere código adicional para decirle al
proveedor que "el consumidor ha recibido el
ack" para que el proveedor no siga insistiendo
en los mismos mensajes ya verificados.
• El subproceso "retryUnverified" idealmente sería
un subproceso de trabajo que se ejecuta
siempre en paralelo. En ciertos diseños no hay
separación entre los eventos de "enviar el
primer mensaje" y "reintentar"; todas las
invocaciones son producidas por el mismo hilo
de trabajo paralelo.
97. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 97
05/12/2022
Unidireccionales
One-Way
• Asynchronous One-Way MEP
• Asynchronous One-Way/Verifiable MEP
• Synchronous One-Way/Reliable MEP
• Other Classifications
• One-Way in SOAP
98. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 98
05/12/2022
Synchronous One-Way/Reliable MEP
• Este es un MEP unidireccional lógico que se
implementa como un MEP físico de
Solicitud/Respuesta con la diferencia de que la
Respuesta solo se usa para confirmar (reconocer)
la llegada del mensaje y/o informar una falla con
él. La Respuesta no está destinada a transportar
"datos comerciales".
• La mayoría de las implementaciones MEP
unidireccionales basadas en HTTP son, de hecho,
de esta variedad. Un desarrollador necesitaría
ignorar la especificación HTTP para hacer que el
proveedor o el consumidor se comporten de una
manera verdadera.
99. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 99
05/12/2022
Synchronous One-Way/Reliable MEP
• Tomemos como ejemplo una llamada de servicio web
HTTP regular:
POST /ws/get HTTP/1.1
Accept: application/json
Content-Length: xxx
Content-Type: application/json
Host: ws.tesira.com
{
"name" : "Zizek",
"amount": 4.5,
"description": "Pizza"
}
Request:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: xxxx
Response:
La respuesta, como tal, es parte de
la especificación HTTP y sirve
como un dispositivo de
reconocimiento predeterminado a
menos que el desarrollador decida
renunciar a ella.
100. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 100
05/12/2022
Unidireccionales
One-Way
• Asynchronous One-Way MEP
• Asynchronous One-Way/Verifiable MEP
• Synchronous One-Way/Reliable MEP
• Other Classifications
• One-Way in SOAP
101. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 101
05/12/2022
Otras clasificaciones
Las variaciones discutidas discriminan el patrón en
función de cómo se reconoce la llegada del
mensaje, si es que se reconoce. Alternativamente, el
MEP unidireccional puede clasificarse según el
número de destinatarios [2005-erl-soa]:
• Single-destination: un solo destino.
• Multi-cast: un conjunto predefinido de destinos.
• Broadcast: todos los destinos de un conjunto
determinado.
102. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 102
05/12/2022
Unidireccionales
One-Way
• Asynchronous One-Way MEP
• Asynchronous One-Way/Verifiable MEP
• Synchronous One-Way/Reliable MEP
• Other Classifications
• One-Way in SOAP
103. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 103
05/12/2022
One-Way en SOAP
• Así se entiende el MEP One-Way en SOAP:
SOAP 1.0 SOAP 1.2 Description
One-Way In-Only Conventional MEP
Notification Out-Only
The provider becomes
the consumer and vice
versa
n/a Robust-In-Only
Similar to
Synchronous/Reliable
One-Way (it may produce
a fault)
n/a Robust-Out-Only
Same as above with
consumer/provider roles
reversed
104. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 104
05/12/2022
Message Exchange Patterns (MEPs)
1. Request/Response
2. One-Way
3. Publish/Subscribe (MOM)
4. Request/Call-back
105. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 105
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• El patrón de intercambio de mensajes de
publicación/suscripción (MEP) es aquel en el que los
consumidores se suscriben con los proveedores para recibir
notificaciones. Este patrón también puede denominarse
Pub/Sub, basado en temas y basado en suscripción.
• Este patrón asume los siguientes roles y entidades:
– Subscribers: el nombre dado a los consumidores que
participan en el intercambio.
– Publishers: el nombre que se le da a los proveedores que
participan en el intercambio.
– Topic: el canal o categoría al que se suscriben los
consumidores y en el que publican los proveedores.
– Subscription: el acto de notificar al proveedor que el
consumidor está interesado en los mensajes publicados
sobre un tema determinado.
3
107. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 107
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• La publicación/suscripción generalmente se implementa
utilizando el MEP unidireccional de manera bidireccional; el
consumidor envía mensajes de suscripción al proveedor y el
proveedor envía mensajes sobre temas específicos al
consumidor.
• Este patrón es similar al patrón Observer.
define onMessage (message)
if message.topic = "X" then
print "I got a new message: " + message.content
end if
end
define provider.register = onMessage
provider.subscribeToTopic("X")
Ejemplo en Pseudocódigo :
108. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 108
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• Filtering
– Consumer-side Filtering
– Provider-side Filtering
• Use of Specific One-Way Patterns
• SOAP
109. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 109
05/12/2022
Filtering
• Los temas no son el único medio por el
cual se agrupan los mensajes.
• El filtrado basado en el contenido se
puede utilizar para discriminar entre
mensajes relevantes e irrelevantes.
• El filtrado puede ser del lado del
consumidor o del lado del proveedor.
110. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 110
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• Filtering
– Consumer-side Filtering
– Provider-side Filtering
• Use of Specific One-Way Patterns
• SOAP
111. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 111
05/12/2022
Consumer-side Filtering
Ventajas
• La ventaja de este enfoque es que
el consumidor puede modificar
fácilmente el tipo de mensajes
que le interesan.
• Por ejemplo, una aplicación móvil
de noticias puede recibir todas las
noticias, pero el usuario puede
seleccionar inicialmente ver
noticias deportivas y
meteorológicas únicamente.
• El usuario puede decidir cambiar
a noticias financieras en un
momento posterior sin necesidad
de obtener nuevos datos del
proveedor, por ejemplo, cuando el
usuario está en el tren
subterráneo sin recepción móvil.
Desventajas
• El filtrado del lado del
consumidor no es
realmente un patrón, sino la
falta del mismo.
• Por lo tanto, evitar el filtrado
del lado del cliente (o la
agrupación estricta por
tema) solo es factible
cuando la cantidad y el
peso esperados de los
mensajes son razonables
en términos de
escalabilidad y restricciones
de ancho de banda.
112. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 112
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• Filtering
– Consumer-side Filtering
– Provider-side Filtering
• Use of Specific One-Way Patterns
• SOAP
113. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 113
05/12/2022
Provider-side Filtering
Ventajas
• El consumidor se libera de
la implementación del
proceso de filtrado.
• El ancho de banda
requerido y la volumetría
asociada solo necesitan
acomodar los mensajes que
son relevantes para el
consumidor.
Desventajas
• El proveedor tiene que
estar configurado a priori
con los filtros necesarios.
Se podría argumentar que
una configuración de filtro
específica sería, en efecto,
un tema.
• Alternativamente, el
consumidor puede enviar
parámetros de filtro de
forma interactiva, pero es
posible que el marco de
mensajería no admita dicha
función de forma nativa.
114. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 114
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• Filtering
– Consumer-side Filtering
– Provider-side Filtering
• Use of Specific One-Way Patterns
• SOAP
115. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 115
05/12/2022
Use of Specific One-Way Patterns
• El MEP de publicación/suscripción generalmente se
implementa utilizando el MEP unidireccional.
• Si se elige el MEP unidireccional asíncrono puro, se
aplican ciertas limitaciones:
One-Way Pattern Activity Limitations
Asynchronous Subscription
The provider may not
receive the subscription
event
Asynchronous New Message
The consumer may miss
out new messages
116. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 116
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
• Filtering
– Consumer-side Filtering
– Provider-side Filtering
• Use of Specific One-Way Patterns
• SOAP
117. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 117
05/12/2022
SOAP
• En SOAP, el MEP de
publicación/suscripción generalmente
cumple con las especificaciones de WS-
Eventing o WS-Notification.
118. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 118
05/12/2022
Message Exchange Patterns (MEPs)
1. Request/Response
2. One-Way
3. Publish/Subscribe (MOM)
4. Request/Call-back
119. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 119
05/12/2022
Request/Call-back
• El patrón de intercambio de mensajes de solicitud/devolución
de llamada (MEP) es aquel en el que el consumidor registra
una función de devolución de llamada con el proveedor.
• El proveedor suele utilizar esta función para notificar al
consumidor cuando se completa la solicitud; sin embargo,
también puede llevar datos adicionales.
• Este patrón es una forma de MEP unidireccional bidireccional
o solicitud/respuesta asincrónica. Lo que lo hace especial es
que el punto final y/o la función que usará el proveedor se
define de manera ad-hoc en tiempo de ejecución en lugar de
definirse por adelantado.
4
define myFunction
print "The food is ready"
end
define provider.cookFood(myFunction)
Ejemplo en Pseudocódigo :
121. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 121
05/12/2022
Unidad 1: Fundamentos de sistemas
paralelos y distribuidos
• Computación en Paralelo y Computación
Distribuida
• Conceptos de Sistemas distribuidos
• Caracterización de un sistema distribuidos
• Message Exchange Patterns (MEPs)
• Arquitectura de desarrollo de Servicios
• Arquitecturas paralelas
122. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 122
05/12/2022
Servicios
• Un servicio puede ser definido como:
– Un componente de software reutilizable de acoplamiento
flexible que encapsula una funcionalidad discreta que
puede ser distribuido y accesible mediante programación.
– Recordar que… “antes que un sistema sea reutilizable, el
mismo debe ser utilizable”
• Una distinción fundamental entre un servicio y un
componente tal como se define en CBSE es que los
servicios son independientes
• Se deben definir:
– las operaciones compatibles con el servicio y el formato
de los mensajes enviados y recibidos por el servicio
– dónde se encuentra y cómo se accede al servicio
123. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 123
05/12/2022
Servicios web
• Un servicio web es una instancia de una noción más
general de un servicio.:
“un acto o ejecución ofrecida por una parte a otra. Aunque
el proceso puede estar vinculado a un producto físico, el
desempeño es esencialmente intangible y normalmente
no resulta en la propiedad de ninguno de los factores de
producción”.
• Un servicio web es un servicio que se accede a través
de protocolos de Internet y basado en XML estándar
• La esencia de un servicio, por tanto, es que la
prestación del servicio es independiente de la
aplicación que utiliza el servicio.
• Los proveedores de servicios pueden desarrollar
servicios especializados y ofrecerlos a una variedad
de usuarios de servicios de diferentes organizaciones.
124. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 124
05/12/2022
Servicios reutilizables
• Los servicios son componentes reutilizables que
son independientes (no requieren interfaz) y están
débilmente acoplados.
• Un servicio web es:
– Un componente de software reutilizable y débilmente
acoplado que encapsula una funcionalidad discreta,
que se puede distribuir y acceder mediante
programación. Un servicio web es un servicio al que
se accede mediante protocolos estándar de Internet y
basados en XML.
• Los servicios son independientes del idioma de
implementación y la plataforma.
125. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 125
05/12/2022
Beneficios del enfoque orientado al servicio
• Los servicios pueden ser ofrecidos por cualquier
proveedor de servicios dentro o fuera de una
organización para que las organizaciones puedan
crear aplicaciones integrando servicios de una
variedad de proveedores.
• El proveedor de servicios hace pública la información
sobre el servicio para que cualquier usuario
autorizado pueda utilizar el servicio.
• Las aplicaciones pueden retrasar la vinculación de
servicios hasta que se implementan o hasta que se
ejecutan. Esto significa que las aplicaciones pueden
ser reactivas y adaptar su funcionamiento para hacer
frente a los cambios en su entorno de ejecución.
126. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 126
05/12/2022
Beneficios del enfoque orientado al servicio
• Es posible la construcción oportunista de nuevos servicios.
Un proveedor de servicios puede reconocer nuevos servicios
que pueden crearse vinculando servicios existentes de
formas innovadoras.
• Los usuarios de servicios pueden pagar los servicios de
acuerdo con su uso en lugar de su prestación. En lugar de
comprar un componente que se usa con poca frecuencia, los
desarrolladores de aplicaciones pueden usar un servicio
externo que se pagará solo cuando sea necesario.
• Las aplicaciones se pueden hacer más pequeñas, lo que es
particularmente importante para dispositivos móviles con
capacidades limitadas de procesamiento y memoria. El
procesamiento computacionalmente intensivo se puede
descargar a servicios externos.
127. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 127
05/12/2022
Escenario de servicios
• Un sistema de información en el automóvil
proporciona a los conductores información sobre
el clima, las condiciones del tráfico en la carretera,
información local, etc. Está vinculado al sistema
de audio del automóvil para que la información se
transmita como una señal en un canal específico.
• El automóvil está equipado con un receptor GPS
para conocer su posición y, en función de esa
posición, el sistema accede a una serie de
servicios de información. La información puede
entregarse en el idioma especificado por el
conductor.
128. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 128
05/12/2022
Un sistema de información en el automóvil
basado en servicios
Inf. del
clima
Inf. de
servicios
públicos
Inf. del tránsito carretero
Servicio de inf. móvil
Coteja información
Localizador
de carreteras
Inf. del
tránsito
Traductor
Descubrimiento de servicio
Encuentra servicios
disponibles
Interfaz de usuario
Recibe petición de
usuario
Transmisor
Envía posición e
información
solicitada a servicios
Sistema de software a bordo de un vehículo
Recibe flujo
de información de
servicios
Receptor
Radio
Traduce flujo de
inf. digital a señal
de radio
Localizador
Ubica la posición del
coche
Flujo de
información
Inf. de
idioma
129. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 129
05/12/2022
Arquitectura de desarrollo de Servicios
• Arquitectura SOA
• Arquitectura Microservicios
• Arquitecturas Cloud
130. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 130
05/12/2022
Arquitectura orientada a Servicios
• Un medio para desarrollar sistemas
distribuidos donde los componentes son
servicios independientes.
• Los servicios pueden ejecutarse en
diferentes computadoras de diferentes
proveedores de servicios
• Se han desarrollado protocolos estándar
para apoyar la comunicación del servicio y
el intercambio de información.
131. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 131
05/12/2022
Servicio
Añadir
Servicio
Sacar
Servicio
Servicio Servicio Servicio
Sistemas de Información
= conjunto de servicios independientes
Modelo de la Empresa
Arquitectura orientada a Servicios
Desarrollo basado en el
dominio, trabaja en capas!
132. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 132
05/12/2022
Arquitectura orientada a Servicios
• El servicio es independiente de las aplicaciones que lo
usan
• Se pueden construir aplicaciones mediante el uso de
distintos servicios
• Hay varios modelos de servicios distintos.
Conceptualmente todos operan de acuerdo al
siguiente modelo:
133. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 133
05/12/2022
Arquitectura orientada a Servicios
Registro
de servicio
Proveedor
del servicio
Solicitante
del servicio
Servicio
(WSDL)
Encontrar Transmitir
Unir (SOAP)
134. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 134
05/12/2022
Arquitectura orientada a Servicios
DB
CCI CCI CCI
ERP CRM
Servicio Servicio Servicio
Registro
1
registrar
Consumidor/Cliente
SOAP SOAP SOAP
XML XML XML
3 invoca
2
Descubrir y/o Unirse
Policies
135. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 135
05/12/2022
Buscar un servicio Web XML
Publicar la URL del servicio Web
XML y su descripción
.disco
.wsdl
Servicio Web
Proxy
Web
Form
UDDI
1
2
3
4
5 6
1
2
3
4
5
Descubrir el servicio Web XML
Localizar la URL del servicio Web XML
Leer la descripción .wsdl
Vincular el servicio Web XML al proxy
Invocar el
servicio Web
XML desde el
formulario
Web Form
Mediante el
proxy
6
136. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 136
05/12/2022
Utilizar proxies para invocar servicios Web XML
◼ Parecen idénticos que la clase original, pero no contienen la lógica
de la aplicación
◼ Utilizan SOAP para interactuar con el servicio Web XML
◼ Se crean desde el archivo NombreServicio.asmx.wsdl
◼ Agregan miembros para gestionar interacciones con el servicio
Web XML o soportar llamadas asíncronas
Internet Servicio
Web XML
Proxy
Web
Form
SOAP
137. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 137
05/12/2022
¿Por qué utilizar los servicios Web XML?
Internet
Servicio Web XML
meteorológico
Servicio Web XML
tipo de cambio
Seleccionar destino:
La previsión
meteorológica es:
El tipo de cambio es:
El billete de avión sólo cuesta:
Lluvia
Redmond
$1.56
$1,999.98
Base de datos de
precios de billetes
Servicio Web XML
precio del billete
Sitio de viajes
Northwind Traders
138. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 138
05/12/2022
Beneficios de SOA
• Los servicios se pueden proporcionar
localmente o subcontratar a proveedores
externos
• Los servicios son independientes del idioma
• La inversión en sistemas heredados se
puede preservar
• La informática interorganizacional se facilita
mediante el intercambio de información
simplificado
139. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 139
05/12/2022
SOA vs Servicios Web
• Con SOA, toda la infraestructura de
tecnologías de la información (TI)
presenta sus funcionalidades como
servicios que ofrecen un claro valor de
negocio
• SOA involucra servicios web
• Pero un servicio web puede ser
utilizado en otro estilo arquitectónico
140. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 140
05/12/2022
Arquitectura de desarrollo de Servicios
• Arquitectura SOA
• Arquitectura Microservicios
• Arquitecturas Cloud
141. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 141
05/12/2022
Microservicios
• Caracterización particular de los Servicios Web
• El concepto de arquitectura microservicio ha surgido
en los últimos años para describir una forma particular
de diseñar aplicaciones de software como suites de
servicios con independencia de despliegue.
• Si bien no existe una definición precisa de este estilo
arquitectónico, hay ciertas características comunes
alrededor de organización en torno a:
– la capacidad del negocio,
– el despliegue automatizado,
– la inteligencia en los puntos finales, y
– el control descentralizado de los lenguajes y los datos.
142. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 142
05/12/2022
Microservicios
• La arquitectura de microservicios
mantiene un sistema similar a un gobierno
descentralizado
• Es decir, cada módulo contará por
ejemplo con su propia base de datos, en
lugar de acudir todos a la misma
sobrecargándola así de solicitudes y
arriesgándonos a que si falla ésta, todas
la aplicación caiga.
143. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 143
05/12/2022
Diferencia entre la arquitectura de
microservicios y SOA
La arquitectura de microservicios es una forma específica de
realizar una arquitectura SOA.
• La idea de SOA, es solamente romper un monolito en
servicios que colaboran, con el beneficio teórico que se pueda
reemplazar la implementación de un servicio de manera
transparente para el resto de la aplicación. Aunque SOA sea
un concepto que exista desde mucho tiempo, la industria
nunca llegó a estandarizar una manera de implementar bien
el SOA.
– Muchos de los problemas relacionados con SOA vienen de los
protocolos de comunicación (SOAP) y de una falta de consenso
sobre la granularidad de los servicios o sobre dónde cortar el
sistema.
• En cambio, la arquitectura de microservicios surgió de uso
real, como una manera bien definida de implementar SOA que
permite evitar sus desventajas más comunes.
144. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 144
05/12/2022
Arquitectura de microservicios
• La arquitectura de microservicios se caracteriza
por modularizar las aplicaciones en muchos
programas diferentes que comunican entre sí,
para en conjunto cumplir con los requerimientos
del sistema.
• Cada microservicio se encarga de implementar un
componente de la aplicación entera.
• Se llaman microservicios, para comunicar la idea
que son muchos servicios pequeños que
conversan.
• Usualmente la comunicación se hace con REST.
145. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 145
05/12/2022
Arquitectura de microservicios
Cada color representa una funcionalidad diferente. En la arquitectura de
microservicios, cada funcionalidad está implementada por un microservicio.
146. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 146
05/12/2022
Arquitectura de microservicios
• La regla de oro de los microservicios, es
que siempre sea posible hacer un cambio a
un microservicio y desplegarlo de manera
independiente, sin afectar el resto de la
aplicación (los otros microservicios).
• Si ese no es el caso y que los microservicios
no son independientes en su ciclo de vida,
quiere decir que están acoplados entre sí y la
mayoría de los beneficios de la arquitectura
se pierden.
147. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 147
05/12/2022
Un ejemplo de uso de microservicios
• Tomando Netflix como ejemplo, podríamos
imaginar que tengan un microservicio
diferente para:
– el sistema de recomendación según lo que miras
– manejar los pagos
– comprimir el vídeo
– encontrar subtítulos según el lenguaje
– etc
• ¡Algunas empresas tienen hasta más
microservicios que empleados!
148. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 148
05/12/2022
Ejemplo de software de comercio
electrónico
• Pensemos en un sitio de comercio electrónico con una
aplicación web y una aplicación móvil que interactúan
con varios microservicios, cada uno de los cuales
proporciona funciones específicas para un dominio.
• Las aplicaciones web modernas se ejecutan en
navegadores y, a menudo, se sirven desde una red de
distribución de contenido (CDN).
– Las CDN proporcionan la ventaja de poder distribuir
aplicaciones web a servidores de todo el mundo, para que
los navegadores web las puedan descargar rápidamente.
– También se utilizan para ofrecer recursos multimedia,
como imágenes, audio y vídeo. Por ejemplo, en este
sistema las imágenes y los vídeos de los productos a la
venta se sirven desde la CDN.
150. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 150
05/12/2022
Ejemplo de software de comercio
electrónico
• Servicio de cuentas
– El servicio de cuentas proporciona información sobre la cuenta
del cliente, como la dirección y la información de pago.
• Servicio de inventario
– Ofrece información de inventario actualizada sobre los bienes
que el cliente puede comprar.
• Servicio de carrito de la compra
– Los clientes lo usan para seleccionar los productos del
inventario que quieren comprar.
• Servicio de pago
– Los clientes lo usan para pagar por los productos que han
añadido al carrito de la compra.
• Servicio de envío
– Programa el embalaje y la entrega de los bienes adquiridos.
151. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 151
05/12/2022
Ejemplo de software de comercio
electrónico
• Las aplicaciones interactúan con los microservicios a
través de las API de REST que publica cada uno de
los microservicios. Una puerta de enlace de API
permite que las aplicaciones se basen en las API
proporcionadas por los microservicios y permite que
se intercambien unos microservicios por otros con la
misma API.
• Cada microservicio se compone de un servicio y una
base de datos. Los servicios gestionan la API de
REST, implementan la lógica empresarial y
almacenan datos en una base de datos. Los recursos
de los distintos microservicios, como bases de datos y
colas, se aíslan siguiendo el contrato de 12 Factor
App.
152. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 152
05/12/2022
Arquitectura de desarrollo de Servicios
• Arquitectura SOA
• Arquitectura Microservicios
• Arquitecturas Cloud
153. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 153
05/12/2022
Arquitectura de nube
• Es la manera en la que los componentes tecnológicos se
combinan para construir una nube, en la que los recursos se
agrupan mediante la tecnología de virtualización y se
comparten en una red.
• Los componentes de una arquitectura de nube incluyen:
– Una plataforma front-end (el cliente o dispositivo utilizado
para acceder a la nube)
– Una plataforma back-end (servidores y almacenamiento)
– Un modelo de distribución basado en la nube
– Una red
• Juntas, estas tecnologías conforman una arquitectura
informática de nube en la que se pueden ejecutar las
aplicaciones, lo que brinda a los usuarios finales la capacidad
de aprovechar el potencial de los recursos de la nube.
155. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 155
05/12/2022
Ventajas de la arquitectura de nube
• La arquitectura de nube permite a las organizaciones
reducir o eliminar su dependencia de las
infraestructuras locales de red, de almacenamiento y
de servidores.
• Las organizaciones que adoptan la arquitectura de
nube suelen trasladar los recursos de TI a la nube
pública. Esto elimina la necesidad de disponer de
servidores y almacenamiento locales, y reduce la
necesidad de espacio físico, refrigeración y
alimentación del centro de datos, que sustituye por un
gasto de TI mensual.
• El paso de un modelo de inversión en capital a uno de
gastos operativos es una de las principales razones
por las que la informática de nube es tan popular en la
actualidad.
157. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 157
05/12/2022
Modelos de arquitectura de nube
• Software como servicio (SaaS): los proveedores se ocupan de la
distribución y el mantenimiento de aplicaciones y software para las
organizaciones a través de Internet. Así, se elimina la necesidad de
que los usuarios finales implementen el software localmente. Se suele
acceder a las aplicaciones SaaS a través de una interfaz web
disponible desde una amplia variedad de dispositivos y sistemas
operativos.
• Plataforma como servicio (PaaS): el proveedor ofrece una plataforma
informática y una pila de soluciones como servicio, que suele incluir
middleware. Las organizaciones pueden aprovechar esa plataforma
para crear una aplicación o un servicio. El proveedor de servicios de
nube proporciona las redes, los servidores y el almacenamiento
necesarios para alojar una aplicación, mientras que el usuario final
supervisa la implementación del software y la configuración.
• Infraestructura como servicio (IaaS): un proveedor externo
proporciona la infraestructura necesaria, con lo que se elimina la
necesidad de que las organizaciones adquieran servidores, redes o
dispositivos de almacenamiento. Por su parte, las organizaciones
gestionan su software y sus aplicaciones, y solo pagan por la
capacidad que necesitan en un momento dado.
159. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 159
05/12/2022
Arquitectura de nube pública
Tipos de arquitectura de nube
• Los recursos informáticos de una nube
pública son propiedad de un proveedor de
servicios de nube, que también los gestiona.
• Estos recursos se comparten y redistribuyen
entre varios clientes a través de Internet.
• Entre las ventajas de la nube pública se
cuentan los costes operativos reducidos, la
escalabilidad sencilla y la escasa o nula
necesidad de mantenimiento.
1
160. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 160
05/12/2022
Arquitectura de nube pública
Tipos de arquitectura de nube
Tenencia múltiple(multi-tenant): Una nube pública está
destinada a servir a varios usuarios, no a un solo cliente. Un
usuario requiere un entorno informático virtual que esté
separado, y probablemente aislado, de otros usuarios.
161. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 161
05/12/2022
Arquitectura de nube privada
Tipos de arquitectura de nube
• Una nube privada es una nube de propiedad y
gestión privada, que generalmente reside en el
propio centro de datos local de la empresa.
• Sin embargo, la nube privada también puede
extenderse para incluir varias ubicaciones de
servidores o espacio arrendado en instalaciones
de co-ubicación geográficamente dispersas.
• Aunque suele ser más cara que las soluciones de
nube pública, la arquitectura de nube privada es
más personalizable y puede ofrecer estrictas
opciones de conformidad y seguridad de datos.
2
162. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 162
05/12/2022
Arquitectura de nube privada
Tipos de arquitectura de nube
163. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 163
05/12/2022
Arquitectura de nube híbrida
Tipos de arquitectura de nube
• Un entorno de nube híbrida aúna combina la
eficiencia operativa de la nube pública y las
prestaciones de seguridad de datos de la
nube privada.
• Al usar arquitecturas de nube pública y
privada, las nubes híbridas ayudan a
consolidar los recursos de TI y permiten a las
organizaciones migrar cargas de trabajo
entre entornos en función de sus requisitos
de TI y de seguridad de los datos.
3
164. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 164
05/12/2022
Arquitectura de nube híbrida
Tipos de arquitectura de nube
165. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 165
05/12/2022
Arquitectura de nube comunitaria
Tipos de arquitectura de nube
• Las nubes comunitarias(multi-nube) son
sistemas distribuidos creados mediante la
integración de los servicios de diferentes
nubes para abordar las necesidades
específicas de una industria, una comunidad
o un sector empresarial.
• En la nube comunitaria, la infraestructura se
comparte entre organizaciones que
comparten preocupaciones o tareas. La nube
puede ser administrada por una organización
o un tercero.
4
166. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 166
05/12/2022
Arquitectura de nube comunitaria
Tipos de arquitectura de nube
167. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 167
05/12/2022
Arquitectura de nube comunitaria
Tipos de arquitectura de nube
Los sectores que utilizan nubes comunitarias son:
1. Industria de los medios: las empresas de medios buscan una forma rápida,
sencilla y de bajo costo para aumentar la eficiencia de la generación de
contenido. La mayoría de las producciones de medios involucran un ecosistema
extenso de socios. En particular, la creación de contenido digital es el resultado
de un proceso colaborativo que incluye el movimiento de grandes datos, tareas
de renderización masivas con uso intensivo de computación y ejecuciones de
flujo de trabajo complejas.
2. Industria de la salud: en la industria de la salud, las nubes comunitarias se
utilizan para compartir información y conocimiento a nivel global con datos
confidenciales en la infraestructura privada.
3. Energía e industria central: en estos sectores, la nube comunitaria se utiliza
para agrupar un conjunto de soluciones que, en conjunto, abordan la
administración, implementación y orquestación de servicios y operaciones.
4. Investigación científica: En esta organización con intereses comunes de la
ciencia compartimos una gran infraestructura distribuida para la computación
científica.
168. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 168
05/12/2022
Unidad 1: Fundamentos de sistemas
paralelos y distribuidos
• Computación en Paralelo y Computación
Distribuida
• Conceptos de Sistemas distribuidos
• Caracterización de un sistema distribuidos
• Message Exchange Patterns (MEPs)
• Arquitectura de desarrollo de Servicios
• Arquitecturas paralelas
170. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 170
05/12/2022
red
de
interconexión
Memoria Compartida
P1 M1
Pn Mn
red
de
interconexión
UMA
(Uniform
Memory
Access)
SMP
NUMA
(Non
Uniform
Memory
Access)
Memoria virtualmente compartida y físicamente distribuida
Memoria Distribuida
red
de
interconexión
P1
M1
Pn
Mn
P1
1
Sun
Digital
IBM SMP
SGI PC
HP Exemplar
CRAY T3x
IBM SP2
Clusters
SGI Origin
2000
Programación vs. escalabilidad
M1
M
Arquitecturas Multiprocesador
171. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 171
05/12/2022
Arquitecturas paralelas
• Arquitectura de memoria compartida -UMA ( Pthreads , Threading
Building Blocks,OpenMP)
• Arquitectura de memoria distribuida NUMA (Máquina Virtual
Paralela (PVM) PARMACS, (MPI))
• Arquitecturas Cluster - GRID - Hibridas (Cluster-Grid ) Ejemplos
SETI@Home,P2P,Bitcoin,CDN
• Arquitecturas basadas en General Purpose GPU (GPGPU) CUDA vs
OpenCL
• Arquitectura Hibrida (CPU y GPU)
• Arquitectura basada en descomposición de Datos
– Descomposición de subdominios (Filas, columnas, bloques)
– Técnicas sharding.
• Arquitecturas Cloud para procesamiento en paralelo: EMR (AWS) -
DATABRICK-dataproc (GCP) - HDInsight Azure
172. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 172
05/12/2022
Propiedad Clave:
Todos los procesadores pueden acceder de forma directa a todas
las posiciones de memoria en el sistema (mecanismo convenien-
te y rápido (?) para la comunicación)
Abstracción de la Comunicación:
Espacio de Direccionamiento Virtual Compartido
Múltiples procesos pueden tener una región de memoria com-
partida proyectada sobre su espacio de direcciones virtual, de
modo que las escrituras de variables residentes en esta región
son visibles para el resto de los procesos.
Arquitecturas de Memoria Compartida
173. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 173
05/12/2022
Espacio de
Direcciones
Privado
Espacio de
Direcciones
Compartido
Direcciones
Físicas
Comunes
Direcciones
Físicas
Diferentes
STORE
LOAD
P0
P1
P2
Pn
La comunicación, compartición y sincronización se hace mediante
operaciones Load/Store de variables compartidas
Modelo de programación agradable (uniprocesador + sincronización)
Una desventaja potencial es la escalabilidad
Espacio de Direcciones Compartido
174. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 174
05/12/2022
Uniform Memory Access (UMA)
(acceso a memoria uniforme)
• La memoria física es compartida uniformemente
por todo procesadores. Todos los procesadores
tienen igual (uniforme) tiempo de acceso a la
memoria.
• Se llama también sistema acoplado hermético
debido al alto grado de compartir recursos.
• La interconexión del sistema toma la forma de un
bús común, un crossbar switch.
• El modelo UMA es satisfactorio para aplicaciones
de propósitos generales y tiempo compartido para
múltiples usuarios.
175. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 175
05/12/2022
Uniform Memory Access (UMA)
(acceso a memoria uniforme)
• En sistemas con UMA, cada procesador
tiene acceso directo a una sola memoria
compartida.
• Todas las ubicaciones de la memoria son
equidistantes (en cuanto a tiempos de
acceso) a cada procesador.
• La mayoría de los sistemas UMA incorpora
caché para eliminar las disputas de la
memoria pero este mecanismo no se ve
desde las aplicaciones.
176. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 176
05/12/2022
Hilos
• Un hilo es un flujo de control individual en un
programa. Ej. Mult.matrices.
for (row = 0; row < n; row++)
for (column = 0; column < n; column++)
c[row][column] =
create_thread(dot_product(get_row(a, row),
get_col(b, col)));
177. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 177
05/12/2022
Hilos o procesos acceden
a memoria compartida
Cada hilo puede tener variables
privadas (stack)
Arquitectura de Hilos
178. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 178
05/12/2022
¿Por qué hilos?
• Portabilidad de software
• Memoria tiene menos latencia (ts=α) que
las redes. Además solo 1 hilo puede usar
la red en un momento dado.
• Scheduling y balance de carga semi-
automático.
• Facilidad de programar.
179. Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 179
05/12/2022
Thread Blocks
• Thread block – un array de threads simultáneos
que ejecutan el mismo programa y pueden
cooperar para calcular el resultado
• Consisten de 1 a 512 threads
• Tienen forma (shape) y dimensiones (1d, 2d or
3d) para threads
• Un thread ID tiene sus correspondientes índices
de 1,2 o 3d
• Cada SM ejecuta hasta ocho bloques de threads
al mismo tiempo (concurrente)
• Los threads de un thread block comparten
memoria