MQ的大致介绍

what is MQ?

MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。

MQ的主要作用和优缺点

作用和优点:
    异步、解耦、削峰
缺点:
	系统可用性降低、系统复杂度提高、消息一致性问题

MQ三巨头的比较

RockertMQ 弥补了 kafkarabbitmq的缺点场景

KafkaRocketMqRabbitMQ
关注度
成熟度成熟比较成熟成熟
所属社区/公司ApacheAlibaba ApacheMozilla Public License
社区活跃度
文档
特点吞吐量与消息积累都很强大Topic 太多会影响性能。各个环节分布式扩展设 计,主从 HA;支持上万个队列;多种消费模式; 性能很好由于Erlang 语言的并发能力,性能很好
授权方式开源开源开源
开发语言scalaJavaErlang
支持的协议一套自行设计的基于 TCP 的二进制协议自己定义的一套(社区提供JMS--不成熟)AMQP
客户端支持语言C/C++,Python,Go,Erlang,Java 等JavaC++(不成熟)Java、C、C++、Python、PHP、Perl、.net 等
持久化磁盘文件磁盘文件内存、文件
事务不支持支持不支持
集群ZookeeperNameserver
单机支持的队列单机超过 64 个队列,性能会明显下降单机最高支持 5W 个队列, 性能没有明显变化依赖于内存
定时消息不支持开源版仅支持定时Level不支持
顺序消费支持顺序消费,但是一台Broker 宕机后,顺序会乱支持顺序消费,在顺序消费场景下,消费失败时消费队列将会暂停支持顺序消费,但是一台Broker 宕机后,顺序会乱
负载均衡支持支持支持
管理界面无 社 区 有 web console 实现
部署依赖zookeeperNameserverErlang 环境
消费方式保证严格的消费顺序
总结:优点1、高吞吐、低延迟、高性能2、提供多种客户端语言3、生态完善,大数据处理方面的必备工具模型简单,接口易用。在阿里大规模应用。目前支付宝中的余额宝等新兴产品均使用 rocketmq。集群规模大概在 50 台左右,单日处理消息上百亿;性能非常好,可以大量堆积消息在broker 中;支持多种消费,包括集群消费、广播消费等。开发度较活跃, 版本更新很快。由于erlang 语言的特性, mq 性能较好;管理界面较丰富,在互联网公司也有较大规模的应用;支持amqp 协议,有多种语言且支持amqp 的客户端可用
总结:缺点消费者集群数受到分区数的限制单机Topic 过多,性能会明显下降不支持事务。容易丢数据。使用者较少,生态不够完善,消息堆积与吞吐量上与kafka 还是有差距。客户端支持javaErlang 语言难度较大,集群不支持动态扩展。不支持事务,消息吞吐能力有限消息堆积时,性能会明显降低。