我们是kafka的新手,我们有几个团队正在开发一些应用程序,这些应用程序可以相互发布/订阅事件。由于kafka主题名称将在各个团队之间共享,是否有任何最佳命名方法?
基本上,当团队B以完全不同的样式命名另一个主题companyname-appname-events
时,我们不希望看到团队A命名主题productname_functionB
。
任何建议都表示赞赏!
请注意,这可能听起来更像是以下问题: What should be naming convention of topic and partition of Kafka? 然而,作者在那里问了一些更具体的问题。
答案 0 :(得分:6)
https://medium.com/@criccomini/how-to-paint-a-bike-shed-kafka-topic-naming-conventions-1b7259790073帮助我们回答了同样的问题。
作为摘要,本文建议遵循类似的最佳实践来命名数据库和表,并提供以下额外的建议:
答案 1 :(得分:2)
对于上述答案,我想提出一种替代方法,该方法迄今为止在实践中运行良好,并且不会与产品或应用程序名称产生任何耦合。
我的建议:
使用业务域和子域,例如:
public.sales.ecommerce.shoppingcarts
private.risk.portfolio.analysis.loans.csvimport
此外,域内部主题可以标记为“私有”或外部主题(例如在质量保证之后)标记为“公开”。 另一个例子:
private.risk.portfolio.pricingengine.assetpricing
域和子域的数量以及您是否需要将流标记为公共或私有显然取决于您组织的规模。与往常一样,应避免过度设计。
我已经写了一个blog post "Topic naming conventions: How do I name my topics? 5 recommendations with examples",里面有更多的细节。