主从复制

主从复制能够消除单点故障,提高可用性(HA)

Redis

1、复制偏移量
主从复制_第1张图片
主从复制_第2张图片
2、复制积压缓冲区
主从复制_第3张图片
主从复制_第4张图片
集群部署,若主节点挂了,会进行选举,从节点顶上来。

MySQL

主库有一个log dump线程,将binlog传给从库。从库有两个线程,一个I/O线程,一个SQL线程,I/O线程读取主库传过来的binlog内容并写入到relay log(中继日志),SQL线程从relay log里面读取内容,写入从库的数据库。
主从复制_第5张图片
可以通过keepalived或mycat做到主从自动切换

RocketMQ

跟redis一样,主从复制也分为同步和命令传播。
主从同步:
主从复制_第6张图片
上图参考:https://blog.csdn.net/prestigeding/article/details/79600792

命令传播:
master写成功后,会去写slave。写slave有同步写和异步写两种方式。

consumeQueue:索引,存储了指向物理存储的地址
commitlog:消息物理文件
主从复制_第7张图片
在创建Topic的时候,把Topic 的多个MessageQueue创建在多个Broker组上(相同Broker 名称,不同brokerId 的机器组成一个Broker 组),这样当一个Broker 组的Master 不可用后,其他组的Master 仍然可用,Producer 仍然可以发送消息。RocketMQ 目前还不支持把Slave 自动转成Master ,如果机器资源不足,需要把Slave 转成Master ,则要手动停止S lave 角色的Broker ,更改配置文件,用新的配置文件启动Broker

三者情况类似,做个总结。

你可能感兴趣的:(主从复制)