消息队列|青训营

108 阅读3分钟

发展历程

TIB:诞生于1985年,服务于金融机构和新闻机构

IBM MQ/WebSphere:诞生于1993年,商业消息队列平台市场主要玩家

MSMQ:微软发布于1997年

JMS:诞生于2001年,本质上是一套java API

AMQP/RabbitMQ:规范发布于2004年,同年RabbitMQ面市

Kafka:2010年由Linked开源

RocketMQ:2011年阿里中间件团队自研

Pulsar:2012年诞生于Yahoo内部

业界消息队列对比

Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色 

RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些 实时场景中运用较广 

Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体 采用存算分离的架构设计

BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替 换掉对应的Kafka集群

Kafka

特点:

  • 高吞吐量: Kafka以其高吞吐量而著称,适用于处理大量数据流。
  • 持久化存储: Kafka将所有消息都持久化到磁盘上,保证消息的不丢失。
  • 分区和复制: Kafka的消息被分成多个分区,每个分区可以有多个副本。这有助于提高系统的可用性和容错性。
  • 顺序保证: 对于同一个分区内的消息,Kafka能够保证它们的顺序性。
  • 灵活性: Kafka的消费者可以按照自己的速度消费消息,不受生产者或其他消费者的影响。

缺点:

  • 部署和配置相对复杂。
  • 对于一些小规模应用来说,可能会过于重量级

BMQ

特点:
  • 低延迟: BMQ注重低延迟,适用于需要快速响应的场景,如实时推送。

  • 容量弹性: BMQ支持自动伸缩,可以根据负载自动调整资源,提高系统的弹性。

  • 多协议支持: BMQ支持多种通信协议,包括HTTP、WebSocket等。

  • 多租户: BMQ支持多租户模式,一个集群可以为多个业务提供服务。

缺点:
  • 开源社区相对较小,文档和资源可能相对有限。
  • 相对于其他消息队列,生态系统可能较弱。

RocketMQ

特点
  • 集群消费:一个Group ID所标识的所有Consumer平均分摊消费消息。例如某个Topic有9条消息,一个Group ID有3个Consumer实例,那么在集群消费模式下每个实例平均分摊,只消费其中的3条消息。
  • 广播消费:一个Group ID所标识的所有Consumer都会各自消费某条消息一次。例如某个Topic有9条消息,一个Group ID有3个Consumer实例,那么在广播消费模式下每个实例都会各自消费9条消息。
  • 定时消息:Producer将消息发送到消息队列RocketMQ服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到Consumer进行消费,该消息即定时消息。
  • 延时消息:Producer将消息发送到消息队列RocketMQ服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到Consumer进行消费,该消息即延时消息。
缺点
  • 相对于Kafka,可能在吞吐量上有所限制。
  • 社区相对较小,生态系统可能不如Kafka完善。