为了尽量减少自然和人为灾难(如停电、灾难性软件故障和网络中断)对业务的影响,以及随着我行基于Kafka的实时业务不断增长,Kafka的重要性日益增长,在我行逐步优化跨IDC的Kafka连续性建设已经成为我们目前亟待解决的问题。
本文就目前已有的灾备方案在元数据同步、数据复制、消费位移同步、灾备模式等方面进行调研对比。
| 方案 | 描述 | 使用方 |
|---|---|---|
| MirrorMaker1(简称MM1) | 原理是启动消费者从源集群进行消费,然后发送到目标集群,功能较简单 | |
| MirrorMaker2(简称MM2)或 基于MM2的改进 |
基于Kafka Connect框架实现,由LinkedIn工程师贡献,修复MM1的局限性,Topic和分区可自动感知,acl和配置可自动同步,支持双活,提供offset转换功能 | 360 |
| Confluent Replicator | Confluent收费版,与MM2相比,双活模式更优雅,可支持单条消息的修改 | Confluent |
| 基于Follower的同步机制 | 利用Kafka的副本同步机制创建Fetcher线程同步数据,需要在原生Kafka上进行二次开发 | 字节、滴滴 |
| uReplicator | 改进MM1,利用分布式的任务管理框架Apache Helix控制Partition的分配,不需要全部rebalance |