kafka在多数据中心场景下和单数据中心的场景部署是一样的吗?kafka的性能对分布式系统而言,非常重要。一旦延迟较大的情况下,应该如何部署。
一、为什么要跨数据中心部署?
大型的分布式软件,发展到一定阶段,一个数据中心满足不了需求,通常在一个城市会有多个数据中心,一个城市的多个数据中心通过专线连接,延迟比较小。
如果还是满足不了需求,例如你在世界各地都有用户,不可能让美国用户访问中国的服务,延迟非常严重。在一个城市无法做到容灾,例如,发生地震,整个城市都不可用了,这时候,你需要建立跨地域的数据中心。
一旦跨数据中心部署,如何让Kafka高可用?MirrorMaker就是为了解决这个问题而生。
挑战在什么地方?和其他跨数据中心部署的有状态的系统问题是一样的,消费者是有状态的,也就是offset,故障切换的过程中,如何保证一致性?
MirrorMaker是apache开源的kafka跨数据中心部署时的镜像工具,使用非常简单,
bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.configsourceCluster1Consumer.config --consumer.config sourceCluster2Consumer.config--num.streams 2 --producer.configtargetClusterProducer.config --whitelist=".*"
基于MirrorMaker的常用模式: