分区技术在kafka分区中均匀分布数据

Exp*_*rer 2 partitioning apache-kafka

我有以下场景,我有多个大文件(每个约200M记录),我想通过kafka发送该文件.为了获得更好的性能,我想使用Kafka分区来发送数据.现在我的数据要求是针对特定键,所有消息都应该转到特定分区.目前,对于POC,我使用10个kafka分区并使用数字ID字段对数据进行分区.我的逻辑只是检查IT的最后一位,并将记录发送到相应的kafka分区.EX:ID - ***7将始终进入分区7.现在,此逻辑不能用于概括我的代码,因为密钥可以是非数字的,并且可以根据需要增加/减少分区数.

我想知道是否有一个哈希算法可以0-9根据给定的范围生成特定范围内的值(比如我必须有10个分区,然后它应该创建所有以哈希值结尾)?

Mic*_*cki 6

是的,您可以简单地使用密钥的哈希码模数分区数.但这就是默认分区程序正在使用的东西,所以不妨使用它.

https://github.com/apache/kafka/blob/0.11.0/clients/src/main/java/org/apache/kafka/clients/producer/internals/DefaultPartitioner.java#L69