rocketmq 一主多从 的同步机制

来源:互联网 发布:linux fat挂载移动硬盘 编辑:程序博客网 时间:2024/06/03 17:50

一个master 多个slave下,数据是怎么同步的。

其实是master 维持一个 变量,如果是同步双写的的时候,将这个变量置为对应的offset。然后不停地查看slave上报的进度有没有超过这个进度,一旦超过,就是证明slave

写入成功。返回,否则就是超时。但是最终slave还是会赶上来的。


两个slave会上报两个进度,所以,只有slave进度超过push2SlaveMaxOffset的时候,push2SlaveMaxOffset才会替换。

所以,只要有一个salve达到要求,就会notifywakeup。因为是锁一个信号量,所以就当做成功了。


所以一主多从的本质是,所有salve你们各自拉去数据并上报,如果我需要同步双写等待时,我就不停地验证 

push2SlaveMaxOffset 是否超过需要的offset。
一旦超过,就返回。
前面是用countlantch 锁住一个信号量,所以一个成功就是成功了,这就是一主多从的同步机制,也是一主一从的机制。
写的那时候应该都是各自拉取的