第8章 跨集群数据镜像
8.1 跨集群数据镜像的使用场景
1>区域集群与中心集群:
中心集群会需要区域集群的消息
2>冗余
完全的kafka镜像备用集群
3>云迁移
8.2 多集群架构
8.2.1 跨数据中心通信的一些实现情况
1>高延迟:集群距离越远,延迟越高,主要因为网络跳转
2>有限的带宽
3>高成本:带宽增加很消耗成本
【向远程数据中心生成数据需要增大retry次数并增大缓冲区】
【一个数据中心需要从另一个数据中心获取数据时推荐使用镜像,而不是消费者】
多集群架构原则:
1>每个数据中心至少有一个kafka集群
2>每两个数据中心之间的每个时间仅复制一次
3>尽量从远程中心读取数据,而不是写入
本地数据保存同步至全部数据中心,而应用程序也可以处理所有数据,但需要很好的处理异步数据读取与更新问题
【需处理循环镜像,可以为同一个逻辑topic在两个中心创建A.topic、B.topic,并在一个镜像本地写入A,镜像复制入B,另一个中心则相反】
8.2.4 主备架构

主备存在的问题:
1>数据丢失和不一致性
2>失效备援之后的起始偏移量
3>复制偏移量topic
【0.10.0之后可以使用时间获取偏移量(基于消息的时间),可以在外部存储偏移量映射】
4>在使用备用kafka集群后
一般清理旧的主集群,将已运行的备用集群数据绘制到旧集群上,打成一致性
5>关于集群发现
切换备份时,需切换kafka集群地址,推荐使用DNS映射无痛切换,并重启消费者程序
8.2.5 延展集群
(三个数据中心)
8.3 kafka的MirrorMaker

8.4 其他方案
1>UReplicator:解决多次再平衡问题
2>Confluent的Replicator:解决配置同步与集群管理问题