【问题标题】:Looking for alternative to dynamically creating Kafka topics寻找动态创建 Kafka 主题的替代方法
【发布时间】:2020-10-24 13:55:34
【问题描述】:

我有一项服务,它可以获取有关我们系统中实体的一些信息的快照,并保留该快照以供以后处理。目前在后期处理阶段,我们使用 http 获取信息。

我想使用 Kafka 通过动态创建主题来存储这些信息,这样快照就不会相互混淆。当服务获取实体时,它会创建一个唯一的主题,然后我们获取的每个实体都会被推送到该主题。后面的处理阶段会将主题作为参数传递,然后可以自行阅读所有信息。

这样做的好处是:

  1. 可以重新启动后期处理,以仅在其到目前为止已处理的偏移量处重新启动。
  2. 如果实体的请求很多(或流式处理传入的 http 响应),则无需担心实体请求的批处理(或流式处理),因为我们一次只读取一个。
  3. 以后可以轻松添加多个消费者组以用于其他处理目的。

但是,Kafka/Zookeeper 对其可以支持的主题/分区总数有一些限制。因此,我需要在处理完成后或根据任意时间过去删除它们。此外,由于(某些)处理器必须知道何时读取了所有信息,因此我需要在该主题上包含某种“流结束”消息。

两个一般性问题:

  • 像这样动态创建和删除 Kafka 主题是不是很糟糕?
  • 包含“流结束”类型的消息是否不好?

主要问题:

  • 是否有替代上述方法的替代方法,使用静态主题/分区,在处理发生之前不必保留内存中的实体?

【问题讨论】:

  • 分布式KV存储怎么样?例如:HBase 或 Cassandra
  • Kafka 的主要目的是作为 pub/sub 模型中的消息总线。听起来您并没有真正将它用于此目的,这让我认为它不是此用例的正确工具
  • @pwilmot 我猜你可能是对的。它似乎不太适合我想做的事情。 KV 存储可能是更好的选择,尤其是。如果它支持将查询结果作为流读取。

标签: apache-kafka


【解决方案1】:

似乎可以选择一个“紧凑”的主题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多