如何在卡夫卡和风暴的背景下实现多租户?

时间:2014-05-07 11:21:59

标签: java apache-kafka apache-storm

在卡夫卡和风暴的背景下构建多租户应用程序的最佳做法是什么?

例如:为每个租户创建主题并使用多主题spout(使用通配符)。

3 个答案:

答案 0 :(得分:3)

我认为每个租户的话题都是正确的选择

命名约定可能是这样的: topic_base_name_tenant_id

原因是:

  1. 它允许每个租户灵活配置(如前面提到的@Sebastian)。
  2. 更清晰的逻辑分离。
  3. 现在让我们说我们将使用不同的方法。例如,每个租户的分区。这可能有问题,因为:

    1. 您将并行级别限制为租户数量。
    2. 添加新租户,结果添加新分区→重新发布旧消息(默认分区算法为:message_key%partition_size)。

答案 1 :(得分:2)

有时,每个应用程序可能需要多个主题。在这种情况下,您可以遵循以下主题命名约定: topic_base_name_tenant_id。因此,对于给定的基本主题,您将拥有与租户数量相同的主题

答案 2 :(得分:1)

不要将我的答案视为“最佳实践”,因为我不是Kafka专家,但如果它有所帮助:我们遇到了类似的设计方案(一个Kafka端点可供多个团队使用,作为中心点事件创建和路由)。在考虑了不同的选择之后,我们决定了你的建议:每个应用程序有一个主题(你可以说是租户),根据应用程序的需要定制主题(分区,限制等)。

希望这有帮助。