使用MirrorMaker跨集群同步数据原理
使用MirrorMaker跨集群同步数据原理
- 一、什么是 MirrorMaker?
- 二、数据同步原理
一、什么是 MirrorMaker?
从本质上说,MirrorMaker 就是一个消费者 + 生产者的程序。消费者负责从源集群(Source Cluster)消费数据,生产者负责向目标集群(Target Cluster)发送消息。整个镜像流程如下图所示:
MirrorMaker 连接的源集群和目标集群,会实时同步消息。当然,不要认为只能使用一套 MirrorMaker 来连接上下游集群。事实上,很多用户会部署多套集群,用于实现不同的目的。
下图中部署了三套集群:左边的源集群负责主要的业务处理;右上角的目标集群可以用于执行数据分析;而右下角的目标集群则充当源集群的热备份。
二、数据同步原理
采用MirrorMaker消息同步工具,将老集群的消息直接同步到新集群,客户端不再需要双读/双写,最后切换的时候直接修改为新集群的地址,重新发布即可。
整个过程如下:
最后下掉老集群。
这样无论对发送端或消费端都是是极其友好,且“平滑”。
我最终考虑并采用的是这个方案,唯一的问题便是迁移过程中的所有问题和压力都从业务侧的同学转移到我们这边,比如:发送的消息如何同步,如何避免消费端切换后,重复消费或者漏掉消息未消费。