命名 kafka 主题的最佳做法是什么?
What is the best practice for naming kafka topics?
我们是 kafka 的新手,我们有几个团队在开发一些 publish/subscribe 事件 to/from 的应用程序。由于 kafka 主题名称将在团队之间共享,是否有命名的最佳实践?
基本上我们不希望看到团队 A 命名一个主题 companyname-appname-events
而团队 B 以完全不同的风格命名另一个主题 productname_functionB
。
如有任何建议,我们将不胜感激!
请注意,这听起来可能更像是下面提出的问题:
What should be naming convention of topic and partition of Kafka?
但是,那里的作者提出了更具体的要求。
https://riccomini.name/how-paint-bike-shed-kafka-topic-naming-conventions 帮助我们回答了同样的问题。
作为总结,本文建议遵循类似的最佳做法来命名数据库和表,并提供以下额外的建议:
- 避免根据变化的事物命名主题
- 避免基于将存储在其他地方的信息的主题名称
- 根据计划避免使用主题名称 consumers/producers。这本质上是第一个建议的特例 :D.
- 尽早决定大小写,并考虑强制执行或至少 check/monitor。这样您就可以及早发现违规者。
我想提出上述答案的另一种方法,到目前为止在实践中效果很好,并且不会导致与产品或应用程序名称的任何耦合。
我的推荐:
业务域和子域的使用,例如:
public.sales.ecommerce.shoppingcarts
private.risk.portfolio.analysis.loans.csvimport
此外,域内部主题可以标记为“私有”或外部主题(例如,在质量保证之后)标记为“public”。
另一个例子:
private.risk.portfolio.pricingengine.assetpricing
域和子域的数量以及是否需要将流标记为 public 或私有显然取决于您组织的规模。一如既往,应该避免过度设计。
我写了一篇blog post "Topic naming conventions: How do I name my topics? 5 recommendations with examples",里面有更详细的介绍。
我们是 kafka 的新手,我们有几个团队在开发一些 publish/subscribe 事件 to/from 的应用程序。由于 kafka 主题名称将在团队之间共享,是否有命名的最佳实践?
基本上我们不希望看到团队 A 命名一个主题 companyname-appname-events
而团队 B 以完全不同的风格命名另一个主题 productname_functionB
。
如有任何建议,我们将不胜感激!
请注意,这听起来可能更像是下面提出的问题: What should be naming convention of topic and partition of Kafka? 但是,那里的作者提出了更具体的要求。
https://riccomini.name/how-paint-bike-shed-kafka-topic-naming-conventions 帮助我们回答了同样的问题。
作为总结,本文建议遵循类似的最佳做法来命名数据库和表,并提供以下额外的建议:
- 避免根据变化的事物命名主题
- 避免基于将存储在其他地方的信息的主题名称
- 根据计划避免使用主题名称 consumers/producers。这本质上是第一个建议的特例 :D.
- 尽早决定大小写,并考虑强制执行或至少 check/monitor。这样您就可以及早发现违规者。
我想提出上述答案的另一种方法,到目前为止在实践中效果很好,并且不会导致与产品或应用程序名称的任何耦合。
我的推荐:
业务域和子域的使用,例如:
public.sales.ecommerce.shoppingcarts
private.risk.portfolio.analysis.loans.csvimport
此外,域内部主题可以标记为“私有”或外部主题(例如,在质量保证之后)标记为“public”。 另一个例子:
private.risk.portfolio.pricingengine.assetpricing
域和子域的数量以及是否需要将流标记为 public 或私有显然取决于您组织的规模。一如既往,应该避免过度设计。
我写了一篇blog post "Topic naming conventions: How do I name my topics? 5 recommendations with examples",里面有更详细的介绍。