Apache kafka 多个kafka生产者设置:消除延迟/过时写入
我有一个中央数据库,读卡器从中按接收顺序读取数据,然后写入卡夫卡主题。对于弹性,我们有多个读卡器,但一次只能有一个读卡器处于活动状态,因此,事件按接收顺序用卡夫卡编写。读卡器的切换由其订阅的中央数据库决定,如果读卡器在过去n秒内没有响应,它可以切换到其他读卡器以维护SLA 为简单起见,假设每个更改本质上都是文档更改。因此,change1更新Doc1,change2更新Doc2,change3再次更新Doc1,等等,作为每次更改的一部分,您将收到更新的文档Apache kafka 多个kafka生产者设置:消除延迟/过时写入,apache-kafka,Apache Kafka,我有一个中央数据库,读卡器从中按接收顺序读取数据,然后写入卡夫卡主题。对于弹性,我们有多个读卡器,但一次只能有一个读卡器处于活动状态,因此,事件按接收顺序用卡夫卡编写。读卡器的切换由其订阅的中央数据库决定,如果读卡器在过去n秒内没有响应,它可以切换到其他读卡器以维护SLA 为简单起见,假设每个更改本质上都是文档更改。因此,change1更新Doc1,change2更新Doc2,change3再次更新Doc1,等等,作为每次更改的一部分,您将收到更新的文档 现在考虑下面的场景。在下面的示例中,Dx
现在考虑下面的场景。在下面的示例中,Dx Vy表示DocX VersionY:
我查阅了卡夫卡文档,但找不到任何卡夫卡属性可以帮助我处理此场景。我还用谷歌搜索了类似的问题,看看是否有任何现有的答案来解决这个问题。查找分布式Sagas@cricket_007我认为这不适用于这里,因为编写卡夫卡更改的读者可能会被卡住足够长的时间,同时,我们需要开始从另一个读者提交更改。因为原始制作人被卡住了,我们无法通过沟通来停止写卡夫卡。另外,由于sla很紧,其他读卡器不能等待太长时间来获得来自原始读卡器的ack。我在想,是否有办法阻止制作人使用卡夫卡集群配置向卡夫卡写入内容?这样,在切换到新的阅读器之前,我们先阻止原制作人。没有办法阻止制作人。。。你说它被卡住是什么意思?制作人可能会被卡住,比如说写入卡夫卡的机器/进程被挂起,然后稍后恢复。在机器/进程挂起的窗口期间,无法与其通信,因此,在恢复时停止向Kafka提交(如果说机器/进程在写入Kafka之前挂起)。仍然不清楚它是如何被卡住的(IO等待?线程死亡?GC时间过长?…这些问题应该在卡夫卡问题的上下文之外解决)。听起来您需要一些外部监控系统,以设置分布式锁,并防止发生其他事情,如果您必须等待生产者做些什么的话