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

kafka重平衡经验总结

文章目录

    • 概要
    • 背景
    • 解决方法
    • 技术细节
    • 小结

概要

关于kafka重平衡问题在实践工作的应用

背景

重平衡包括以下几种场景:

  1. 消费者组内成员发生变更,这个变更包括了增加和减少消费者。注意这里的减少有很大的可能是被动的,就是某个消费者崩溃退出了
  2. 主题的分区数发生变更,kafka目前只支持增加分区,当增加的时候就会触发重平衡
  3. 订阅的主题发生变化,当消费者组使用正则表达式订阅主题,而恰好又新建了对应的主题,就会触发重平衡

在实际工作应用中, 第一点出现的情况会比较多, 因为2,3经常就是初始化时候会触发一次,正常运行下是不会出现2,3的, 1增加和减少消费者, 在涉及新服务接入等场景时, 会触发。

导致1情况出现的具体场景有:

  1. 某个消费者服务重启
  2. 某个服务在进行消费时(消费消息的过程就是对消息的计算或者说CSUD), 这个消息卡顿住了, 进而超时, 影响了整个消费者
    例如: 500 max.poll.interval.ms 默认值5分钟,表示若5分钟之内消费者没有消费完上一次poll的消息,那么consumer会主动发起离开group的请求

解决方法

提示:这里可以添加技术名词解释

例如:

  • 抑制重试机制,在工作中,一个消费者太长时间不去进行消费, 会被强制踢掉下线,这样就会导致消费者的减少, 进而整个消费者组都进行重平衡
  • 优化架构, 很多架构都是下游处理单元直接作为消费者进行消费, 例如下游A,B,C三个服务直接消费kafka, 那么其中一个服务除了问题, 都有可能会影响到其余两个服务的消费, 这种情况下, 可以考虑通过优化架构的方式实现, 重新建立一个服务, 只负责作为消费者拉取消息,那么,流程就是kafka->D->A,B,C, D只负责拉取消息, 并存储(存储到redis, mysql, ES等存储组件中), 下游的A,B,C再去这些存储组件拉取消息并进行处理
  • 消费者消费逻辑优化 消费消息时, 可以先把消息存储下来, 后续在进行处理
  • GPT-3
  • ChatGPT

技术细节

小结

kafka重平衡无法避免, 但可以通过多个手段来保证稳定性, 包括业务层的优化, 架构的优化和kafka组件配置的设置等

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

相关文章:

  • Py之jupyter_client:jupyter_client的简介、安装、使用方法之详细攻略
  • 61.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏红字公告功能的逆向分析
  • neo4j查询语言Cypher详解(五)--apoc
  • odoo17 | 视图操作按钮
  • KBDPL.DLL文件丢失,软件游戏无法启动,修复方法
  • Webpack5 常用优化总结
  • Oracle-视图与索引
  • 在Linux写自己的第一个程序“hello Linux”
  • 【AI视野·今日Robot 机器人论文速览 第六十八期】Tue, 2 Jan 2024
  • 图像识别快速实现
  • 一文详解动态 Schema
  • Web网页开发-总结笔记2
  • C#的StringBuilder方法
  • 美格智能5G RedCap模组SRM813Q通过广东联通5G创新实验室测试认证
  • MVCC 并发控制原理-源码解析(非常详细)
  • 通过国家网络风险管理方法提供安全的网络环境
  • input中typedate的属性都有那些
  • 将PPT4页并排成1页
  • iPhone 恢复出厂设置后如何恢复数据
  • 欧洲最好的AI大模型:Mistral 7B!(开源、全面超越Llama 2)
  • Python | 诞生、解析器的分类版本及安装
  • vim学习记录
  • bat脚本:将ini文件两行值转json格式
  • scratch绘制小正方形 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析
  • 【产品应用】一体化伺服电机在管道检测机器人中的应用
  • Django在urls.py利用函数path()配置路由时传递参数给调用的视图函数的方法
  • Ubuntu20 编译 Android 12源码
  • RFID传感器|识读器CNS-RFID-01/1S在AGV小车|搬运机器人领域的安装与配置方法
  • 用友U8 Cloud smartweb2.RPC.d XML外部实体注入漏洞
  • 220.【2023年华为OD机试真题(C卷)】考勤信息(滑动窗口算法-JavaPythonC++JS实现)