RocketMQ消息队列

本文比较了RocketMQ、ActiveMQ和Kafka三种消息队列技术,探讨了它们的吞吐量、时效性、可用性和特点,包括ActiveMQ的低消息可靠性与社区维护问题,Kafka的高吞吐量和有序性限制,以及RocketMQ的零丢失特性与语言支持情况。
摘要由CSDN通过智能技术生成

RocketMQ消息队列

消息队列是一种先进先出的数据结构,消息队列有流量削峰、应用解耦和异步通信三个作用

ActiveMQ是Apache下的一个子项目。

  • 优点:单机吞吐量每秒万级,时效性毫秒级,可用性高,基于主从架构实现高可用性,消息可靠性较低的概率丢失数据。支持多种语言、支持Spring2的特性、支持多种传送协议、支持通过JDBC和journal提供高速的消息持久化。
  • 缺点:官方社区现在的维护越来越少;社区活跃度不高。

Kafka是一个分布式消息发布订阅系统。为大数据而生的消息中间件,大数据的杀手锏

  • 优点:单机吞吐量每秒百万级,时效性毫秒级,不会丢失数据,不会导致不可用
  • 缺点:支持消息顺序,但是一台代理宕机后,就会产生消息乱序;消费失败不支持重试;社区更新较慢

RocketMQ是阿里系下开源的一款分布式、队列模型的消息中间件,3.0版本名称改为RocketMQ,是阿里参照 kafka设计思想使用 java 实现的一套消息队列。

  • 优点:单机吞吐量十万级,时效性毫秒级,消息可以做到0丢失,支持10亿级别的消息堆积
  • 缺点:支持的客户端语言不多,目前是java及c++;社区活跃度一般;

Cloud Stream屏蔽底层消息中间件的差异,降低切换版本,统一消息的编程模型

  • 通过定义绑定器Binder作为中间件,实现了应用程序与消息中间件细节之间的隔离
  • 通过向应用程序暴露统一的Channel通道,使得应用程序不需要再考虑各种不同消息中间件实现
  • 遵循发布-订阅模式,通过主题进行广播

RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。

  • Consumer支持Push和Pull两种消费模式,支持集群消费和广播消费。
  • Producer支持以多种负载均衡的模式向Broker发送消息。
  • NameSever需要独立服务部署,但是不妨碍节点互相通信构成集群。NameSever可以看作是轻量级的单体服务,主要的功能:1、管理Broker集群,定期发送心跳包检测Broker是否存在。2、为生产者和消费者以及Broker进行路由管理。
  • Broker负责Topic和Queue的消息存储,支持推和拉两种模式。提供上亿级别的消息顺序消息堆积。此外提供可视化管理平台rocketmq-console-ng,这些都是特有功能。

1、NameServer启动,Broker进行服务注册,NameServer需要注册所有的Broker。
2、服务发现,连接所有的生产者和消费者,并且定时进行心跳包发送。
3、生产者发送消息之前从NameServer获取Broker的注册列表,根据负载均衡算法选出其中一台Broker进行消息推送。
4、Nameserver和Broker 保持长连接,同时每30S进行一次心跳检测,如果检测到超过120S没有心跳,从路由表将其删除。
5、消费者订阅某个主题前,需要先从NameSever查找对应的Broker列表或者某个集群,从Broker当中订阅消息进行消费,同时由Broker指定订阅规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值