RocketMQ HA机制(主从同步),银行java开发面试题

温馨提示:本文并不会详细分析RocketMQ主从同步的实现细节,如大家对其感兴趣,可以查阅笔者所著的《RocketMQ技术内幕》或查看笔者博文:https://blog.csdn.net/prestigeding/article/details/79600792

2、提出问题


  • 主,从服务器都在运行过程中,消息消费者是从主拉取消息还是从从拉取?

  • RocketMQ主从同步架构中,如果主服务器宕机,从服务器会接管消息消费,此时消息消费进度如何保持,当主服务器恢复后,消息消费者是从主拉取消息还是从从服务器拉取,主从服务器之间的消息消费进度如何同步?

接下来带着上述问题,一起来探究其实现原理。

3、原理探究


3.1 RocketMQ主从读写分离机制

RocketMQ的主从同步,在默认情况下RocketMQ会优先选择从主服务器进行拉取消息,并不是通常意义的上的读写分离,那什么时候会从拉取呢?

温馨提示:本节同样不会详细整个流程,只会点出其关键点,如果想详细了解消息拉取、消息消费等核心流程,建议大家查阅笔者所著的《RocketMQ技术内幕》。

在RocketMQ中判断是从主拉取,还是从从拉取的核心代码如下:

DefaultMessageStore#getMessage

long diff = maxOffsetPy - maxPhyOffsetPulling; // @1

long memory = (long) (StoreUtil.TOTAL_PHYSICAL_MEMORY_SIZE

  • (this.messageStoreConfig.getAccessMessageInMemoryMaxRatio() / 100.0)); // @2

getResult.setSuggestPullingFromSlave(diff > memory); // @3

代码@1:首先介绍一下几个局部变量的含义:

  • maxOffsetPy

当前最大的物理偏移量。返回的偏移量为已存入到操作系统的PageCache中的内容。

  • maxPhyOffsetPulling

本次消息拉取最大物

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值