Apache kafka 使用分区的ApacheKafka扩展主题

Apache kafka 使用分区的ApacheKafka扩展主题,apache-kafka,Apache Kafka,我们开始使用ApacheKafka将Timeseries数据持久化到Timeseries数据库中。我们从一个主题开始,一个生产者编写这个主题,一个消费者阅读这个主题,并将数据转储到Timeseries数据库 我们有3个代理实例,我们在第一次尝试中注意到,生产者非常快地将消息写入主题。在30分钟内,我们收到了大约150万条信息。消费者每秒只发送300条信息 我们的下一个方法是对主题进行分区,并拥有更多的使用者实例(等于分区的数量)。这无疑提高了消费者的写入速度。现在我的问题是: 如果我将主题分区设

我们开始使用ApacheKafka将Timeseries数据持久化到Timeseries数据库中。我们从一个主题开始,一个生产者编写这个主题,一个消费者阅读这个主题,并将数据转储到Timeseries数据库

我们有3个代理实例,我们在第一次尝试中注意到,生产者非常快地将消息写入主题。在30分钟内,我们收到了大约150万条信息。消费者每秒只发送300条信息

我们的下一个方法是对主题进行分区,并拥有更多的使用者实例(等于分区的数量)。这无疑提高了消费者的写入速度。现在我的问题是:

  • 如果我将主题分区设置为6,但只有3个代理实例,会发生什么。哪个代理实例将是分区1到6的领导者

  • 是否有一个公式来确定我需要多少个分区?因为这是我们的测试环境,我们可以使用它并扩展它。我们可能无法在生产环境中执行同样的操作。那么如何确定分区大小呢


  • 分区在代理之间进行分配。不可能知道哪个经纪人将被选为给定分区的领导人——而且它可能会随着时间的推移而改变。根据您使用的Kafka版本和使用者API的不同,使用者可能会自己发现分区引线,也可能不会。使用
    SimpleConsumer
    ,您必须自己查找分区领导,并在代码中响应新领导的选择(而不是由API自动处理)

    至于分区的数量——除了这个,没有真正的“公式”:你不能拥有比分区更多的并行性。如果您有4个分区和5个消费者,其中一个消费者将挨饿。对于大型主题,我通常使用12或60或其倍数作为分区数。在不同数量的消费者之间容易而清晰地划分的东西


    另外,请注意,您可以稍后更改分区的数量,但需要注意一些事项。请参阅如何以及注意事项是什么。

    我的问题是哪个代理将拥有领导者分区?我这里有6个分区和3个代理。那么每个代理将有2个分区作为主分区吗?是的,它平衡了它们。试试看。它还取决于创建主题时运行的内容。如果只有一个代理正在运行,它将只向该代理提供领导者。然后,如果你把你的第二个代理带回来,它可能会也可能不会自动地重新平衡你的分区领导。有一些设置可以控制这一点(不要从头开始回忆),还有一些命令行工具可以强制重新平衡甚至不平衡您的设置。