2-如何选择消息队列

优点:解耦、削峰、数据分发

缺点包含以下几点:

  • 系统可用性降低

    系统引入的外部依赖越多,系统稳定性越差。一旦MQ宕机,就会对业务造成影响。

    如何保证MQ的高可用?

  • 系统复杂度提高

    MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。

    如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?

  • 一致性问题

    A系统处理完业务,通过MQ给B、C、D三个系统发消息数据,如果B系统、C系统处理成功,D系统处理失败。

    如何保证消息数据处理的一致性?

特性 ActiveMQ RabbitMQ RocketMQ Kafka
开发语言 Java erlang Java Scala
单机吞吐量 万级 万级 10万级 10万级
时效性 ms us ms ms
可用性 高,主从架构 高,主从架构 非常高,分布式架构 非常高,分布式架构
功能特性 成熟产品,有较多文档,各种协议支持较好 基于erlang开发,并发能力很强,性能好,延时低,管理界面也很丰富 MQ功能完备,扩展性好 只支持主要的MQ功能,像消息查询、消息回溯等功能没有提供,主要是为大数据准备,在大数据领域使用较广
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!