RocketMQ原理解析-broker 4.HA & master slave
2014-09-09 00:44
681 查看
在broker启动的时候BrokerController如果是slave,配置了master地址更新,没有配置所有broker会想namesrv注册,从namesrv获取haServerAddr,然后更新到HAClient
当HAClient的MasterAddress不为空的时候(因为broker master和slave都构建了HAClient)会主动连接master获取SocketChannel
Master监听Slave请求的端口,默认为服务端口+1
接收slave上传的offset long类型
int pos = this.byteBufferRead.position() -(this.byteBufferRead.position() % 8) //没有理解意图
long readOffset =this.byteBufferRead.getLong(pos - 8);
this.processPostion = pos;
主从复制从哪里开始复制:如果请求时0 ,从最后一个文件开始复制
Slave启动的时候brokerController开启定时任务定时拷贝master的配置信息
SlaveSynchronize类代表slave从master同步信息(非消息)
syncTopicConfig 同步topic的配置信息
syncConsumerOffset 同步消费进度
syncDelayOffset 同步定时进度
syncSubcriptionGroupConfig 同步订阅组配7F6E
HaService类实现了HA服务,负责同步双写,异步复制功能, 这个类master和slave的broker都会实例化,
Master通过AcceptSocketService监听slave的连接,每个masterslave连接都会构建一个HAConnection对象搭建他们之间的桥梁,对于一个master多slave部署结构的会有多个HAConnection实例,
Master构建HAConnection时会构建向slave写入数据服务线程对象WriteSocketService对象和读取Slave反馈服务线程对象ReadSocketService
WriteSocketService
向slave同步commitLog数据线程,
slaveRequestOffset是每次slave同步完数据都会向master发送一个ack表示下次同步的数据的offset。
如果slave是第一次启动的话slaveRequestOffset=0, master会从最近那个commitLog文件开始同步。(如果要把master上的所有commitLog文件同步到slave的话, 把masterOffset值赋为minOffset)
向socket写入同步数据: 传输数据协议<Phy Offset> <Body Size> <Body Data>
ReadSocketService:
通知前端线程,如果是同步复制的话通知是否复制成功
Slave 通过HAClient建立与master的连接,
来定时汇报slave最大物理offset,默认5秒汇报一次也代表了跟master之间的心跳检测
读取master向slave写入commitlog的数据, master向slave写入数据的格式是
Slave初始化DefaultMessageStore时候会构建ReputMessageService服务线程并在启动存储服务的start方法中被启动
ReputMessageService的作用是slave从物理队列(由commitlog文件构成的MapedFileQueue)加载数据,并分发到各个逻辑队列
HA同步复制, 当msg写入master的commitlog文件后,判断maser的角色如果是同步双写SYNC_MASTER, 等待master同步到slave在返回结果
当HAClient的MasterAddress不为空的时候(因为broker master和slave都构建了HAClient)会主动连接master获取SocketChannel
Master监听Slave请求的端口,默认为服务端口+1
接收slave上传的offset long类型
int pos = this.byteBufferRead.position() -(this.byteBufferRead.position() % 8) //没有理解意图
long readOffset =this.byteBufferRead.getLong(pos - 8);
this.processPostion = pos;
主从复制从哪里开始复制:如果请求时0 ,从最后一个文件开始复制
Slave启动的时候brokerController开启定时任务定时拷贝master的配置信息
SlaveSynchronize类代表slave从master同步信息(非消息)
syncTopicConfig 同步topic的配置信息
syncConsumerOffset 同步消费进度
syncDelayOffset 同步定时进度
syncSubcriptionGroupConfig 同步订阅组配7F6E
HaService类实现了HA服务,负责同步双写,异步复制功能, 这个类master和slave的broker都会实例化,
Master通过AcceptSocketService监听slave的连接,每个masterslave连接都会构建一个HAConnection对象搭建他们之间的桥梁,对于一个master多slave部署结构的会有多个HAConnection实例,
Master构建HAConnection时会构建向slave写入数据服务线程对象WriteSocketService对象和读取Slave反馈服务线程对象ReadSocketService
WriteSocketService
向slave同步commitLog数据线程,
slaveRequestOffset是每次slave同步完数据都会向master发送一个ack表示下次同步的数据的offset。
如果slave是第一次启动的话slaveRequestOffset=0, master会从最近那个commitLog文件开始同步。(如果要把master上的所有commitLog文件同步到slave的话, 把masterOffset值赋为minOffset)
向socket写入同步数据: 传输数据协议<Phy Offset> <Body Size> <Body Data>
ReadSocketService:
4.2 ReadSocketService
读取slave通过HAClient向master返回同步commitLog的物理偏移量phyOffset值通知前端线程,如果是同步复制的话通知是否复制成功
Slave 通过HAClient建立与master的连接,
来定时汇报slave最大物理offset,默认5秒汇报一次也代表了跟master之间的心跳检测
读取master向slave写入commitlog的数据, master向slave写入数据的格式是
Slave初始化DefaultMessageStore时候会构建ReputMessageService服务线程并在启动存储服务的start方法中被启动
ReputMessageService的作用是slave从物理队列(由commitlog文件构成的MapedFileQueue)加载数据,并分发到各个逻辑队列
HA同步复制, 当msg写入master的commitlog文件后,判断maser的角色如果是同步双写SYNC_MASTER, 等待master同步到slave在返回结果
3 HA异步复制
相关文章推荐
- RocketMQ原理解析-broker 4.HA & master slave
- RocketMQ原理解析-broker 4.HA & master slave
- RocketMQ原理解析-broker 3.load&recover
- RocketMQ原理解析-broker 3.load&recover
- RocketMQ原理解析-producer 6.消息在broker落地之事物消息
- RocketMQ源码解析-Broker的HA实现
- RocketMQ原理解析-broker 2.消息存储
- RocketMQ原理解析-producer 5.消息在broker落地之普通消息
- RocketMQ原理解析-broker 6.索引服务
- RocketMQ原理解析-broker 1. broker的启动
- RocketMQ原理解析-broker 3.load&recover
- RocketMQ原理解析-broker 2.消息存储
- RocketMQ原理解析-Broker
- 【RocketMQ原理解析1.1】整体介绍&IDE编译并启动RocketMQ的第一个例子
- RocketMQ原理解析-broker 1. broker的启动
- android平台上的json解析 && 基站定位原理及实现
- RocketMQ原理解析-Remoting2. 通信层底层传输协议
- 15. Dubbo原理解析-集群&容错之目录服务Directory
- linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析
- 4.zookeeper原理解析-数据存储之FileTxnLog& FileTxnSnapLog工具