1. Cross Cluster Mirroring

KafkaMultiCluster
  • 某些应用可能需来自多个数据中心的数据,管理员将需在集群间连续复制(copy)数据;

  • mirroring application的核心是消费者和生产者,在镜像过程
    (mirroring process)中,它会消费A集群中的数据,并将其发布到B集群;

  • 执行mirroring的工具:Mirror Maker 2和uReplicator;

2. Active Active Architecture

ActiveActiveMirroring
  • 当两个或多个数据中心共享部分或全部数据,且每个数据中心
    都能produce和consume event时,将使用此架构;

  • 生产者在两个集群中生成相同的主题,且在集群中的两个主题间进行镜像;

2.1. Advantage

  • 能从附近的数据中心为用户提供服务,通常具有性能优势;

  • 冗余和弹性:Redundancy and Resilience,因每个数据中心
    都具有所有功能,故某数据中心不可用,课将用户引导到其它数据中心;

2.2. Disadvantage

  • 主要缺点(drawback):在多个位置异步读取和更新数据时,在避免冲突方面存在挑战;

  • 另需使用消费者(通常使用时间戳)处理从何处读取,因偏移量不一定在集群间同步;

3. Active Passive Architecture

ActivePassiveMirroring
  • 在某些情况下,对多个集群的唯一要求是支持某种灾难场景,
    或通过镜像整个集群来实现更快的本地读取;

  • 也许在同一个数据中心中有两个集群,对所有应用程序使用一个集群,但希望第二个集群
    包含(几乎)原始集群中的所有事件,若原始集群完全不可用,则可使用这些事件;

  • 此架构中,生产者仅将数据发布到活动集群,被动集群不接收任何写入,
    它只是通过Mirror Maker从主动集群接收镜像数据;

3.1. Advantage

* 设置简单(Simplicity),且几乎可在任何用例(use case)中使用;

  • 无需担心访问数据、处理冲突和其它架构复杂性(architectural complexity);

3.2. Disadvantage

  • 浪费一个好的集群,且目前不可能在Kafka中执行集群故障切换
    (failover)而不丢失数据或发生重复事件(duplicate event);