Message Queue MQ ventajas y desventajas comparativas de varios

Una cola de mensajes escenarios de uso

1. procesamiento asincrónico

  las operaciones tradicionales de procesamiento en paralelo:

   cola de mensajes para el procesamiento:

 2. Aplicación de desacoplamiento

  llamadas de negocios tradicionales, el acoplamiento es demasiado alto.

 

 

   El uso de la cola de mensajes para el procesamiento, para reducir el acoplamiento.

 3. recorte de Tráfico

  Día, 0:00 a 11:00, un sistema de calma, el número de solicitudes simultáneas por segundo a 100. Los resultados de cada una de 1 a 11-1:00, el número de solicitudes simultáneas por segundo de repente surgen a 10.000. Sin embargo, el sistema tiene una capacidad de procesamiento máxima sólo se puede procesar 1.000 solicitudes por segundo, ah, porque el sistema se bloquee.

 

 4. Comunicaciones de mensajes

  Se refiere a la comunicación de mensajes, colas de mensajes se construyen generalmente mecanismo de comunicación eficiente, y por lo tanto pueden ser utilizados en una comunicación de mensajes pura. Como el punto a punto cola de mensajes o salas de chat.

 

 

 

5. Procesamiento de registros

   Entrar medios de procesamiento en la cola de mensajes con el procesamiento de registros, tales como aplicaciones de Kafka, una serie de problemas para resolver transferencia de registro. Arquitectura simplificada de la siguiente

 

 

En segundo lugar, las colas de mensajes desventajas

  Reducir la disponibilidad del sistema : el más dependiente de los sistemas externos introducidas, más fácil de colgar, que tenía una interfaz de llamada al sistema es BCD tres sistemas como, cuatro personas del sistema ABCD correctamente, cuestión nada, se añade un MQ parcial entrar, si MQ colgó Zezheng? MQ colgó, todo el sistema se bloquea, no lo estaría terminado.

  Aumentar la complejidad del sistema : añadir MQ bruscamente entrar, ¿cómo asegurarse de que el mensaje no se repite el consumo? ¿Cómo lidiar con el caso de la pérdida de mensajes? ¿Cómo garantizar que el orden de entrega de mensajes? La mayor parte de la cabeza grande, un montón de preguntas, un sufrimiento sin fin

  Coherencia : Un sistema de proceso sobre el retorno directo es exitosa, la gente piensa que solicite tendrá éxito, pero el problema es que si los tres sistemas en los BCD, BD dos sistema de bibliotecas de escritura se realiza correctamente, los resultados del sistema de bibliotecas de escritura C fracasaron , Zezheng? Sus datos es inconsistente.

 

Dos, RobbitMQ, RocketMQ, Kafak comparativo

propiedad

ActiveMQ

RabbitMQ

RocketMQ

Kafka

Stand-alone Rendimiento

Diez mil, y Kafka RocketMQ rendimiento de un orden de magnitud menor

Diez mil, y Kafka RocketMQ rendimiento de un orden de magnitud menor

100.000, RocketMQ también puede apoyar de alto rendimiento de un solo tipo MQ

100000 nivel, que es kafka mayor ventaja es el alto rendimiento.

 

Las clases generales de los sistemas con grandes cantidades de datos para los datos de cálculo en tiempo real, la recopilación de registros y otras escenas

topic数量对吞吐量的影响

 

 

topic可以达到几百,几千个的级别,吞吐量会有较小幅度的下降

 

这是RocketMQ的一大优势,在同等机器下,可以支撑大量的topic

topic从几十个到几百个的时候,吞吐量会大幅度下降

 

所以在同等机器下,kafka尽量保证topic数量不要过多。如果要支撑大规模topic,需要增加更多的机器资源

时效性

ms级

微秒级,这是rabbitmq的一大特点,延迟是最低的

ms级

延迟在ms级以内

可用性

高,基于主从架构实现高可用性

高,基于主从架构实现高可用性

非常高,分布式架构

非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

消息可靠性

有较低的概率丢失数据

 

经过参数优化配置,可以做到0丢失

经过参数优化配置,消息可以做到0丢失

功能支持

MQ领域的功能极其完备

基于erlang开发,所以并发能力很强,性能极其好,延时很低

MQ功能较为完善,还是分布式的,扩展性好

功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用,是事实上的标准

优劣势总结

非常成熟,功能强大,在业内大量的公司以及项目中都有应用

 

偶尔会有较低概率丢失消息

 

而且现在社区以及国内应用都越来越少,官方社区现在对ActiveMQ 5.x维护越来越少,几个月才发布一个版本

 

而且确实主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用

 

erlang语言开发,性能极其好,延时很低;

 

吞吐量到万级,MQ功能比较完备

 

而且开源提供的管理界面非常棒,用起来很好用

 

社区相对比较活跃,几乎每个月都发布几个版本分

 

在国内一些互联网公司近几年用rabbitmq也比较多一些

 

但是问题也是显而易见的,RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重。

 

而且erlang开发,国内有几个公司有实力做erlang源码级别的研究和定制?如果说你没这个实力的话,确实偶尔会有一些问题,你很难去看懂源码,你公司对这个东西的掌控很弱,基本职能依赖于开源社区的快速维护和修复bug。

 

而且rabbitmq集群动态扩展会很麻烦,不过这个我觉得还好。其实主要是erlang语言本身带来的问题。很难读源码,很难定制和掌控。

接口简单易用,而且毕竟在阿里大规模应用过,有阿里品牌保障

 

日处理消息上百亿之多,可以做到大规模吞吐,性能也非常好,分布式扩展也很方便,社区维护还可以,可靠性和可用性都是ok的,还可以支撑大规模的topic数量,支持复杂MQ业务场景

 

而且一个很大的优势在于,阿里出品都是java系的,我们可以自己阅读源码,定制自己公司的MQ,可以掌控

 

社区活跃度相对较为一般,不过也还可以,文档相对来说简单一些,然后接口这块不是按照标准JMS规范走的有些系统要迁移需要修改大量代码

 

还有就是阿里出台的技术,你得做好这个技术万一被抛弃,社区黄掉的风险,那如果你们公司有技术实力我觉得用RocketMQ挺好的

kafka的特点其实很明显,就是仅仅提供较少的核心功能,但是提供超高的吞吐量,ms级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展

 

同时kafka最好是支撑较少的topic数量即可,保证其超高吞吐量

 

而且kafka唯一的一点劣势是有可能消息重复消费,那么对数据准确性会造成极其轻微的影响,在大数据领域中以及日志采集中,这点轻微影响可以忽略

 

这个特性天然适合大数据实时计算以及日志收集

   总结:

     RabbitMQ:性能好,延时低,管理界面好用,社区活跃。但是吞吐量比较低,erlang语言实现,不好进行进一步开发扩展。

     RocketMQ:接口简单易用,源码是阿里出品,可自定义MQ。但是社区活跃度一般,万一不维护,需要自己公司研发。

     Kafka:仅仅提供较少的核心功能,但是具备超高的吞吐量和ms级的延迟,极高的可用性和拓展性。但是存在消息重复消费的缺点,适合于大数据实时计算和日志收集。

 

Supongo que te gusta

Origin www.cnblogs.com/qmillet/p/12549698.html
Recomendado
Clasificación