RocketMQ基础概念之Broker

Broker是RocketMQ的核心,大部分工作都在Broker中完成,包括接收请求,处理消费,消费持久,消息的HA,以及服务端过滤等都在里面完成

消息的存储和发送
    因为有HA,所以需要磁盘持久化
    磁盘使用的好坏,可以突破网络的瓶颈
    MappedByteBuffer,基于零拷贝技术,由内核态直接往网卡上发送数据,避免了用户态的复制
存储结构
    ConsumeQueue+CommitLog
    ConsumeQueue类似index索引
    CommitLog顺序写大大提升写的效率。
    虽然是随机读,但是有pagecache机制,可以批量从磁盘读取,作为cache存到内存中,加速后续读取速度。
    
    为了保证顺序写,ConsumeQueue里只存偏移量信息,所以尺寸有限,大部分ConsumeQueue能被完全读入内存

HA
    高可用是通过Master-Slave的方式达到高可用的。brokerId为0是Master,大于0是Slave
    消费端的高可用 Consumer不需要配置,如果Master不可用或者繁忙的时候,会自动切换Slave读
    生产端的高可用 创建Topic的时候把多个Msg Queue创建在多个Broker组上,相同name不同id的机器为broker组,这样当一个broker组的Master不可用后其他组的Master依然可用。
    暂不支持Slave自动转换为Master,需要重新配置和重启。

刷盘
    顺序写,有两种刷盘方式 flushType (SYNC_FLUSH/ASYNC_FLUSH)
    异步刷盘 写入的是内存的packageCache,写操作返回快,吞吐量大,内存消息积累到一定值刷盘快速写入。
    同步刷盘 写入的是内存的packageCache,写入完成立马通知刷盘线程等到刷盘完成,然后唤醒等待的线程回写写入成功状态

复制
    一个Broker组内Master和Slave复制。 brokerRole()
    同步复制,Master和Slave都写成功才反馈客户端成功
    异步复制,Master写入成功即可返回成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值