【问题标题】:Parallelism at Kafka Topics or Partitions LevelKafka 主题或分区级别的并行性
【发布时间】:2015-12-11 09:42:37
【问题描述】:

为了根据一个键分离我的数据:我应该在同一个主题中使用多个主题还是多个分区?我是根据服务器上造成的开销、计算、数据存储和负载来询问的。

【问题讨论】:

    标签: message-queue apache-kafka messagebroker kafka-python


    【解决方案1】:

    我建议将您的数据分离(分区)到同一主题内的多个分区中。 我假设数据在逻辑上属于一起(例如点击事件流)。 在同一个主题中使用多个分区对数据进行分区的优势主要在于所有 Kafka API 都实现为这样使用。

    将数据拆分为主题可能会导致生产者和消费者实现中的代码更多。

    【讨论】:

      【解决方案2】:

      正如@rmetzger 所建议的,将记录拆分为多个主题会增加生产者级别的复杂性,但可能还有一些其他因素值得考虑。

      在 Kafka 中,并行度的主要级别是主题中的分区数量,因为这样您就可以生成许多消费者实例,以保持从同一主题并行读取数据。

      例如,如果您有一个基于具有 N 个分区的事件的单独主题,那么在消费时您将能够创建 N 个消费者实例,每个实例专用于同时从特定分区消费。但在这种情况下,消息的顺序不能保证。即在并行消费的情况下,消息的顺序会丢失

      另一方面,将同一主题中的记录保存在单独的分区中将使这更容易实现,并且消费者消息按顺序排列(Kafka仅提供分区内消息的总顺序,而不是不同分区之间的消息在一个主题中。)。但在这种情况下,您只能运行一个消费者进程。

      【讨论】:

        猜你喜欢
        • 2016-10-01
        • 2015-03-05
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        相关资源
        最近更新 更多