Kafka Streams内部主题命名

时间:2018-10-03 18:46:25

标签: apache-kafka apache-kafka-streams

根据文档(https://docs.confluent.io/current/streams/developer-guide/manage-topics.html#internal-topics),内部主题遵循命名约定<application.id>-<operatorName>-<suffix>

我们有一些示例:

testapplication-KSTREAM-REDUCE-STATE-STORE-0000000008-分区
testapplication-KSTREAM-REDUCE-STATE-STORE-0000000027-分区

有人知道如何确定整数吗?

很遗憾,我们的安全要求不允许我们使用应用程序创建主题,因此需要提前进行设置。我正在尝试确定这些主题名称是否一致。

5 个答案:

答案 0 :(得分:1)

通常,中间主题名称是按照以下约定构造的:

sed

后缀值可以是“ changelog”或“ repartition”

基于运算符,它使用后缀之一。这是一个示例:

testapplication-aggregate-repartition

testapplication-aggregate-changelog

答案 1 :(得分:0)

您是否已看过这些命令来设置Streams内部主题的ACL。我相信它们是作为Kafka v2.x.x(confluent doc)的一部分引入的

   # Allow Streams to manage its own internal topics and consumer groups:
   bin/kafka-acls ... --add --allow-principal User:team1 --operation All --resource- 
   pattern-type prefixed --topic team1-streams-app1 --group team1-streams-app1

因此,您只需要知道steams application.id,这是所有内部主题的前缀。

我相信您会授予全部权限,也将允许其创建。

答案 2 :(得分:0)

要回答有关主题名称是否一致的问题,以我的经验,在应用程序的执行之间,主题名称一直是一致的,但是,如果您在逻辑中修改,添加或删除任何联接或约简的顺序,则主题名称可能会更改。

答案 3 :(得分:0)

要回答您关于整数的主要问题,这就是我在文档中找到的内容:

<块引用>

数字是一个全局递增的数字,代表 算子在拓扑中的顺序。生成的号码有前缀 使用不同数量的“0”来创建一个始终如一的字符串 10 个字符长。

这是 kafka 流 DSL 的一个非常重要的方面,如果您更改拓扑,可能会导致一些问题。为您的有状态运算符命名是一个好习惯。

您可以在 dsl-topology-naming 篇文章中找到更多信息

答案 4 :(得分:-1)

整数是内部生成的。

您可以在此处找到记录的文件:

https://docs.confluent.io/current/streams/javadocs/index.html

在groupBy的方法描述下,它表示:

  

由于选择了新密钥,因此将在Kafka中创建内部重新分区主题。该主题的名称为“ $ {applicationId}- XXX -repartition”,其中“ applicationId”是用户在StreamsConfig中通过参数APPLICATION_ID_CONFIG指定的,“ XXX”是内部生成的名称,“-repartition”是固定后缀。您可以通过Topology.describe()检索所有生成的内部主题名称。