首页 > 其他分享 >Kafka常见痛点及优化方案

Kafka常见痛点及优化方案

时间:2022-11-24 19:33:33浏览次数:32  
标签:请求 痛点 broker Kafka topic 集群 优化

Kafka常见痛点及优化方案


daas是一种对企业数据能力服务化的架构就像iaaspaas虚拟化了计算机的算力存储和网络及中间件一样daas虚拟化了企业数据作为一个云服务提供出来可以大量减少企业为使用数据而耗费的etl精力
文章目录

Kafka常见痛点及优化方案

1.集群木桶效应,broker雪崩
痛点: 当整个集群当leader和follower分布不均衡时,这可能导致流量分布不均衡。一部分节点比较空闲,一部分节点负载过高(这里当负 载主要是磁盘IO与网络带宽,CPU基本上不会成为Kafka的瓶颈)。最后导致出现大量副本缺失,直至broker挂掉后,流量压力转移 到另外一个broker节点,很可能这个节点也会因为负载过大而被打挂。

优化方案: 1)实现一套自动负载均衡程序,自动生成均衡计划,逐个topic进行均衡。【推荐】 2)手动切换分区leader或者进行副本迁移;【效率低,不推荐】
2.集群扩容无法自动负载均衡
痛点: 当扩容集群时,topic的分区生产消费无法落在新加入的broker节点上。这样相当于已经存在的topic读写数据无法落在新broker节点 上,从而新节点无法得到充分利用。

优化方案: 1)实现一套自动负载均衡程序,自动生成均衡计划,逐个topic进行均衡。【推荐】 2)手动切换分区leader或者进行副本迁移;【效率低,不推荐】
3.集群副本迁移影响集群稳定,迁移任务不可控
痛点: 当需要迁移的分区数据量比较大时(单分区数据量超过100GB以上),这将导致迁移任务启动的新副本会从leader所在的broker节点 大量拉取历史数据。这可能带来以下问题: 1)broker的磁盘IO被持续打满; 2)操作系统pagecache受到污染,导致生产消费延迟; 3)出现大量副本缺失; 4)迁移任务一旦开启便无法停止,只有让其执行失败或者成果才能结束。

优化方案: 1)改造源码,从最新偏移量开始同步数据,实现增量副本迁移; 2)增量迁移,新副本加入isr列表的时机可以根据当前分区是否有消费延迟和指定同步时间两个方面去考虑; 3)修改源码,对迁移任务添加可手动终止功能;
4.异常流量打挂集群
痛点: 当出现入流量当突增或出流量当突增时,可能造成broker节点负载过大(经常时磁盘IO被持续打满到100%)。以下情况容易造成流 量突增: 1)新业务上线,数据源加入了新的大业务,生产者写入流量突增; 2)消费端程序从历史最早位置开始消费,拉去大量历史数据; 3)消费端程序停止服务一段时间后,重启追数; 4)大topic在消费端程序有新的消费者组加入,出流量突增;

优化方案: 1)根据用户维度,对各集群用户的出入流量进行限制;保证单个broker节点上所有用户的出入流量之和在broker的处理能力范围 内;
5.一个业务异常影响整个集群稳定
痛点: 当某个业务的部分topic异常时,可能会影响到集群上的其他业务。
优化方案: 根据不同业务线,以资源组为单位对集群进行物理隔离,让各业务线的topic都是分布在自己的资源组内。不受其他业务线影响
6.pagecache污染及优化
痛点: 1)大量拉去历史数据,导致pagecache污染,造成生产消费延迟;
优化方案: 1)对pagecache参数进行调优;文章地址: 2)修改源码,对kafka的cache进行改造。自定义一套cache,专门用来做消费cache。保证副本同步和拉取历史数据不会污染最近 生产的数据。
7.磁盘故障或者坏道,整个broker半死不活
痛点: 1)当整块磁盘故障或出现磁盘坏道情况,整个broker部分分区可以读写,部分分区无法读写;broker进程不会主动推出,坏道所影 响的分区消费一直被卡住,同时造成数据丢失。
优化方案: 1)当整块磁盘故障或者坏道时,消费者消费会在服务端抛出一些特定关键字符串当异常信息,用程序扫描异常信息,检测到后,把对 应的磁盘从 log.dirs 中剔除;
8.同一个消费者组消费多个topic问题
痛点: 1)当同一个消费者组消费多个topic,无法回收消费者组下某个topic的读权限,只能对整个组下面的topic进行读权限回收; 2)消费组内多个topic间经常出现join操作,导致topic分区重新分配,影响整个组下面topic消费;
优化方案: 1)限定一个组只能消费一个topic;
9.所有请求竞争同一个阻塞请求队列
痛点: 1)kafka中所有请求,包括元数据请求及生产消费请求,全部使用了同一个请求队列。当集群达到一定规模后,出现请求队列被用 完,不同类型的请求相互影响,相同类型的请求也会相互影响,被阻塞。

优化方案: 1)根据不同的请求类型,对请求队列进行拆分;这里主要是分为元数据类请求、生产请求、消费请求三类;
10.核心业务无法实现跨集群高可用
核心业务采用多链路来实现跨集群高可用。

标签:请求,痛点,broker,Kafka,topic,集群,优化
From: https://www.cnblogs.com/xiedy001/p/16922991.html

相关文章

  • tomcat并发优化
    tomcat并发调优展开1.场景还原     近期笔者在线上项目中遇到了tomcat假死的现象,服务器相关配置均属正常,但是app访问速度很慢;于是笔者想出两种解决方案:①nginx+to......
  • Kafka学习
    Kafka学习一、kafka所需的命令启动kafka要先启动zookeeper,zookeeper学习可以参考bilibili的尚硅谷的教程:07_尚硅谷_zk_本地_安装_哔哩哔哩_bilibili。启动kafka需要执行......
  • mysql索引和性能优化
    使用索引的原则1.如果没有唯一性要求,可以选择普通索引2.如果列上有唯一性要求,可以选择唯一索引3.如果是需要模糊搜索,建议选择全文索引4.如果有多个条件一起查......
  • Kafka 日志存储及其清除策略
    Kafka日志存储及其清除策略日志存储结构Kafka存储结构图:kafka中消息是以主题topic为基本单位进行归类的,这里的topic是逻辑上的概念,实际上在磁盘存储是根据分区存......
  • Kafka 延时队列,重试队列,死信队列
    延时队列在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些Kafka内部的主题(delay_topic)中,这些内部主题对用户不可见,然后通过一个自定......
  • 浅谈web性能优化(一)
    压力测试        在浅谈性能优化之前呢,先介绍一下压力测试。项目在上生产环境之前呢,需要先进行压力测试,模拟并发,看看系统的吞吐量大概是多少,告知运维人员的系统吞吐......
  • 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观
    本站文章均为​​ 李华明Himi ​​​原创,转载务必在明显处注明:​​​​​1. 循环分页或者循环进行部分读取处理数据的时候,使用session.clear(); 2.  对应1+N(N+......
  • 检测内存泄漏、优化的常用手法[笔记]
    可视化自动内存泄漏检测//debugImplementation'com.squareup.leakcanary:leakcanary-android:2.3'///屏蔽提升操作速度,开启后不需要任何代码的。原理是内容提供者开......
  • Docker搭建Kafka集群
    对于个人开发者而言,一般手头上没有多台服务器,有人可能会有云服务器,不过一般也只会买一台来用用就好;有人可能更习惯将本机当作服务器来玩。都可以。那么如何通过一台服务器或......
  • Kafka分区分配策略
    生产者发送消息分区分配策略kafka里的partitioner(分区器)来负责客户端生产层面的负载均衡。如果指定分区,就直接使用该分区。未指定分区但存在key,则根据序列化key使用......