设置了一个要添加kafka侦听器的网络套接字,我们基本上有100个主题以及同一主题的13个不同部分,例如,“ BOOKX”是一个主题,其中13个章节,因此额外的主题将是“ BOOKX1”,是否存在“ BOOKX2”等,有什么办法可以防止添加1300个主题? 我希望问题是可以理解的
答案 0 :(得分:0)
如果您首先有那么多主题,这听起来像是一个设计问题。如果可以的话,尝试找到减少这种情况的方法。否则,
您可以使用分区。在Kafka中,每个主题都可以有分区。创建主题时,可以定义主题的分区数。
使用这些消息时,将为消费者组中的每个消费者分配一个特定的主题分区。这样,您可以保证给定主题分区的顺序。
缺点是,如果使用者之一发生故障,则使用者将重新平衡,并且主题分区分配也将更改。但是您可以通过多种方式处理这种情况。
因此,如果要避免使用1.3k主题,则方法是使用100个主题,每个主题有13个分区。
答案 1 :(得分:0)
不建议创建太多主题,这可能是设计不良的标志。您是出于目的使用了错误的工具,还是以错误的方式使用了它。
我想您的数据分类如下
# define your variable
cmd="something goes here"
# print what is going to run
printf "$cmd"
# then run it
$cmd
您可以有一个名为 books 的主题,然后该主题中的每条消息将成为一本书的章节,其中键将为books {
book_1 {
chapter_1 {..}
chapter_2 {..}
chapter_3 {..}
...
}
...
}
,而值将为章节对象。像bookId_chapterNo
,book_1_chapter_1
等。
如果您想使用一本特定书籍或一组书籍的所有章节,则可以按如下键进行过滤:
book_1_chapter_2
通过这种方式,每个使用者都可以丢弃不感兴趣的消息。
您可能还想更改基于key.startsWith("book_1") || key.startsWith("book_2")
而不是bookId
的分区逻辑,以使来自特定书籍的消息进入相同的分区,这也使您可以利用使用者组工具。