Broker关键的运行时机制

引用

broker启动了很多的线程和定时任务,维护系统的稳定健康运行。此文汇总以下的运行时机制。

  1. 刷盘机制
  2. slave消息同步机制(HA机制)
  3. 客户端管理机制
  4. Broker发现机制
  5. 多副本同步机制(DLedgerCommitLog)
  6. broker怎么维护新增的topic

刷盘机制

异步刷盘模式

  • 每隔10s,刷新全部缓存
  • 每隔500ms或者生产者消息写入buffer后唤醒线程
  • broker正常关闭时,强制刷盘

同步刷盘模式

  • 每隔10ms或者生产者消息写入buffer后唤醒线程
  • broker正常关闭时,强制刷盘
  • 此模式下,如果isWaitStoreMsgOK是true则会等待刷盘完成后返回成功

Broker发现机制

每个最少10s向nameServer发送一个心跳。把负责的topic信息发送给NameServer

Slave消息同步机制(HA机制)

异步master
生产者的消息写入buffer后不做处理,等待slave主动拉取

同步master
如果生产者的消息isWaitStoreMsgOK=false,同样是等待slave拉取
如果是isWaitStoreMsgOK=true。如果slave是可用状态,则会等待消息拉取完毕,否则只返回SLAVE_NOT_AVAILABLE给生产者,如果是同步消息此处会再次重试另一个master,保证数据不丢

slave断线重连机制
当出现读数据异常时,会进行断开连接操作。在写一次进行重新连接,执行周期为每秒。

tcp粘包和拆包
使用了定长的Head,12个字节,8个字节表示当前消息的物理offset,4个字节的变长body对size,变长的body。
使用dispatchPosition标识一个完整消息的position
只有能读取完整的消息(长度是headSize和bodySize),把完整的消息写入commitLog
把剩余的字节放在了buffer的头部,等待下一次socketChannel传输

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值