RocketMQ学习

消息队列

消息队列:(Message Queue,简称MQ)是一种先进先出的队列型的数据结构,是一种存储和管理消息的中间件,它允许应用程序通过特定的接口发送(生产)和接收(消费)消息。消息队列的主要作用是实现应用程序之间的解耦合,提高系统的异步通信能力和可扩展性。

在消息队列中,消息的生产者和消费者不必知道对方的存在,它们只需要与消息队列进行交互。生产者将消息发送到队列中,而消费者从队列中接收消息。这种模式使得生产者和消费者可以独立地处理消息,不需要同时在线或以相同的速度处理消息。

消息队列的主要特点和优势包括:

  • 异步处理:消息队列允许应用程序异步处理任务,提高了系统的响应速度和用户体验。
  • 解耦合:通过引入消息队列,应用程序之间的直接依赖关系被解除,使得系统更加模块化,易于维护和扩展。
  • 流量削峰:在面对高并发访问时,消息队列可以缓冲大量的请求,避免系统过载。
  • 消息可靠传递:消息队列通常提供消息持久化功能,确保即使在系统故障的情况下,消息也不会丢失。

RocketMQ的组成部分

RocketMQ是由阿里巴巴开源的一个高性能、可扩展的分布式消息和流处理平台。它的主要组成部分包括:

  • NameServer:NameServer是RocketMQ的注册中心,用于管理Broker的路由信息。每个NameServer实例都存储了关于Broker集群的元数据,包括Broker的地址、Topic信息等。NameServer之间不会相互通信,它们都是独立的,以避免单点故障。
  • Broker:Broker是RocketMQ的消息服务器,负责消息的存储、传递和查询。Broker负责处理生产者发送的消息,以及向消费者提供消息。Broker还负责存储消息到磁盘,保证消息的持久化。Broker可以有多个,它们可以组成一个集群,以提供高可用性和可扩展性。
  • Producer:Producer是消息的生产者,它负责创建消息并将其发送到Broker。Producer可以发送多种类型的消息,包括普通消息、顺序消息、延迟消息和事务消息。
  • Consumer:Consumer是消息的消费者,它从Broker拉取或接收消息,并进行处理。RocketMQ支持推模式和拉模式两种消息消费方式。Consumer可以以集群模式或广播模式消费消息。
  • Topic:Topic是消息的逻辑分类,它将消息分类存储在不同的队列中。生产者将消息发送到特定的Topic,而消费者订阅特定的Topic以接收消息。
  • Message Queue:Message Queue是消息的物理存储单元,每个Topic可以由一个或多个Message Queue组成。消息实际上是存储在Message Queue中的。
  • Tag:Tag是消息的二级分类,它可以在Topic的基础上进一步对消息进行分类。消费者可以根据Tag来过滤和选择性消费消息。
  • Filter Server:Filter Server是可选组件,用于在Broker端对消息进行过滤,以减少对Consumer无用消息的传输。

RocketMQ的这些组件共同工作,提供了强大的消息队列服务,支持高吞吐量、高可用性和可扩展性,适用于大规模分布式系统中的消息传递需求。

RocketMQ启动流程

RocketMQ的工作流程涉及多个组件的协同工作,包括NameServer、Broker、Producer和Consumer。以下是RocketMQ的基本工作流程:
启动NameServer:
NameServer启动后,它们等待Broker、Producer和Consumer来注册自己。NameServer之间不相互通信,每个NameServer都保存着完整的路由信息。
启动Broker:
Broker启动后,首先向所有的NameServer注册自己,并定期向NameServer发送心跳以保持自己的注册信息是最新的。
Broker负责存储消息、处理生产者发送的消息、以及向消费者提供消息。
Producer发送消息:
生产者启动后,首先从NameServer获取Broker的路由信息,然后与Broker建立连接。
生产者将消息发送到指定的Broker,可以发送到特定的Topic和Tag。
发送消息时,生产者可以同步发送、异步发送或单向发送(Oneway)。
Broker存储消息:
Broker接收到消息后,将消息写入到对应的Message Queue中。
根据配置,消息可能会被持久化到磁盘中,以确保消息不会因为Broker的故障而丢失。
Consumer消费消息:
消费者启动后,首先从NameServer获取Broker的路由信息,然后与Broker建立连接。
消费者订阅感兴趣的Topic和Tag,并从Broker拉取或接收消息。
消费者可以以推模式或拉模式消费消息,推模式由Broker主动将消息推送给消费者,而拉模式由消费者主动从Broker拉取消息。
消息确认:
消费者在处理完消息后,需要向Broker发送消费确认(ACK)。
一旦Broker收到消费确认,就会认为该消息已经被成功消费,并从Message Queue中移除。
故障转移和负载均衡:
如果Broker发生故障,NameServer会检测到心跳丢失,并通知Producer和Consumer更新路由信息。
RocketMQ支持Master-Slave架构,Master Broker负责处理写操作,而Slave Broker负责处理读操作,并且可以升级为Master。
消费者实例通常以集群模式运行,RocketMQ会自动进行负载均衡,确保消息被均匀地分配给不同的消费者实例。
RocketMQ通过这种工作流程,实现了高吞吐量、高可用性和可扩展性的消息队列服务,适用于各种分布式系统的消息传递需求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值