当前位置: 首页 > news >正文

Kafka消息倾斜

今天发现一个Kafka消息倾斜的问题,小小记录一下

问题出现的原因:

我的topic有16个分区,我的用户id是uuid,整体是比较均匀的,对id做hash处理后然后对分区数量取模作为消息的key,最后发送Kafka消息使用如下方法:

	@Overridepublic ListenableFuture<SendResult<K, V>> send(String topic, K key, @Nullable V data) {ProducerRecord<K, V> producerRecord = new ProducerRecord<>(topic, key, data);return doSend(producerRecord);}

最后发现16个分区中有7个分区没数据

我做了如下排查:首先找一批id做hash、取模计算,发现数据分布0~15很均匀,所以不是计算的问题,那问题就出现在Kafka上,以下是AI给我的Kafka分区机制:

所以相当于做了两次hash并且取模,导致数据倾斜,改进如下:

	@Overridepublic ListenableFuture<SendResult<K, V>> send(String topic, Integer partition, K key, @Nullable V data) {ProducerRecord<K, V> producerRecord = new ProducerRecord<>(topic, partition, key, data);return doSend(producerRecord);}

直接使用指定分区的方法

http://www.lryc.cn/news/582834.html

相关文章:

  • 编码器(Encoder)和解码器(Decoder)
  • Spring注解驱动开发
  • window wsl 环境下编译openharmony,HarmonyOS 三方库 FFmpeg
  • Flutter基础(前端教程④-组件拼接)
  • Ansible 介绍及安装
  • ffmpeg 中config 文件一些理解
  • OSPFv3和v2区别(续)
  • 客户频繁变更需求,如何保障项目进度稳定
  • Spring AI:ETL Pipeline
  • 深入解读MCP:构建低延迟、高吞吐量通信中间件
  • C语言基础(1)
  • STM32第十八天 ESP8266-01S和电脑实现串口通信
  • Flutter编译安卓应用时遇到的compileDebugJavaWithJavac和compileDebugKotlin版本不匹配的问题
  • 超低功耗CC2340R SimpleLink™ 系列 2.4GHz 无线 MCU支持BLE5.3/Zigbee/Thread/专有协议
  • 数据库版本自动管理
  • 大倾斜视角航拍图像像素级定位
  • 4. isaac sim4.2 教程-Core API-Hello robot
  • Spring Boot 事务失效问题:同一个 Service 类中方法调用导致事务失效的原因及解决方案
  • 【网络协议安全】任务14:路由器DHCP_AAA_TELNET配置
  • UNet改进(18):SaFA-UNet-融合对称感知注意力的医学图像分割新方法
  • 国产飞腾主板,赋能网络安全防御硬手段
  • 各版本操作系统对.NET支持情况(250707更新)
  • Spring中Bean的实例化(xml)
  • 如何将32个步进伺服驱动器塞进小型板材分割机中?
  • WebSocket详细教程 - SpringBoot实战指南
  • 华中科大首创DNN衍射量子芯片登《Science Advances》:3D打印实现160μm³高维逻辑门
  • 【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
  • AI标注平台label-studio之二添加机器学习后端模型辅助标注
  • 【计算机网络】第三章:数据链路层(上)
  • C++ 的 copy and swap 惯用法