Ingeniería de Software – Ingeniería de Sistemas1 Ingeniería de software.
Ingeniería del software II
description
Transcript of Ingeniería del software II
IS II Sistemas Distribuidos 1
Ingeniería del software II
Middleware Orientado a Mensajes JMS
IS II Sistemas Distribuidos 2
¿Que es MOM? Un ejemplo de sistema de mensajería que
todos conocemos es el e-mail. El e-mail es un sistema de comunicación persona-persona mientras que los MOM’s tratan de comunicaciones aplicación-aplicación.
Estos sistemas permiten que las aplicaciones intercambien información en forma de mensajes, un mensaje esta compuesto por: Cabeceras datos
IS II Sistemas Distribuidos 3
¿Que es MOM? Los MOM’s aseguran que los
mensajes son distribuidos adecuadamente entre las distintas aplicaciones, por lo general suelen proporcionar otras características importantes como: Tolerancia a fallos Transacciones Escalabilidad
IS II Sistemas Distribuidos 4
¿Que es MOM? En un MOM las aplicaciones intercambian
mensajes a través de canales virtuales: destinations
Cuando se envía un mensaje no se envía a una aplicación concreta sino a un determinado destination
Las aplicaciones receptoras de los mensajes deben registrar su interés por recibir los mensajes dirigidos a un destination
IS II Sistemas Distribuidos 5
¿Que es MOM? En un MOM los mensajes son enviados
de forma asíncrona. El encargado de enviar el mensaje no
tiene que esperar una respuesta, envía el mensaje y sigue procesando.
Los mensajes son tratados como unidades auto-contenidas. Contienen todos los datos necesarios para que puedan ser procesados.
IS II Sistemas Distribuidos 6
Arquitectura de un MOM Las distintas implementaciones actuales
de MOM están basadas en diferentes arquitecturas, desde arquitecturas con un servidor de mensajes centralizado a arquitecturas descentralizadas que distribuyen el proceso entre los clientes.
Un sistema de mensajería esta compuesto por los clientes y el propio MOM. Un cliente es cualquier aplicación que envié o reciba mensajes del MOM.
IS II Sistemas Distribuidos 7
Arquitectura Centralizada
IS II Sistemas Distribuidos 8
Arquitectura distribuida Las arquitecturas distribuidas usan
IP Multicast para distribuir los mensajes.
IS II Sistemas Distribuidos 9
Implementaciones de MOM Los siguientes productos son ejemplos
de distintas implementaciones de un sistema MOM: IBM: MQSeries Progress: SonicMQ Fiorano: FioranoMQ Softwired: iBus Sun Microsystems: Java Message Queue BEA: WebLogic Server ExoLab:OpenJMS
IS II Sistemas Distribuidos 10
Java Message Service JMS es un API estándar de la plataforma
java para construir aplicaciones que utilicen sistemas de mensajería.
JMS no es un sistema de mensajería, es un conjunto de las clases y interfaces que necesita un cliente para comunicarse con un sistema de mensajería.
De forma análoga a como el API JDBC permite acceder a diferentes bases de datos JMS permite acceder a diferentes sistemas de mensajería.
IS II Sistemas Distribuidos 11
Java Message Service Gracias a JMS se puede construir
aplicaciones portables entre distintos MOM’s.
La gran mayoría de implementaciones de MOM soportan el API JMS, lo que en la practica permite construir aplicaciones que usen un paradigma de comunicación basado en mensajes independientemente del producto MOM concreto que se use.
IS II Sistemas Distribuidos 12
JMS: Messaging Models JMS nos proporciona dos modelos distintos
de mensajería: publicación/subscripción abreviadamente
"pub/sub” comunicación punto a punto abreviadamente
"p2p“ Como primera aproximación: el modelo
publicación/subscripción está pensado para una comunicación "uno a muchos" mientras que el modelo punto a punto lo está para comunicaciones "uno a uno".
IS II Sistemas Distribuidos 13
JMS: Modelo pub/sub
IS II Sistemas Distribuidos 14
JMS: Modelo pub/sub En el modelo pub/sub un productor envía
un mensaje a un canal virtual llamado tópico.
Los consumidores pueden subscribirse a dicho tópico, con lo que recibirían una copia del mensaje.
Todos los mensajes enviados a un tópico son entregados a todos los receptores.
En este modelo se conoce al productor como publicador y al consumidor como subscriptor.
IS II Sistemas Distribuidos 15
JMS: Modelo p2p
IS II Sistemas Distribuidos 16
JMS: Modelo p2p Los clientes JMS envían mensajes a través de
canales virtuales llamados colas. Aquí se conoce a los productores como
emisores y a los consumidores como receptores.
En este modelo los receptores chequean la cola para ver si han recibido algún mensaje.
En una cola puede haber más de un receptor esperando mensajes, aunque solamente uno de ellos va a consumir cada mensaje
IS II Sistemas Distribuidos 17
JMS: Modelo p2p La especificación no define las reglas
que deben seguirse para la distribución de los mensajes entre los receptores, así que cada fabricante realiza su propia implementación.
Este modelo ofrece un explorador de colas mediante el cual el receptor es capaz de examinar los mensajes pendientes antes de consumirlos
IS II Sistemas Distribuidos 18
JMS: Anatomía de mensajes Un mensaje esta compuesto por 3
partes: Cabeceras Propiedaes datos
IS II Sistemas Distribuidos 19
JMS: Anatomía de mensajes Cabeceras (Headers)
Todos los mensajes JMS tienen una serie de cabeceras estándar.
Existen dos tipos de cabeceras: Las que se asignan automáticamente, ej:
JMSMessageID, JMSTimeStamp Las asignadas por el usuario del API:
JMSReplyTo, JMSCorrelationID y JMSType
IS II Sistemas Distribuidos 20
JMS: Anatomía de mensajes Propiedades
Son propiedades definidas por el usuario que pueden servir para posteriormente filtrar los mensajes que recibe un destinatario.
Ejemplo: en un programa de chat podríamos definir las siguientes propiedades:
Usuario: con el nombre del usuario que enviá el mensaje
Destinatario: podría llevar el nombre de un destinario para enviar mensajes privados o “todos” en caso de que sea un mensaje que se envíe a todo el mundo.
IS II Sistemas Distribuidos 21
JMS: Message Selectors El subscribirse a un tópico o cola puedo
indicar un Message Selector para filtrar los mensajes que voy a recibir en función de sus atributos, estos selectores son expresiones booleanas. Ejemplo: con los dos atributos que hemos
definido para el char podriamos crear un selector como:
Destinatario = “mi_nombre_usuario” or Destinatario = “todos”
Con este selector recibiría los mensajes para todo el mundo y los dirigidos a mi en exclusiva, además no recibiremos los mensajes privados dirigidos a otros usuarios.
IS II Sistemas Distribuidos 22
JMS: Anatomía de mensajes Datos (Payload)
Dentro de JMS se definen 6 tipos de mensajes en función del tipo de datos que pueden contener:
Message TextMessage ObjectMessage BytesMessage MapMessage StreamMessage