摘要: CommitLog 生产者向Broker发送的消息,会以顺序写的方式,写入CommitLog文件,CommitLog文件的根目录由配置参数storePathRootDir决定,默认每一个CommitLog的文件大小为1G,如果文件写满会新建一个CommitLog文件,以该文件中第一条消息的偏移量为文 阅读全文
posted @ 2023-10-10 09:08 shanml 阅读(403) 评论(0) 推荐(0) 编辑
摘要: RocketMQ在开启Dledger时,使用DLedgerCommitLog,其他情况使用的是CommitLog来管理消息的存储。在Dledger模式下,消息写入时Leader节点还需要将消息转发给Follower节点,有过半的节点响应成功,消息才算写入成功。 Leader消息写入 Dledger下 阅读全文
posted @ 2023-10-07 09:02 shanml 阅读(389) 评论(0) 推荐(1) 编辑
摘要: RocketMQ 4.5版本之前,可以采用主从架构进行集群部署,但是如果master节点挂掉,不能自动在集群中选举出新的Master节点,需要人工介入,在4.5版本之后提供了DLedger模式,使用Raft算法,如果Master节点出现故障,可以自动选举出新的Master进行切换。 Raft协议 R 阅读全文
posted @ 2023-09-28 09:56 shanml 阅读(376) 评论(0) 推荐(1) 编辑
摘要: RocketMQ支持集群部署来保证高可用。它基于主从模式,将节点分为Master、Slave两个角色,集群中可以有多个Master节点,一个Master节点可以有多个Slave节点。Master节点负责接收生产者发送的写入请求,将消息写入CommitLog文件,Slave节点会与Master节点建立 阅读全文
posted @ 2023-09-27 10:03 shanml 阅读(699) 评论(0) 推荐(3) 编辑
摘要: 消费者负载均衡,是指为消费组下的每个消费者分配订阅主题下的消费队列,分配了消费队列消费者就可以知道去消费哪个消费队列上面的消息,这里针对集群模式,因为广播模式,所有的消息队列可以被消费组下的每个消费者消费不涉及负载均衡,而集群模式一个消息队列同一时间只能分配给组内的一个消费者进行消费。 Rocket 阅读全文
posted @ 2023-09-26 08:30 shanml 阅读(100) 评论(0) 推荐(0) 编辑
摘要: RocketMQ事务的使用场景 单体架构下的事务 在单体系统的开发过程中,假如某个场景下需要对数据库的多张表进行操作,为了保证数据的一致性,一般会使用事务,将所有的操作全部提交或者在出错的时候全部回滚。以创建订单为例,假设下单后需要做两个操作: 在订单表生成订单 在积分表添加本次订单增加的积分记录 阅读全文
posted @ 2023-09-25 09:01 shanml 阅读(392) 评论(0) 推荐(1) 编辑
摘要: 全局有序 在RocketMQ中,如果使消息全局有序,可以为Topic设置一个消息队列,使用一个生产者单线程发送数据,消费者端也使用单线程进行消费,从而保证消息的全局有序,但是这种方式效率低,一般不使用。 局部有序 假设一个Topic分配了两个消息队列,生产者在发送消息的时候,可以对消息设置一个路由I 阅读全文
posted @ 2023-09-20 10:34 shanml 阅读(578) 评论(0) 推荐(1) 编辑
摘要: 消费者从Broker拉取到消息之后,会将消息提交到线程池中进行消费,RocketMQ消息消费是批量进行的,如果一批消息的个数小于预先设置的批量消费大小,直接构建消费请求ConsumeRequest将消费请求提交到线程池处理,否则需要分批构建进行提交。 消息消费 在消息被提交到线程池后进行处理时,会调 阅读全文
posted @ 2023-09-19 14:29 shanml 阅读(560) 评论(1) 推荐(2) 编辑
摘要: RocketMQ设定了延迟级别可以让消息延迟消费,延迟消息会使用SCHEDULE_TOPIC_XXXX这个主题,每个延迟等级对应一个消息队列,并且与普通消息一样,会保存每个消息队列的消费进度(delayOffset.json中的offsetTable): public class MessageSt 阅读全文
posted @ 2023-09-15 09:00 shanml 阅读(381) 评论(1) 推荐(0) 编辑
摘要: 在上一讲中,介绍了消息的存储,生产者向Broker发送消息之后,数据会写入到CommitLog中,这一讲,就来看一下消费者是如何从Broker拉取消息的。 RocketMQ消息的消费以组为单位,有两种消费模式: 广播模式:同一个消息队列可以分配给组内的每个消费者,每条消息可以被组内的消费者进行消费。 阅读全文
posted @ 2023-09-10 22:52 shanml 阅读(394) 评论(0) 推荐(1) 编辑