Kafka Note(六)负载均衡机制

(六)kafka负载均衡机制

A. 服务端broker负载均衡机制

  • 概述:生产者、消费者真实对应的实体是partition的leader副本,因此broker的负载均衡取决于leader副本分布是否均匀。

1. leader副本的均衡分布实现

  • 初始分布

    • 若共有5台brokers,创建一个分区数partition为5且副本数replicas数为3的topicA。
    • 具体的partition下0 - 4的leader副本分布顺序对应broker0 - 4,并将follower副本依次放在后两位broker。比如:partition0的follower副本放在broker1 & 2上。
  • 分布结果AR:AR = ISR +OSR

    分区名 副本所在的broker列表 备注
    topicA-partition0 0,1,2 leader副本在broker0
    topicA-partition1 1,2,3 leader副本在broker1
    topicA-partition2 2,3,4 leader副本在broker2
    topicA-partition3 3,4,0 leader副本在broker3
    topicA-partition4 4,0,1 leader副本在broker4
  • 优先副本:broker列表中,第一个即为优先副本,优先选择其为leader副本。

2. 分区自动重平衡

  • 场景概述:随着时间推移、集群状态变化,leader副本或多或少会有迁移或切换,导致部分broker上的leader副本偏多。
  • auto.leader.rebalance.enable:该参数默认开启,使集群中的controller启动定时任务,默认每隔5min轮询所有brokers,计算每一个节点的分区不平衡率,默认阈值为10%,高于该值会触发分区迁移。
  • 分区不平衡率
    • 计算公式:分区不平衡率 = 当前broker的非优先副本leader个数 / 当前broker分区总数
    • 案例场景:broker0上原本仅有topicA-partition0,3 & 4三个副本,其中0是优先副本也是leader副本。后来broker4宕机了,所以topicA-partition4此时将leader副本从broker4转移到broker0上,此时broker0依然拥有3个副本,但是topicA-partition4变成leader副本(非优先副本),此时分区不平衡率为1/3,若broker4后续恢复后,触发分区自动迁移机制。
  • 自动迁移可能会影响性能,可手动脚本kafka-preferred-replica-election.sh执行该操作。

3. broker负载不均衡常见场景

  • 集群状态变化导致leader切换,但默认开启分区自动重平衡,无须过分担心。
  • kafka当前负载最大痛点即新增broker后,若没有新建topic或者是将老的topic迁移分区,则该broker不会有任何流量。需手动完成分区重新分配 & 数据迁移。
  • kafka设置了broker.rack,分区算法从本来顺延方法调整为尽量避免副本在同一个机架上,可能导致分配不均。

B. 生产者producer负载均衡机制

  • 概述:生产端的负载均衡就是保障生产消息发往哪个partition(leader副本)。
  • 手段
    • 无key:基于轮训算法,计算发往的具体partition。
    • 有key:hash计算目标partition,不论partition是否活跃。
  • Producer负载不均衡常见场景
    • 生产者指定了key,创建topic时分区器选择指定key的模式,会将消息定向发给具体的broker上导致leader不平均。
    • 业务使用上,个别topic的流量远大于其他topic。

C. 消费者consumer负载均衡机制

  • 概述:若topic共有100w数据,消费组共有4个消费者,消费者端的负载均衡就是想办法保障让每个消费者拉取25w条数据。
  • 手段:消费端的实体是partition(leader副本),需要把partition均匀分配给消费组内的consumer。
    • partition.assignment.strategy重平衡时在所有consumer都发送完join_group后broker响应后,消费组中leader发出sync_group时采用的分区分配策略参数
    • 策略类型
      • 默认类型为rangeAssignor
      • 轮询分配roundRobinAssignor
      • 当前最优解stickyAssignor
  • Consumer负载不均衡常见场景
    • 分区分配策略不佳,导致负载不均。
    • 业务使用问题,个别topic流量远大于其他topic。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 版本选择 0.7版本:只有基础消息队列功能,无副本;打死也不使用 0.8版本:增加了副本机制,新的producer...
    问道2022阅读 306评论 0 1
  • (二)kafka的架构中的主要角色 A. topic 定义:producer倾倒数据时最宏观的目标对象即为topi...
    Mr_Chiang阅读 376评论 0 1
  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 5,320评论 1 15
  • 一、kafka简介 kafka是分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力,其最大的特性是高吞吐...
    有只怪好强阅读 781评论 1 2
  • 说明 主要内容是在网上的一些文章中整理出来; 加粗的字体是比较重要的内容,部分是自己的经验和理解; 整理的目的主要...
    猴子顶呱呱阅读 1,593评论 0 52