在为Apache Kafka创建主题时,什么是最佳实践?
每个人都允许自动创建主题,或者您是如何做到的?您是否将主题创建步骤与kafka-instance的开头捆绑在一起?
我有一个基于docker的Kafka安装,它已被多个应用程序使用.如何将每个应用程序的主题创建与Kafka容器的启动分开?看看Confluents音乐演示他们通过旋转一个新的kafka图像来创建主题,调用"create-topic-script"然后让容器死掉.这感觉"abcky",但maby是唯一的方式?
问候
在为Apache Kafka创建主题时,什么是最佳实践?每个人都允许自动创建主题,或者您是如何做到的?
这取决于你在做什么.您绝对可以使用主题自动创建,但随后自动创建的主题将在分区和复制因子方面具有默认的代理范围配置.
对于Kafka Streams,Confluent工程师建议在启动应用程序之前手动创建主题:
我还想指出,强烈建议不要为Streams使用auto topic create,而是在启动Streams应用程序之前手动创建所有输入/输出主题.
有关更多详细信息,请参阅 http://docs.confluent.io/current/streams/developer-guide.html#managing-topics-of-a-kafka-streams-application
关于至于对于有关:
您是否将主题创建步骤与kafka-instance的开头捆绑在一起?
是.如果您有Java应用程序,则可以AdminClient在main启动应用程序之前使用应用程序的方法.如果您有其他类型的应用程序,则可以运行bin/kafka-topics.sh在应用程序之前调用的init脚本.如果您正在使用Kubernetes,则可以使用Kubernetes Init容器.但显然有很多方法可以做到这一点.
这感觉"abcky",但maby是唯一的方式?
我不认为这是hacky.我认为,使用init步骤很正常.
最后,还要注意您可能希望为主题配置保留策略.这可以使用代理范围的默认值或基于每个主题来完成:https://stackoverflow.com/a/48504305/741970.