SlideShare ist ein Scribd-Unternehmen logo
1 von 306
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
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.
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
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
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
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.
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
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
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.
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)
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?
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)
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?
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
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.
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)
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
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
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
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
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
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!
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
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.
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.
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
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 >
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.
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
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
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.
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
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.
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
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
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
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
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
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).
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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
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
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.
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.
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, ...
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
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
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
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
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
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
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
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.
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.
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.
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
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
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 71
05/12/2022
Solicitud/Respuesta
Request/Response
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
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 74
05/12/2022
Synchronous Request/Response MEP
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.
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
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 :
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
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 :
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
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 :
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
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.
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.
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
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
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
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)
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
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 91
05/12/2022
One-Way
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
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 ...
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
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.
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.
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
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.
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.
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
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.
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
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
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
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 106
05/12/2022
Publish/Subscribe
(Publicar/Suscribirse)
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 :
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
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.
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
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.
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
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.
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
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
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
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.
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
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 :
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 120
05/12/2022
Request/Call-back
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
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
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.
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.
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.
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.
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.
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 129
05/12/2022
Arquitectura de desarrollo de Servicios
• Arquitectura SOA
• Arquitectura Microservicios
• Arquitecturas Cloud
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.
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!
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:
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)
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
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
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
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
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
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 140
05/12/2022
Arquitectura de desarrollo de Servicios
• Arquitectura SOA
• Arquitectura Microservicios
• Arquitecturas Cloud
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.
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.
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.
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.
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.
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.
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!
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 149
05/12/2022
Ejemplo
de
software
de
comercio
electrónico
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.
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 152
05/12/2022
Arquitectura de desarrollo de Servicios
• Arquitectura SOA
• Arquitectura Microservicios
• Arquitecturas Cloud
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 154
05/12/2022
Arquitectura de nube
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 156
05/12/2022
Modelos de arquitectura de nube
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.
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 158
05/12/2022
Tipos de arquitectura de nube
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
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.
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 162
05/12/2022
Arquitectura de nube privada
Tipos de arquitectura de nube
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 164
05/12/2022
Arquitectura de nube híbrida
Tipos de arquitectura de nube
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 166
05/12/2022
Arquitectura de nube comunitaria
Tipos de arquitectura de nube
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.
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
Aplicaciones Distribuidas Carrera de Software
Ph.D. Franklin Parrales 169
05/12/2022
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
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
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
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
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.
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.
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)));
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
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.
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
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos

Weitere ähnliche Inhalte

Was ist angesagt?

Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
Sergio Sanchez
 
Análisis de Requerimientos
Análisis de RequerimientosAnálisis de Requerimientos
Análisis de Requerimientos
UTPL UTPL
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
Zuleima
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
Miguel Angel Rodriguez
 
Administración de procesos en el S.O.
Administración de procesos en el S.O.Administración de procesos en el S.O.
Administración de procesos en el S.O.
Carlos Solano
 

Was ist angesagt? (20)

Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 
Análisis de Requerimientos
Análisis de RequerimientosAnálisis de Requerimientos
Análisis de Requerimientos
 
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWAREPSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
 
Análisis y especificación de requerimientos
Análisis y especificación de requerimientosAnálisis y especificación de requerimientos
Análisis y especificación de requerimientos
 
IDR Unidad 2: Elicitación de requerimientos
IDR Unidad 2: Elicitación de requerimientosIDR Unidad 2: Elicitación de requerimientos
IDR Unidad 2: Elicitación de requerimientos
 
SO Unidad 3: Administración de memoria y sistemas de archivos
SO Unidad 3: Administración de memoria y sistemas de archivosSO Unidad 3: Administración de memoria y sistemas de archivos
SO Unidad 3: Administración de memoria y sistemas de archivos
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
Paradigmas de ingenieria del software
Paradigmas de ingenieria del softwareParadigmas de ingenieria del software
Paradigmas de ingenieria del software
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMA
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
 
Fundamentos del Diseño de Software
Fundamentos del Diseño de SoftwareFundamentos del Diseño de Software
Fundamentos del Diseño de Software
 
MOD Unidad 3: Modelado y verificación formal
MOD Unidad 3: Modelado y verificación formalMOD Unidad 3: Modelado y verificación formal
MOD Unidad 3: Modelado y verificación formal
 
Gestion de dispositivos de entrada y salida
Gestion de dispositivos de entrada y salidaGestion de dispositivos de entrada y salida
Gestion de dispositivos de entrada y salida
 
IIS Unidad 4 Proyecto de software
IIS Unidad 4 Proyecto de softwareIIS Unidad 4 Proyecto de software
IIS Unidad 4 Proyecto de software
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
 
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacciónIHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 
Arquitectura fisica y logica
Arquitectura fisica y logicaArquitectura fisica y logica
Arquitectura fisica y logica
 
Administración de procesos en el S.O.
Administración de procesos en el S.O.Administración de procesos en el S.O.
Administración de procesos en el S.O.
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
 

Ähnlich wie AD Unidad1: Fundamentos de sistemas paralelos y distribuidos (20)

7984
7984 7984
7984
 
COMPUTACIÓN DISTRIBUIDA Y SU APLICACIÓN TECNOLÓGICA.ppt
COMPUTACIÓN DISTRIBUIDA Y SU APLICACIÓN TECNOLÓGICA.pptCOMPUTACIÓN DISTRIBUIDA Y SU APLICACIÓN TECNOLÓGICA.ppt
COMPUTACIÓN DISTRIBUIDA Y SU APLICACIÓN TECNOLÓGICA.ppt
 
Computo Distribuído
Computo DistribuídoComputo Distribuído
Computo Distribuído
 
Aplicaciones Distribuidas.ppt
Aplicaciones Distribuidas.pptAplicaciones Distribuidas.ppt
Aplicaciones Distribuidas.ppt
 
7984
79847984
7984
 
7984
79847984
7984
 
tema1 clase 1
tema1 clase 1tema1 clase 1
tema1 clase 1
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 
COMPUTACION AVANZADA
COMPUTACION AVANZADACOMPUTACION AVANZADA
COMPUTACION AVANZADA
 
7984
79847984
7984
 
COMPUTACION AVANZADA
COMPUTACION AVANZADACOMPUTACION AVANZADA
COMPUTACION AVANZADA
 
Computación Avanzada
Computación AvanzadaComputación Avanzada
Computación Avanzada
 
Computacion Avanzada
Computacion AvanzadaComputacion Avanzada
Computacion Avanzada
 
7984
79847984
7984
 

Mehr von Franklin Parrales Bravo

Mehr von Franklin Parrales Bravo (20)

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en Cuenca
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería Web
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicua
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelos
 
MOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modeladoMOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modelado
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a Objetos
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y Enrutamiento
 
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
 
RD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y RedesRD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y Redes
 
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventosPOE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
 
POE Unidad 1: Introducción a la programación visual y de eventos
POE Unidad 1: Introducción a la programación visual y de eventosPOE Unidad 1: Introducción a la programación visual y de eventos
POE Unidad 1: Introducción a la programación visual y de eventos
 
SO Unidad 1: Introducción a los Sistemas Operativos
SO Unidad 1: Introducción a los Sistemas OperativosSO Unidad 1: Introducción a los Sistemas Operativos
SO Unidad 1: Introducción a los Sistemas Operativos
 
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosSO Unidad 2: Mecanismos de comunicación y sincronización de procesos
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.
  • 71. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 71 05/12/2022 Solicitud/Respuesta Request/Response
  • 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.
  • 74. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 74 05/12/2022 Synchronous Request/Response MEP
  • 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
  • 91. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 91 05/12/2022 One-Way
  • 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
  • 106. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 106 05/12/2022 Publish/Subscribe (Publicar/Suscribirse)
  • 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 :
  • 120. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 120 05/12/2022 Request/Call-back
  • 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.
  • 149. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 149 05/12/2022 Ejemplo de software de comercio electrónico
  • 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.
  • 154. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 154 05/12/2022 Arquitectura de 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.
  • 156. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 156 05/12/2022 Modelos de arquitectura de nube
  • 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.
  • 158. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 158 05/12/2022 Tipos de arquitectura de nube
  • 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
  • 169. Aplicaciones Distribuidas Carrera de Software Ph.D. Franklin Parrales 169 05/12/2022
  • 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