Kafka:编写自定义分区程序还是只使用 Key?

Kafka: Write custom partitioner or just use Key?

所以我有一个包含多个分区的 Kafka 主题,我在上面生成消息。我希望根据用户 ID 对消息进行分区。我可以通过使用 UserId 作为消息键或编写自定义分区程序来实现这一点。我如何确定哪个是正确的解决方案,优缺点是什么?

如您所知,使用用户 ID 作为键,您确定具有相同用户 ID 的消息将始终传送到同一分区,但您无法决定分区本身。我的意思是默认分区程序在具有目标分区的分区的键 % 数量上处理哈希。 如果在您的应用程序中您需要将具有特定用户 ID 的消息转到特定分区(即您希望以 "A" 开头的用户 ID 转到分区 0),您需要编写自定义分区程序。 如果您没有任何限制,我认为使用 user-id 作为键的默认分区程序对您来说效果很好。 在任何情况下,在发送和接收之后,您都会获得有关分区的信息。