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

Partitioning technique to distribute data evenly in kafka partitions

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

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

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

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