简述什么是RocketMQ ?
RocketMQ是一款分布式、队列模型的消息中间件,它具有以下特点:
- 支持严格的消息顺序;
- 支持Topic与Queue两种模式;
- 具有亿级消息堆积能力;
- 分布式特性比较友好;
- 同时支持Push与Pull方式消费消息。
RocketMQ的优势在于它支持事务型消息,能够保持消息发送和DB操作两方的最终一致性,这是主流MQ中唯独RocketMQ支持的。此外,RocketMQ还支持结合多个系统之间数据最终一致性、18个级别的延迟消息、指定次数和时间间隔的失败消息重发等特性,这些也是其他MQ产品所不具备的。
简述RocketMQ 整体架构 ?
RocketMQ是一款具有低延迟、高性能和可靠性、可灵活扩展的分布式消息平台。它由四部分组成:NameServer、Broker、生产者和消费者。
NameServer是一个轻量级的服务注册中心,每个NameServer节点中有全量的Broker中topic的路由信息。
Broker负责消息存储,以topic为维度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推拉模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严格保证消息的有序性。
ProducerClient是用户部署的消息发布客户端,支持push和pull模型,支持广播模式和集群模式。
Queue是topic的细分。
以上各部分都可以在没有单点故障的情况下进行水平扩展。
简述RocketMQ的执行流程 ?
RocketMQ的执行流程包括以下步骤:
- 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来。
- Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。
- 在收发消息前,需要先创建Topic。创建Topic时,需要指定该Topic要存储在哪些Broker上。也可以在发送消息时自动创建Topic。
- Producer发送消息。
- Consumer消费消息。
简述RocketMQ特点 ?
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:
- 具有灵活的可扩展性:RocketMQ天然支持集群,其核心四大组件(NameServer、Broker、Producer、Consumer)的每一个都可以在没有单点故障的情况下进行水平扩展。
- 具有海量消息堆积能力:RocketMQ采用零拷贝原理实现了超大量消息的堆积能力,据说单机已经支持亿级消息堆积,而且在堆积了这么多消息后保持写入低延迟。
- 支持顺序消息:RocketMq可以保持消息消费者按照消息的发送顺序对消息进行消费。顺序消息分为全局有序消息和局部有序消息,一般推荐使用局部有序消息,即生产者通过将某一类消息按照顺序发送至同一队列中来实现。
- 支持多种消息过滤方式:消息过滤分为在服务器端过滤和在消费端过滤。在服务器端过滤时可以按照消息消费者的要求进行过滤,优点是减少不必要的消息传输,缺点是增加了消息服务器的负担,实现相对复杂。消费端过滤则完全由具体应用自定义实现,这种方式更加灵活。
- 具有高性能、高可靠、高实时、分布式特点:RocketMQ是一个队列模型的消息中间件,同时支持Push与Pull方式消费消息。
- 提供丰富的消息拉取模式:RocketMQ支持多种拉取模式,可以满足不同的使用需求。
- 具有高效的订阅者水平扩展能力:RocketMQ支持高效的订阅者水平扩展,可以轻松应对大规模的并发访问。
- 具有实时的