RocketMQ学习心得

RocketMQ是阿里开源的分布式消息中间件,基于高可用分布式集群技术,提供消息订阅和发布、消息轨迹查询以及定时(延时)消息、资源统计,监控报警等一系列消息云服务,是企业级互联网架构的核心产品。为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、可靠重试等互联网应用所需要的特性。跟其它中间件相比,RocketMQ的特点是纯JAVA实现;集群和HA实现相对简单;在发生宕机和其他故障时消息丢失率更低。

RocketMQ专业术语

Producer:消息生产者,位于用户的进程内,Producer通过NameServer获取所有Broker的路由信息,根据负载均衡策略选择将消息发到哪个Broker,然后调用Broker接口提交消息。

Producer Group:生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产组。

Consumer:消息消费者,位于用户进程内,Consumer通过NameServer获取所有broker的路由信息后,向Broker发送Pull请求来获取消息数据。Consumer可以以两种模式启动,广播(Broadcast)和集群(Cluster),广播模式下,一条消息会发送给所有Consumer,集群模式下消息只会发送给一个Consumer。

Consumer Group:消费者组,和生产者类似,消费同一类消息的多个Consumer实例组成一个消费者组。

Topic:Topic用于将消息按主题做划分,Producer将消息发往指定Topic,Consumer订阅Topic就可以收到这条消息。Topic跟发送方和消费方没有强关联关系,发送方可以同时往多个Topic投放消息,消息方也可以订阅多个Topic的消息。在RocketMQ中,Topic是一个逻辑概念。消息存储不会按Topic分开。

Message:代表一条消息,使用Message唯一识别,用户在发送时可以设置messageKey,便于之后查询和跟踪。一个Message必须指定Topic,相当于寄信的地址。Message还有一个可选的Tag设置,以便消费端可以基于Tag进行过滤消息。也可以添加额外的键值对,例如你需要一个业务key来查找Broker上的消息,方便在开发过程中诊断问题。

Tag:标签可以被认为是对Topic进一步细化,一般在相同业务模块中通过引入标签来标记不同用途的消息。

Broker:Broker是RocketMQ的核心模块,负责接收并存储消息,同时提供push/pull接口来将消息发送给Consumer。Consumer可选择从Master或者Slave读取数据。多个主/从组成Broker集群,集群内的Master节点之间不做数据交互。Broker同时提供消息查询的功能,可以通过MessageID和MessageKey来查询消息。Broker会将自己的Topic配置信息实时同步到NameServer。

Queue:Topic和Queue是一对多的关系,一个Topic下可以包含多个Queue,主要用于负载均衡。发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个Queue上。Consumer订阅消息时,会根据负载均衡策略决定订阅哪些Queue的消息。

Offset:RocketMQ在存储消息时会为每个Topic下的每个Queue生成一个消息的索引文件,每个Queue都对应一个Offset记录当前Queue中消息条数。

NameServer:NameServer可以看作是RocketMQ的注册中心,它管理两部分数据;集群的Topic-Queue的路由配置;Broker的实时配置信息。其他模块通过NameServer提供的接口获取最新的Topic配置和路由信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值