【发布时间】:2020-05-03 07:28:38
【问题描述】:
我有 22 个主题,一个主题中的顺序对我来说很重要。我没有任何分区。
基本上我有 11 个租户,每个租户需要两个主题。
我对是否为所有 22 个主题拥有一个消费者组或拥有 22 个消费者组感到困惑?
负载不多,消耗不是实时的,是离线进程,所以延迟几毫秒也无妨。
我对以下几点感到困惑:
1. 如果我有 一个 消费者组,其中 一个 消费者在 单个 机器上运行(JVM - Spring Boot 应用程序),消费者会与所有主题都使用一个线程还是每个主题会有单独的线程?如果是单线程,线程可能会过载。如果有多个线程,我将能够在不旋转另一台机器的情况下实现并行性(利用所有内核)。
2. 如果我有 一个 消费者组在 多个 机器(多个 JVM - Spring Boot 应用程序)上运行 多个 消费者收听所有主题,将Zookeeper 将不同主题的负载分配到不同的机器上?我知道来自一个主题的消息将始终发送到一台机器。
例如: 如果有 2 个消费者(每台机器一个),一个消费者组监听所有 22 个主题,并且如果 22 个主题同时产生消息,它们是否会分布在 2 台机器上,比如主题 1-11 的消息会发送到机器一和从主题 12-22 转到机器二?我只对负载分配感兴趣。
它是否以这种方式工作(假设所有主题的负载相同)?
2 台机器 -> 每台机器来自大约 11 个主题的消息
4 台机器 -> 每台机器来自大约 5 个主题的消息等等。
【问题讨论】:
标签: java multithreading spring-boot apache-kafka message-queue