Cómo elegir el middleware de mensajería de código abierto adecuado
Hay tres opciones para elegir:
1. ActiveMQ/ApolloMQ
Ventajas: Cola de mensajes antigua, escrita en lenguaje Java. Tiene el mejor soporte para JMS, utiliza concurrencia de subprocesos múltiples y consume recursos relativamente grandes. Si tu idioma principal es Java, puedes concentrarte en él.
Desventajas: Debido a su larga historia y su gran bagaje histórico, las actualizaciones de versiones son muy lentas. El modo de clúster debe depender de la implementación de Zookeeper. El último producto de arquitectura se llama Apollo, conocido como la próxima generación de ActiveMQ, y actualmente hay pocos casos.
2. RocketMQ/Kafka
Ventajas: Diseñado específicamente para la entrega masiva de mensajes, recomienda el uso del modo pull y tiene soporte natural de clúster, HA y equilibrio de carga. Se dice lo mismo, si es adecuado depende de si tienes una cantidad tan grande.
Desventajas: se dice que no puedes quedarte con el pastel y comértelo también. Renuncia a cierta flexibilidad del middleware de mensajes y los escenarios de uso son limitados. Debes prestar atención a si tu modelo de negocio lo es. adecuado, de lo contrario será incómodo usarlo disfrazado. Además, RocketMQ no tiene un cliente .NET disponible. RocketMQ es muy conocido, pero no tiene muchos usuarios y un ecosistema pequeño. Después de todo, no hay muchas empresas con tal volumen de mensajes. También puede comprar directamente los servicios de mensajería de Alibaba Cloud. Kafka tiene un ecosistema completo. Su código está escrito en lenguaje Scala y su confiabilidad es menor que la de RocketMQ.
3. RabbitMQ
Ventajas: ecología rica, muchos usuarios y muchas personas están pisando la trampa. La implementación líder del protocolo AMQP, que admite múltiples escenarios. El clúster MySQL de Taobao lo utiliza para la comunicación interna. El componente de comunicación de la plataforma en la nube de código abierto OpenStack se utilizó por primera vez en la industria financiera.
Desventajas: ¿puede contener código Erlang? Aunque Erlang está naturalmente agrupado.