RocketMQ学习(二)——重要参数和主从消息同步

本文详细介绍了RocketMQ的主从同步机制,包括数据内容和元数据信息的同步方式。同时,探讨了RocketMQ的水平扩展和负载均衡策略,包括Broker、Producer和Consumer的负载均衡,以及广播模式下的消费特点。此外,还解析了CommitLog的存储结构和Producer发送消息的逻辑。
摘要由CSDN通过智能技术生成
生产者核心参数

producerGroup: 组名。一个应用(JVM)中组名不能重复。
defaultTopicQueueNums: 默认的topic对于Queue的数量,默认是4。
sendMsgTimeout: 生产者发送消息的超时时间。
compressMsgBodyOverHowmuch: 消息超过多大开始进行压缩,默认压缩字节4096。
retryTimesWhenSendFailed: 当消息发送失败时,重发次数。
retryAnotherBrokerWhenNotStoreOK: 当一个broker存储消息失败时,是否重发到其他broker。
maxMessageSize: 最大消息限制,默认128K。

主从同步机制解析
  • 同步的信息

    包含两部分:数据内容 + 元数据信息

  • 数据内容

    实时进行同步,同步的是commitlog中的数据,对实时性要求高,并且丢失数据就无法恢复。使用原生socket。

  • 元数据信息

    broker判断如果是slave节点,那么会启动定时任务不断同步,如果丢失也可以从其他地方重试获取。包含topic信息和offset等。使用netty同步。

元数据同步源码解析

首先由于是broker的数据同步,所以这部分代码是写在rocketmq-broker的模块中。是在handleSlaveSynchronize方法中通过定义了一个固定时间的定时任务,时间是1分钟执行一次,当然前提条件是broker节点的角色是slave,而broker节点是master时,如果有定时任务会取消,因为master是不用同步元数据信息。这个方法会有三个地方调用:1、broker刚刚启动 2、master切换成slave 3、slave切换成master。

handleSlaveSynchronize 源码

    private void handleSlaveSynchronize(BrokerRole role) {
   
    	//判断broker角色 master或slave
        if (role == BrokerRole.SLAVE) {
   
            if (null != slaveSyncFuture) {
   
                slaveSyncFuture.cancel(false)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值