RocketMQ [1] es una plataforma de transmisión y mensajería distribuida con baja latencia, alto rendimiento y confiabilidad, capacidad de un billón y escalabilidad flexible. Es el middleware de mensajería distribuida de tercera generación de código abierto de Alibaba en 2012. El 21 de noviembre de 2016, Alibaba donó RocketMQ a la Apache Software Foundation . El próximo año, el 20 de febrero, Apache Software Foundation anunció Apache RocketMQ como un proyecto de nivel superior.
Desarrollador (es) | Fundación de software Apache |
---|---|
Versión inicial | 2012 |
Lanzamiento estable | 4.5.2 / 1 de agosto de 2019 |
Repositorio | Repositorio RocketMQ |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Procesamiento de secuencias , intermediario de mensajes |
Licencia | Licencia Apache 2.0 |
Sitio web | rocketmq |
Historia
El desarrollo de RocketMQ se puede dividir en tres etapas. [2]
La primera generación utiliza el modo push en el transporte de datos y la base de datos relacional en el almacenamiento de datos. Muestra baja latencia en la entrega de mensajes y cumple con el comando de una plataforma de comercio electrónico típica [3] con transacciones distribuidas.
La segunda generación utiliza el modo de extracción en el transporte de datos y el sistema de archivos en el almacenamiento de datos. Prestó más atención a la estabilidad y confiabilidad, y muestra un desempeño comparable al de la primera generación en el tiempo de respuesta y Kafka en la recolección de registros.
La tercera generación combina el modo Pull con algunas operaciones Push. Hereda las ventajas de la primera y segunda generación, y muestra un alto rendimiento en escenarios de concurrencia y cantidades masivas de datos.
Características
Se han realizado muchas comparaciones entre las diversas soluciones de mensajería y es ampliamente conocido que cuando el número de temas aumenta drásticamente, el rendimiento de RocketMQ se redujo mucho menos que el de Kafka. [4] Debido a las características de alto rendimiento, alta confiabilidad y alta capacidad en tiempo real, se han realizado cada vez más esfuerzos para combinar RocketMQ y otros componentes de protocolo en todo tipo de escenarios de mensajería como MQTT. [5]
SDK de cliente | Protocolo y especificación | Mensaje ordenado | Mensaje programado | Mensaje por lotes | Mensaje de difusión | Filtro de mensajes | Reenvío activado por servidor |
---|---|---|---|---|---|---|---|
Java, C / C ++, Python, Go, Nodejs | Modelo de extracción, soporte TCP, JMS, OpenMessaging | Garantiza un orden estricto de los mensajes y puede escalar horizontalmente con elegancia | Soportado | Compatible, con modo de sincronización para evitar la pérdida de mensajes | Soportado | Expresiones de filtro de propiedad admitidas basadas en SQL92 | Soportado |
Almacenamiento de mensajes | Mensaje retroactivo | Prioridad de mensaje | Alta disponibilidad y conmutación por error | Pista de mensajes | Configuración | ||
Almacenamiento de archivos de alto rendimiento y baja latencia | La marca de tiempo admitida y el desplazamiento dos indican | No soportado | Modelo maestro-esclavo compatible, sin otro kit | Soportado | Trabaje de inmediato, el usuario solo debe prestar atención a algunas configuraciones |
Arquitectura
RocketMQ consta de cuatro partes: servidores de nombres, corredores, productores y consumidores. Cada uno de ellos se puede extender horizontalmente sin un solo punto de falla. Como se muestra en la imagen de la izquierda.
Clúster de servidor de nombres
El componente liviano para el descubrimiento de servicios y se puede usar para leer y escribir información de enrutamiento. Cada uno registra información global y admite una rápida expansión del almacenamiento.
Clúster de corredores
Utilizan mecanismos ligeros de TEMA y COLA para administrar el almacenamiento de datos. Para lograr la tolerancia a fallas, se proporcionan dos copias o tres copias de los datos. Y el cliente puede recibir un mensaje en el modelo Push and Pull. Además, también se admiten la recuperación ante desastres y las estadísticas de métricas enriquecidas.
Grupo de productores
Los productores se pueden distribuir, implementar y los mensajes de los productores a los intermediarios se pueden equilibrar a través de múltiples rutas. Además, se admiten fallas rápidas y baja latencia.
Clúster de consumidores
Los consumidores también se pueden distribuir implementados en el modelo push and pull, y pueden suscribirse mensajes en tiempo real, consumir mensajes en la unidad de clúster. También se admite la transmisión de mensajes.
Aplicaciones
Hay al menos cinco aspectos con los que Apache RocketMQ podría relacionarse:
- La integración de sistemas heterogéneos ;
- Desacoplamiento entre aplicaciones;
- Espina dorsal en el mecanismo impulsado por eventos y el modelo de arquitectura de eventos complejos;
- Canales de replicación de datos;
- Integración con motor de cálculo de caudal;
- Acceso a datos de flujo.
Mantenimiento de la comunidad
El equipo de RocketMQ ha hecho mucho para activar la comunidad. Con regularidad se llevan a cabo reuniones, talleres, ApacheCon y Code Marathon en BeiJing, ShenZhen, HangZhou para atraer nuevos contribuyentes y comprometidos. Las suites de evaluación comparativa de OpenMessaging están actualmente disponibles para RocketMQ y hacen que RocketMQ mantenga el ritmo con el estándar global para mensajería distribuida. [6] En cuanto a la gestión de versiones, se adoptan una serie de procesos de desarrollo de software estandarizados. La última versión es 4.2.0 y la 4.3.0 está en camino. Puede obtener más información aquí .
Premios
Premio al software de código abierto más popular de China 2016
Premio al software de código abierto más popular de China 2017
16o premio de tecnología destacada de software de código abierto CJK (China-Japón-Corea del Sur)
Premio al software de código abierto más popular de China 2018
Premio al software de código abierto más popular de China de 2019
Ver también
- Apache ActiveMQ
- Apache Flink
- Apache Qpid
- Apache Samza
- Transmisión de Apache Spark
- Servicio de distribución de datos
- Patrones de integración empresarial
- Sistema de mensajería empresarial
- Análisis de transmisión
- SOA impulsada por eventos
- Middleware orientado a mensajes
- Arquitectura orientada a Servicios
- StormMQ
- Apache Kafka
Referencias
- ^ "apache / rocketmq" . GitHub . Consultado el 25 de mayo de 2018 .
- ^ "De Alibaba a Apache: pasado, presente y futuro de RocketMQ" . InfoQ . Consultado el 26 de junio de 2018 .
- ^ Liao, Jianwei; Zhuang, Xiaodan; Fan, Renyi; Peng, Xiaoning (2017). "Hacia un marco general de mensajería distribuida para aplicaciones de procesamiento de transacciones en línea" . Acceso IEEE . 5 : 18166–18178. doi : 10.1109 / ACCESS.2017.2717930 .
- ^ Cloud, Alibaba (4 de enero de 2018). "Kafka vs RocketMQ-resultados de la prueba de estrés de varios temas" . Medio . Consultado el 8 de julio de 2018 .
- ^ Yue, Ma; Ruiyang, Yan; Jianwei, Sun; Kaifeng, Yao (2017). "Un servidor de envío de mensajes de protocolo MQTT basado en RocketMQ". 2017 X Congreso Internacional de Tecnología y Automatización de Computación Inteligente (ICICTA) . págs. 295-298. doi : 10.1109 / ICICTA.2017.72 . ISBN 978-1-5386-1230-9.
- ^ "El marco de referencia de OpenMessaging" . openmessaging.cloud . Consultado el 8 de julio de 2018 .
enlaces externos
- Sitio web de Apache RocketMQ
- Externos de Apache RocketMQ
- Un servidor de envío de mensajes de protocolo MQTT basado en RocketMQ