面试题答案
一键面试NameServer
- 角色:是一个轻量级的元数据服务器,主要提供Broker的路由信息。
- 作用:
- Broker管理:Broker启动时会向所有NameServer注册自己的信息,包括自身地址、所负责的Topic等。NameServer维护了Broker的存活列表,实时感知Broker的上线和下线。
- 路由信息提供:Producer和Consumer通过NameServer获取Broker的路由信息,从而知道往哪些Broker发送消息(Producer),从哪些Broker拉取消息(Consumer)。
Broker
- 角色:是RocketMQ的核心组件,负责消息的存储、转发等。
- 作用:
- 消息存储:接收Producer发送过来的消息,并将消息持久化到磁盘,以保证消息不丢失。支持多种存储策略,如顺序写等优化存储性能。
- 消息转发:根据Consumer的请求,将存储的消息推送给Consumer,同时也处理消息的重试、死信队列等相关业务逻辑。
- 负载均衡:与其他Broker协同工作,实现对Topic消息的分布式存储和消费,通过集群化部署提高系统的可用性和性能。
Producer
- 角色:消息的生产者,负责生成并发送消息到RocketMQ系统。
- 作用:
- 消息发送:创建消息,并选择合适的Broker队列将消息发送出去。支持多种发送方式,如同步发送、异步发送和单向发送,以满足不同业务场景的需求。
- 负载均衡:通过NameServer获取Broker的路由信息,在多个Broker队列间进行负载均衡,均匀地将消息发送到不同的Broker上,提高消息处理效率。
Consumer
- 角色:消息的消费者,从RocketMQ系统中获取消息并进行处理。
- 作用:
- 消息拉取:从Broker中拉取消息,支持两种消费模式,即推模式(PushConsumer)和拉模式(PullConsumer)。推模式由Broker主动将消息推送给Consumer,拉模式则由Consumer主动从Broker拉取消息。
- 消息处理:对拉取到的消息进行业务逻辑处理,如数据入库、调用其他服务等。同时,负责向Broker反馈消息的消费状态,以便Broker进行后续处理,如确认消息已消费或进行消息重试等。