Apache kafka 阅读卡夫卡在东方和西方的留言

Apache kafka 阅读卡夫卡在东方和西方的留言,apache-kafka,Apache Kafka,我有一个场景,我们需要从卡夫卡东部和卡夫卡西部读取MSG,制作人在那里交替发送消息 Kafka EAST有一个主题T1,复制主题T1.R来自“WEST”。同样,Kafka WEST也有一个相同的主题T1和复制主题T1.R,来自“EAST”。实际上,在任何给定的区域,我们都将拥有由生产者生成的完整消息集。到目前为止,一切都很好 现在,我们需要阅读这些信息 从东部开始,如果我开始批量阅读40K MSG的消息,并且如果卡夫卡东部在读取该批消息的过程中在给定的时间点下降,我可以从西部开始阅读(当然,同样

我有一个场景,我们需要从卡夫卡东部和卡夫卡西部读取MSG,制作人在那里交替发送消息

Kafka EAST有一个主题T1,复制主题T1.R来自“WEST”。同样,Kafka WEST也有一个相同的主题T1和复制主题T1.R,来自“EAST”。实际上,在任何给定的区域,我们都将拥有由生产者生成的完整消息集。到目前为止,一切都很好

现在,我们需要阅读这些信息

从东部开始,如果我开始批量阅读40K MSG的消息,并且如果卡夫卡东部在读取该批消息的过程中在给定的时间点下降,我可以从西部开始阅读(当然,同样的阅读失败也适用于西部)

但是,卡夫卡东部的偏移量与卡夫卡西部的偏移量不同。这是通过确定在其他区域开始读取的位置来读取问题的根源!!!所以,我将从西部地区开始阅读

嗯,我正在考虑偏移元数据,并以时间戳作为参考,稍微回到时间戳,开始从西方阅读。但是,如果东卡夫卡存在,那么只能读取最新的偏移量和它的时间戳(但是,如果它存在,那么没有问题,我可以继续读取它自己!!!)如果它死了,我们也无法读取,因为偏移量存储在卡夫卡中。当然,当它回来时,我们可以阅读,这不是我试图解决的问题

当东卡夫卡倒台时,我想开始从西读。只有在每次批读取成功后,我才能将偏移量外部化并提交。当我们收到东卡夫卡关闭的信号时,WEST read被激活,开始从与东上次提交相同的批id进行读取


这是最好的方法吗?或者我们有没有标准模式来解决这个问题?请注意,我们已经考虑过跨区域。我们现在只是在地区层面上解决问题。

我认为您对卡夫卡倒闭的担忧是正确的,但我认为如果您在该主题内通过合理的最小ISR设置,在足够多的代理上增加足够的复制系数,只有当网络交换机或数据中心机架或可用性区域发生故障时,您的主题才会不可用。换句话说,您应该专注于提供高可用性、单个聚合的Kafka集群(例如,通过MirrorMaker),而不是处理连接两个不同集群的偏移管理,以及在其中一个可用时路由请求。我很好奇Kafka EAST在一个集群中,而Kafka WEST是另一个集群?抱歉,我试图理解@useri同意你@cricket_007,我试图理解我们可以在一个集群上进行类似于本主题的设计,在不同的集群上具有复制因子吗?可能吗?@Deadpool复制副本放置不跨群集。您需要事先在集群中配置匹配的主题,并使用MirrorMaker复制主题数据。Confluent Replicator能够复制配置本身,但它显然不是免费的解决方案。我一直在使用一些MirrorMaker消息处理程序,它会定期轮询和同步主题配置,但它是专有的,所以不能共享itokay。明白了,谢谢@cricket_007