【问题标题】:How to achieve multi-tenancy in the context of Kafka and storm?Kafka和Storm环境下如何实现多租户?
【发布时间】:2014-06-24 08:23:06
【问题描述】:

在 Kafka 和 Storm 的上下文中构建多租户应用程序的最佳实践是什么?

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

【问题讨论】:

  • 一个后期评论来完善这个问题:不管你在 Kafka 端做什么,每个 Kafka-spout 实例也会在 zookeeper 中跟踪它的偏移量。对于适当的多租户,您还需要查看如何管理这些 Zookeeper 节点。对于非三叉戟喷口,这非常简单。通过证明zookeeper-root节点,但对于Trident,我只能冒险“客户端ID”在某种程度上是等效的。特别是 Spout 名称在 Storm-kafka 中如此神奇(它们是标识符并共享 ZK 信息),在尝试多租户时了解 Zookeeper 中发生的事情至关重要。

标签: java apache-kafka apache-storm


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      原因是:

      1. 它允许为每个租户灵活配置(如前面提到的@Sebastian)。
      2. 更清晰的逻辑分隔。

      现在假设我们将使用不同的方法。例如,为每个租户分区。这可能是有问题的,因为:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 2020-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多