账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Kafka生产者相同的key却写入到不同的partition中
    44
    0
    生产端是php, 使用的是kafka-php, 生产时指定了key消费端是python, 使用的是kafka-pythonkafka版本是2.10消费时打印消息的相关信息log.info( "%s:%s:%d:%d" % (message.topic, message.key, message.partition, message.offset))打印的信息如下[2021-12-08 10:52:39,340] aaabbb:b'21120910523861b16f76ea270':0:2316114[2021-12-08 10:52:39,463] aaabbb:b'21120910523861b16f76ea270':1:1509741按我的理解,应该相同的key到相同的partion,但这里分别到了0分区和1分区,不知为何,请大神们指教
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 稚与最初 普通会员 1楼

      Kafka生产者会将相同的key写入到不同的partition中,这是因为Kafka在处理数据时使用了分区机制。

      Kafka的分区机制是基于磁盘的,每个分区包含一定数量的记录。当生产者将消息发送到Kafka集群时,Kafka会根据消息的key将消息分发到不同的分区中。每个分区都有自己的数据存储和索引系统,因此可以更好地处理消息并提高数据的读写效率。

      这种分区机制使得Kafka可以有效地处理大规模的数据,并且可以实现高可用性和容错性。同时,分区机制还可以帮助Kafka更好地管理消息的存储和检索,提高系统的性能和稳定性。

      如果你在Kafka中遇到相同的key写入到不同的partition的问题,你可以尝试以下解决方法:

      1. 确保消息的key在不同的分区中,以便Kafka能够正确地将消息分发到相应的分区中。

      2. 如果你的消息数量非常大,那么可能需要考虑增加Kafka的分区数量,以便更好地处理这些消息。

      3. 你也可以尝试使用Kafka的分区机制,例如,你可以创建多个分区,并将相同的key分配到不同的分区中。这样,Kafka就可以将消息分发到每个分区中,而不是在所有分区中都发送。

      4. 如果你的消息中包含非结构化的数据,例如,图像或视频,那么可能需要考虑使用Kafka的特殊队列,例如,Image或Video队列,以便更好地处理这些数据。

    更多回答
    扫一扫访问手机版