Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 我应该创建更多的主题还是更多的分区?_Apache Kafka_Apache Kafka Streams_Kafka Topic - Fatal编程技术网

Apache kafka 我应该创建更多的主题还是更多的分区?

Apache kafka 我应该创建更多的主题还是更多的分区?,apache-kafka,apache-kafka-streams,kafka-topic,Apache Kafka,Apache Kafka Streams,Kafka Topic,卡夫卡接受其他国家的命令 我需要按国家对这些订单进行分组。我应该创建更多具有国家名称的主题,还是应该创建一个具有不同分区的主题 另一个是有一个主题并使用strean Kafka过滤订单并发送到特定国家主题 如果一个国家的数量超过180,有什么更好 我希望在特定国家/城市的执行者之间分发订单 备注: 因此,order有关于国家/城市的数据。然后卡夫卡必须在这个国家/城市找到执行者,并向他们发出同样的命令。tl;dr 在您的情况下,我将创建一个主题国家,并使用国家/地区id或国家/地区名称作为消息键

卡夫卡接受其他国家的命令

我需要按国家对这些订单进行分组。我应该创建更多具有国家名称的主题,还是应该创建一个具有不同分区的主题

另一个是有一个主题并使用strean Kafka过滤订单并发送到特定国家主题

如果一个国家的数量超过180,有什么更好

我希望在特定国家/城市的执行者之间分发订单

备注:

因此,order有关于国家/城市的数据。然后卡夫卡必须在这个国家/城市找到执行者,并向他们发出同样的命令。

tl;dr

在您的情况下,我将创建一个主题
国家
,并使用
国家/地区id
国家/地区名称
作为消息键,以便将同一国家/地区的消息放在同一分区中。通过这种方式,每个分区将包含特定国家(或多个国家,视情况而定)的信息


我想说,这个决定取决于多种因素

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

  • 主机存储功能:一个分区必须适合主机的存储,而一个主题可以通过跨多个分区来分布在整个Kafka集群中。我们可以对这一点有更多的了解:

    日志中的分区有多种用途。首先,他们允许 日志的大小不能扩展到适合单个服务器的大小。每个 单独的分区必须适合托管它的服务器,但主题 可能有许多分区,因此它可以处理任意数量的数据。 第二,它们作为并行性的单位,在某种程度上更多地依赖于并行性

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

  • 保留策略:Kafka中的邮件保留在分区/段级别上起作用,您需要确保您所做的分区以及所选的所需保留策略将支持您的用例


请提供更多关于这些国家数据量的详细信息。是均匀分布的吗?我已经修正了,谢谢。如果我有一个推荐主题,我会在这个主题中为用户存储关于电影的推荐。如何将用户绑定到此主题?用于检索具体用户id的建议?我可以用key:user_id创建分区。但如果id用户超过100000,Kafka说在主题中不要创建超过10000个分区。如果我有实体顺序,那么我想用一些参数对这些顺序进行分类。是否应该是不同的分类器主题或分区?@AliceMessis在您的情况下,我将创建一个主题
国家
,并使用
国家/地区id
国家/地区名称
作为消息键,以便将同一国家/地区的消息放置在同一分区中。通过这种方式,每个分区将包含特定国家(或多个国家,视情况而定)的信息。例如,用户可以订阅价格超过300 pointsHi@AliceMessis的订单,请记住stackoverflow意味着有一个问题和一个答案。不鼓励在评论中添加越来越多的问题,除非你想理解给出的答案。对于未来的问题,我建议在你的原始帖子中提供尽可能多的信息和关注点。这有助于人们给你全面的答案。