Apache kafka 我应该创建更多的主题还是更多的分区?
卡夫卡接受其他国家的命令 我需要按国家对这些订单进行分组。我应该创建更多具有国家名称的主题,还是应该创建一个具有不同分区的主题 另一个是有一个主题并使用strean Kafka过滤订单并发送到特定国家主题 如果一个国家的数量超过180,有什么更好 我希望在特定国家/城市的执行者之间分发订单 备注: 因此,order有关于国家/城市的数据。然后卡夫卡必须在这个国家/城市找到执行者,并向他们发出同样的命令。tl;dr 在您的情况下,我将创建一个主题Apache kafka 我应该创建更多的主题还是更多的分区?,apache-kafka,apache-kafka-streams,kafka-topic,Apache Kafka,Apache Kafka Streams,Kafka Topic,卡夫卡接受其他国家的命令 我需要按国家对这些订单进行分组。我应该创建更多具有国家名称的主题,还是应该创建一个具有不同分区的主题 另一个是有一个主题并使用strean Kafka过滤订单并发送到特定国家主题 如果一个国家的数量超过180,有什么更好 我希望在特定国家/城市的执行者之间分发订单 备注: 因此,order有关于国家/城市的数据。然后卡夫卡必须在这个国家/城市找到执行者,并向他们发出同样的命令。tl;dr 在您的情况下,我将创建一个主题国家,并使用国家/地区id或国家/地区名称作为消息键
国家
,并使用国家/地区id
或国家/地区名称
作为消息键,以便将同一国家/地区的消息放在同一分区中。通过这种方式,每个分区将包含特定国家(或多个国家,视情况而定)的信息
我想说,这个决定取决于多种因素
- 逻辑/关注点分离:您可以根据尝试实现的逻辑决定是否在多个分区上使用多个主题。通常,不同的实体需要不同的主题。例如,假设您想要流式传输
和用户
。用两个分区创建一个主题没有多大意义,第一个分区容纳公司
,第二个分区容纳用户
。此外,将一个主题用于多个分区将不允许您为公司
实现消息排序,这只能通过使用键控消息来实现(具有相同键的消息放置在同一分区中)用户
- 主机存储功能:一个分区必须适合主机的存储,而一个主题可以通过跨多个分区来分布在整个Kafka集群中。我们可以对这一点有更多的了解: 日志中的分区有多种用途。首先,他们允许 日志的大小不能扩展到适合单个服务器的大小。每个 单独的分区必须适合托管它的服务器,但主题 可能有许多分区,因此它可以处理任意数量的数据。 第二,它们作为并行性的单位,在某种程度上更多地依赖于并行性
- 吞吐量:如果您的吞吐量很高,那么为每个实体创建不同的主题并将其拆分为多个分区会更有意义,这样多个消费者就可以加入消费者组。不要忘记,Kafka中的并行级别是由分区(显然是活动消费者)的数量定义的
- 保留策略:Kafka中的邮件保留在分区/段级别上起作用,您需要确保您所做的分区以及所选的所需保留策略将支持您的用例
国家
,并使用国家/地区id
或国家/地区名称
作为消息键,以便将同一国家/地区的消息放置在同一分区中。通过这种方式,每个分区将包含特定国家(或多个国家,视情况而定)的信息。例如,用户可以订阅价格超过300 pointsHi@AliceMessis的订单,请记住stackoverflow意味着有一个问题和一个答案。不鼓励在评论中添加越来越多的问题,除非你想理解给出的答案。对于未来的问题,我建议在你的原始帖子中提供尽可能多的信息和关注点。这有助于人们给你全面的答案。