gpt4 book ai didi

apache-kafka - 将 Kafka 拆分为单独的主题或单个主题/多个分区

转载 作者:行者123 更新时间:2023-12-04 16:01:26 24 4
gpt4 key购买 nike

像往常一样,看到拆分方法相对于其他方法的好处有点令人困惑。

  1. 我看不出拥有之间的区别/利弊
    • Topic1 -> P0Topic 2 -> P0
    • Topic 1 -> P0, P1
      消费者从 2 个主题或单个主题/2 个分区中拉取,而 P0P1 将保存不同的事件类型或实体。

你唯一的好处我可以看到如果另一个消费者需要主题 2 数据,那么它很容易消费

  1. 关于主题自动生成,这种方式有什么好处,或者一段时间后就会失控?

谢谢

最佳答案

  1. 我会说这个决定取决于多种因素;

    • 逻辑/关注点分离:您可以根据您尝试实现的逻辑来决定是否在多个分区上使用多个主题。通常,您需要针对不同实体的不同主题。例如,假设您要流式传输 userscompanies。创建具有两个分区的单个主题没有多大意义,其中第一个分区保存 users,第二个分区保存 companies。此外,为多个分区设置一个主题将不允许您实现例如users 的消息排序只能使用键控消息来实现(具有相同键的消息放置在同一个分区中)。

    • 主机存储能力:一个分区必须适合主机的存储,而一个主题可以通过对它进行分区来分布在整个 Kafka 集群中多个分区。 Kafka Docs可以进一步说明这一点:

      The partitions in the log serve several purposes. First, they allow the log to scale beyond a size that will fit on a single server. Each individual partition must fit on the servers that host it, but a topic may have many partitions so it can handle an arbitrary amount of data. Second they act as the unit of parallelism—more on that in a bit.

    • 吞吐量:如果你有高吞吐量,那么为每个实体创建不同的主题并将它们分成多个分区以便多个消费者可以加入消费者组会更有意义。不要忘记 Kafka 中的并行级别是由分区的数量(显然是活跃的消费者)定义的。

    • 保留策略:Kafka 中的消息保留在分区/段级别上工作,您需要确保您所做的分区与您选择的所需保留策略相结合将支持您的用例。

  2. 现在谈到你的第二个问题,我不确定你的要求是什么,以及这个问题与第一个问题有何关系。当生产者尝试向不存在的 Kafka 主题写入消息时,当 auto.create.topics.enable 设置为 true 时,它将自动创建该主题。否则,主题将不会被创建,您的生产者将失败。

    auto.create.topics.enable: Enable auto creation of topic on the server

同样,此决定应取决于您的要求和所需的行为。通常,auto.create.topics.enable 应在生产环境中设置为 false 以降低任何风险。

关于apache-kafka - 将 Kafka 拆分为单独的主题或单个主题/多个分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57694999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com