RocketMQ学习总结

发布时间:2024年01月21日

一、架构

在这里插入图片描述

在这里插入图片描述
1、NameServer:注册中心。Broker信息注册到NameServer;producer/consumer根据某个topic通过NameServer获取对应broker的路由信息 ;

2、Broker:负责存储、拉取、转发消息;

3、Producer:消息生产者,与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。

4、Consumer:消息消费者,与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。
在这里插入图片描述
5、Queue:存储消息的commitLog记录(存储在内存),类似于消息的索引,消息体存储在磁盘中,通过commitLog关联。

二、刷盘机制

1、同步刷盘:消息被写入PageCache后立即刷盘,只有当消息被持久化到磁盘后才会响应ACK。

2、异步刷盘:消息在被写入PageCache后就会响应ACK,当PageCache里的消息积累到一定量后,由OS线程将PageCache里的消息刷入磁盘。注:如果RocketMQ服务挂了,PageCache里的消息并不会丢失,因为PageCache是属于Linux系统的缓冲区,只有当服务器突然断电才会导致消息丢失。

3、异步刷盘+缓冲区:RocketMQ将一部分内存当做缓冲区,消息被写入内存缓冲区后就返回ACK,由后台程序将内存缓冲区里的消息刷入磁盘。注:在该模式下,RocketMQ服务宕机或服务器突然断电都会导致消息丢失。

三、消息类型

1、普通消息
2、顺序消息(存储在同一个queue)
3、延时消息
4、批量消息
5、事务消息(达到最终一致性,非强一致性)
在这里插入图片描述

四、消息类型

集群消费:
广播消费:

pull、push、长轮训

文章来源:https://blog.csdn.net/qq_44837912/article/details/125418241
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。