当前位置: 首页 > 知识库问答 >
问题:

Kafka中的关联与动态主题

孔和畅
2023-03-14

我正在用Kafka建立一个相关的系统。假设有一个执行数据处理的服务a,有数千个客户端B向其提交作业。B是短暂的,它们出现在网络上,将数据推送到A,然后发生两件重要的事情:

  1. B将立即收到a的状态信息

(这与网格计算或mpi没有什么不同)。

这两点都应该使用一个众所周知的相关的概念来实现:B拥有一个唯一的id(在我的例子中UUID),它在标题中发送给A,然后A将其用作Reply-To要向其发送状态更新的主题。这意味着它必须随时创建主题,它们不能预先确定。

我打开了auto.create.topics.enable,它确实动态地创建了主题,但是现有的消费者并不知道它们,并且需要重新启动[以获取主题元数据,如果我理解正确的话]。我还检查了消费者的metadata.max.age.ms设置,但它似乎没有帮助,即使我将其设置为非常低的值。

据我所知,这还没有答案,即:Kafka过滤/动态主题创建,Kafka消费者动态检测添加的主题,Kafka制作人能否创建主题和分区?或者回答不满意。

因为有数百个A和数千个B,我不可能使用共享主题或类似的东西,以免我的网络过载。我可以使用Kafka的AdminTools,或者任何它的名字,来预先创建主题,但是我发现它有点傻(即使我看到了人们使用它与Zoowatch和Kafka架构体系本身对话的真实例子)。

所以问题是,有没有一种方法可以动态地创建Kafka主题,使消费者和制作人都知道它,而无需重新启动或做任何事情?而且,在最坏的情况下,AdminTools真的会帮助它吗?我应该在哪一边使用它-A还是B?

Kafka 0.11,Java 8

UPDATE使用AdminClient创建主题无论出于什么原因都没有帮助,当我尝试订阅时,消费者仍然会抛出LEADER_NOT_AVAILABLE

共有2个答案

齐航
2023-03-14

不建议创建数量无限的主题。我建议重新设计您的拓扑/系统。

我曾想过自己制作动态主题,但后来意识到zookeeper最终会失败,因为它会因为过时的主题而耗尽内存(想象一下一年后可以创建多少主题)。如果你确定你对所创建的主题有一定的上限,这可能会奏效。总的来说,这是一个令人头痛的行政问题。

如果您查找使用Kafka请求响应,您会发现其他人也说这样做很尴尬(Kafka是否支持请求响应消息)。

关正雅
2023-03-14

好的,我来回答我自己的问题。

  1. 只有在创建相应的使用者之前执行,才能使用AdminClient创建主题

应该注意的是,正如许多人所说,这只适用于B在单个消费群体中,并且收听带有1个分区的主题的情况。

为了了解我所从事的工作,您可以看看我一直在开发的中间件框架https://github.com/ikonkere/magic.

 类似资料:
  • 你可以使用 setFetchMode() 在运行时定义动态关联抓取的语义。 List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .setFetchMode("mate", FetchMode.EAGER) .setFetchMode("kittens",

  • 用于concat的ffmpeg文档按以下方式列出 我真的很想知道人们是如何使用上面的概念(我希望它是如何工作的)从移动设备发送视频块进行直播的

  • 对于预先知道所有可能的类的系统来说,多态性和虚函数当然会运行得很好,但是当向系统中添加各种各样的新类时,它们同样也会运行得很好。动态关联(也叫滞后关联)允许向系统中添加新类。对于要被编译的虚函数调用来说,编译时可以不必知道对象的类型。在运行时,虚函数调用和被调用对象的成员函数相匹配。 屏幕管理程序可以不经过重新编译就可以处理添加到系统中的新的显示对象,draw函数的调用还是和原来的一样,新对象自己

  • 从《UML用户指南》第5章中,我发现了以下内容: 为了模拟结构关系, > 对于每对类,如果您需要从一个对象导航到另一个对象,请指定两者之间的关联。这是关联的数据驱动视图。 对于每对类,如果一个类的对象需要与另一个类的对象交互,而不是作为操作的参数,请指定两者之间的关联。这更像是一种由行为驱动的关联视图 这是我对第一类关联的理解,通过以下示例:一个类,User,具有三个属性,其中一个是另一个类,Ad

  • null 但问题是,如果主题是动态创建的(我的意思是说在使用者代码启动之后),它将不起作用,但API说它将支持动态主题创建。这里是供你参考的链接。 Kafka版本:0.9.0.1 https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/consumer/kafkaConsumer.html 任何帮助都是非常感

  • 我正在使用JPA(Hibernate)并试图用childs和复合键持久化整个新实体,但当持久化childs时,我在键中得到了null。表结构: 映射: