Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
G2.- Implementación Colas de Mensajería
Los patrones de intercambio de mensajes (MEP) describen cómo los sistemas pueden intercomunicarse utilizando mecanismos entendidos por unanimidad. A menos que se especifique lo contrario, los MEPs describen patrones lógicos en lugar de estrictos físicos:
MEPs Lógicos
Establecen cómo se intercambian los datos a nivel conceptual / caso de uso.
MEPs Físicos
Establecen cómo los sistemas informáticos intercambian físicamente los datos. Dentro de la capa física, la distinción también varía según la capa elegida.
Este es un resumen de los patrones más comunes:
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 utiliza normalmente dicha función para notificar al consumidor cuando se completa la solicitud; sin embargo, también puede llevar datos adicionales.
Request/Call-back
Este patrón es una forma de MEP bidireccional unidireccional o solicitud / respuesta asincrónica. Lo que lo hace especial es que el punto final y / o la función que utilizará el proveedor se definen de manera ad-hoc en tiempo de ejecución en lugar de definirse de antemano.
Ejemplo de Pseudocòdigo:
define myFunction
print "The food is ready"
end define
provider.cookFood(myFunction)
Un protocolo de comunicaciones es el conjunto de reglas y estándares que tienen como fin controlar las secuencias de los mensajes que suceden durante la comunicación entre las entidades que forman parte de una misma red.
es un broker de mensajería asíncrona de alto rendimiento, Su forma de transmisión implementa colas de mensajes. ZeroMQ ofrece una biblioteca central que funciona muy bien debido a su modelo de subprocesamiento interno, y puede superar las aplicaciones TCP convencionales en términos de rendimiento mediante el uso de una técnica de procesamiento automático de mensajes.
es un broker de mensajería que implementa colas de mensajería que se comunican entre ellas para la transmisión de mensajes. Es liviano y fácil de implementar. Es compatible con múltiples protocolos de mensajería y se implementa en configuraciones distribuidas para cumplir con los requisitos de alta disponibilidad y alta escala. RabbitMQ se ejecuta en muchos sistemas operativos y proporciona una amplia gama de herramientas de desarrollo para la mayoría de lenguajes. Dentro de sus características se encuentra la
17 mensajería asincrónica, que se refiere a que admite múltiples protocolos de mensajería, colas de mensajes, acuse de recibo, enrutamiento flexible para colas y tipo de intercambio múltiple.
es un broker de mensajería que proporciona una plataforma unificada, de alto rendimiento y de baja latencia para la manipulación en tiempo real de datos. Puede verse como una cola de mensajes, bajo el patrón publicación-suscripción, masivamente escalable concebida como un registro de transacciones distribuidas. Kafka generalmente se usa para dos clases de aplicaciones: 1. Canales de transmisión de datos en tiempo real entre sistemas o aplicaciones, que ofrecen una entrega de paquetes confiable. 2. Aplicaciones de transmisión en tiempo real que responden a flujos de datos.
es un proyecto de middleware orientado a mensajes de código abierto de Oracle que implementa Java Message Service 2.0 API.
OpenMQ proporciona funciones empresariales adicionales que incluyen la agrupación en clúster para la escalabilidad y la alta disponibilidad.
Apache ActiveMQ es el servidor de mensajes de fuente abierta y de patrones de integración popular y potente, es rápido, compatible con muchos clientes y protocolos de idiomas cruzados, utiliza patrones de integración empresarial fáciles de emplear y muchas características avanzadas. Es compatible con JMS 1.1 y J2EE 1.4. y trabaja bajo la licencia de Apache 2.0.
Brokers
Un bróker de mensajería es un patrón arquitectónico para la validación, la transformación y el ruteo de mensajes. Es un mecanismo mediador de la comunicación entre aplicaciones, permitiendo minimizar el grado de conocimiento mutuo que estas aplicaciones necesitan tener, para poder intercambiar mensajes, implementando así efectivamente su desacoplamiento.
Un bróker de mensajería es un patrón arquitectónico para la validación, la transformación y el ruteo de mensajes. El propósito del bróker es recibir los mensajes entrantes desde las aplicaciones y llevar a cabo determinadas acciones con ellas.
• Rutear mensajes a una o más destinaciones distintas
• Transformar mensajes a una representación alternativa
• Realizar una agregación de mensajes, descomponer mensajes en varios mensajes componentes, reenviándolos a sus respectivos destinos, para posteriormente recomponer las respuestas en un único mensaje que será remitido al usuario
• Interactuar con un depósito externo para aumentar un mensaje o almacenarlo
• Invocar un servicio Web para consultar datos
Qué es RabbitMQ?
RabbitMQ es un broker de mensajería de código abierto, distribuido y escalable, que sirve como intermediario para la comunicación eficiente entre productores y consumidores.
Exchange
Este componente es el encargado de recibir los mensajes enviados al broker por un productor y depositarlos en la cola adecuada de acuerdo a una llave de enrutamiento (routing key). Esto significa que el productor no envía los mensajes directamente a la cola, sino que los envía a un exchange con una llave de enrutamiento.
Routing Key
Es la llave que utiliza el exchange para saber a donde enrutar un mensaje, y a su vez es la misma que usa la cola para asociarse con un exchange.
Cola
Es el componente que guarda los mensajes provenientes de los exchange y los envía a los consumidores que están escuchando por estos mensajes.
Binding
Es la asociación entre una cola y un exchange a través de una llave de enrutamiento.
Virtual Host
División lógica de los componentes de servidor de RabbitMQ en la cual estos se agrupan para simplificar su administración y control. Debemos tener en cuenta que no pueden existir colas con el mismo nombre en un mismo virtual host, pero sí en diferentes virtual host
Un Topic es una categoría o un nombre donde publicar los mensajes. Cada Topic los mantiene en un log particionado, cuya representación es la siguiente:
Cada partición es una secuencia de mensajes inalterable, donde los mensajes son añadidos a una de las particiones según van llegando, y se les va asignando un número secuencial, llamado offset, que identifica de forma única a cada mensaje dentro de su partición.
Productores
Responsables de publicar mensajes a uno o varios Topics. Un mensaje es enviado cada vez a una de las particiones del Topic en round-robin o siguiendo un criterio definido, como puede ser por algún tipo de algoritmo basado en una clave del mensaje.
Consumidores
Kafka proporciona un único nivel de abstración donde recoge el modelo de mensajería de queuing (colas) y publish-subscribe (editor-subscriptor). Este nivel de abstracción es llamado consumer group o grupo consumidor.
Los consumidores se inscriben o subscriben a un grupo consumidor. Un grupo consumidor tendrá 1 a ‘n’ consumidores.
Cada mensaje publicado en un topic es entregado solamente a uno de todos los consumidores que pertenecen a un mismo grupo consumidor. De esta forma conseguimos la funcionalidad de un sistema de mensajería de colas.
En el caso de que existan varios grupos de consumidores subscritos a un mismo topic, cada mensaje publicado en un topic es entregado a todos los grupos consumidores, y dentro de cada grupo consumidor a un solo consumidor. Esta es una de las formas de conseguir el modelo editor-subscriptor.
Si todos los consumidores tienen diferente grupo consumidor, cada mensaje es enviado a todos los consumidores. Es el modelo editor-subcriptor
Si todos los consumidores tienen el mismo grupo consumidor cada mensaje es enviado a solo un consumidor del grupo de consumidores. Es el modelo de colas.
ZooKeeper, es un servicio para coordinar procesos de aplicaciones distribuidas. Históricamente, los procesos distribuidos se coordinan mediante mensajes grupales, registros compartidos o servicios de bloqueo distribuido. ZooKeeper incorpora elementos de todos estos servidores, pero los incorpora en un servicio centralizado. Con ZooKeeper, las aplicaciones manipulan nodos para coordinar las acciones de sus procesos de manera similar a como se manipulan los archivos y directorios en un sistema de archivos. En tales nodos, las aplicaciones de usuario almacenan datos directamente en nodos, o simplemente usan nombres de nodos para indicar algún evento de la aplicación.
El término clúster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de hardwares comunes y que se comportan como si fuesen una única computadora.
Simplemente, un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. Los clústeres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.
CLUSTER
CLUSTERS DE ALTO RENDIMIENTO (HPCC - High Performance Computing Clusters):
Son clústeres en los cuales se ejecutan tareas que requieren de gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez. El llevar a cabo estas tareas puede comprometer los recursos del clúster por largos periodos de tiempo.
CLUSTERS DE ALTA DISPONIBILIDAD (HA o HACC - High Availability Computing Clusters):
Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita tener un único punto de fallos.
CLUSTERS DE ALTA EFICIENCIA (HT o HTCC - High Throughput Computing Clusters):
Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clúster no es considerado un gran problema.
• Configuración de temas
La configuración con respecto a todos los temas, incluida la lista de temas existentes, el número de particiones para cada tema, la ubicación de todas las réplicas, la lista de anulaciones de configuración para todos los temas y qué nodo es el líder preferido, etc.
• Listas de control de acceso
Las listas de control de acceso para todos los temas también se mantienen dentro de Zookeeper.
• Membresía del grupo
Zookeeper también mantiene una lista de todos los corredores que están funcionando en un momento dado y son parte del clúster.
Tenga en cuenta que no puede ejecutar los servicios de Kafka sin instalar primero Zookeeper. Sin embargo, Zookeeper ya está instalado y configurado para su clúster CloudKarafka.
Kafka proporciona el valor predeterminado y un simple archivo de configuración de ZooKeeper que se utiliza para lanzar una sola instancia local de ZooKeeper, aunque también se puede realizar una instalación separada de ZooKeeper al configurar el clúster de Kafka.
Para configurar múltiples intermediarios en un solo nodo, se requieren diferentes archivos de propiedades del servidor para cada intermediario. Cada archivo de propiedades definirá valores únicos y diferentes para las siguientes propiedades:
El clúster Kafka de intermediario múltiple, donde configuramos varios intermediarios en cada nodo, debemos instalar Kafka en cada nodo del clúster y todos los corredores de los diferentes nodos deben conectarse al mismo ZooKeeper.
Para fines de prueba, todos los comandos seguirán siendo idénticos a los que usamos en el nodo único: clúster de varios corredores.
Antes del procesamiento de flujo: una infraestructura de datos en reposo
Es el procesamiento de datos en movimiento , o en otras palabras, el cálculo de datos directamente a medida que se producen o reciben.
Una infraestructura de procesamiento de flujo
Procesamiento de flujo con estado
Amazon Web Services (AWS) proporciona varias opciones de trabajo con los datos de streaming. Puede utilizar los servicios de datos de streaming gestionados de Amazon Kinesis
• Apache Kafka
• Apache Flume
• Apache Spark Streaming
• Apache Storm
Streaming Processing en Apache Kafka
Arquitectura de conexión de Apache Kafka
Streaming Processing en Apache Kafka
Las colas de mensajes (MQ) solucionan estas necesidades, actuando de intermediario entre emisores y destinatarios, o en un contexto más definido, productores y consumidores de mensajes. Se pueden usar para reducir las cargas y los tiempos de entrega por parte de los servidores de aplicaciones web, ya que las tareas, que normalmente tardarían bastante tiempo en procesarse, se pueden delegar a un tercero cuyo único trabajo es realizarlas.
COLAS DE TRABAJO
Productor: crea los mensajes
Intercambiador: entrega los mensajes
Cola: almacena los mensajes
Consumidor: procesa el mensaje
- Este patron envia mensaje a muchos consumidores a la vez.
- Archivos javascrip:
--Programa productor emit_log.js
--Programa consumidor receive_logs.js
DEMOSTRACION