前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kafka 如何对 topic 分区 replica leader 进行负载均衡

kafka 如何对 topic 分区 replica leader 进行负载均衡

作者头像
create17
发布2020-12-01 11:39:06
1.7K0
发布2020-12-01 11:39:06
举报

每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~

kafka:2.11-1.1.0

一、前言

在上一篇 《必会 | 教你如何重新分布kafka分区、增加分区副本数》文章中,描述了如何重新分配 kafka topic 分区以及增加分区副本数。在最后我留了一个小疑问,如果 kafka leader replica 不挂掉的话,如何选择某 replica 为指定leader 呢?

首先介绍一个概念,叫 preferred replica 。每个 partitiion 的所有 replicas 叫做 "assigned replicas" ,"assigned replicas"中的第一个 replicas 叫 "preferred replica"。

kafka 有提供这样的脚本:kafka-preferred-replica-election.sh,该工具可将每个分区的 Leader replica 转移回 “preferred replica”,它可用于平衡 kafka brokers 之间的 leader 。kafka replica leader 负责处理数据读写请求,如果都集成在一个 broker 上,这样会因为资源的不均衡使用,影响 kafka 效率。

二、使用

首先看一下 kafka-preferred-replica-election.sh 的参数介绍:

如果不指定 --path-to-json-file 参数的话,默认操作所有已存在的分区。

如果指定 --path-to-json-file 参数的话,是指定一个文件,文件内容为 json 格式。

./bin/kafka-preferred-replica-election.sh --zookeeper cdh-worker-1:2181/kafka --path-to-json-file xxx.json

三、示例

同样还是以 create17 这个 topic 为例,当前,该 topic 详情如下图所示:

Leader 都集中在了 broker 201 上,如果要使 leader replica 负载均衡的话,可以这样做:

创建 preferred-replica-election.json 文件,编辑如下内容,指定了要更改 leader replica 的分区号:

> cat preferred-replica-election.json
{"partitions":[{"topic":"create17","partition":0},{"topic":"create17","partition":1},{"topic":"create17","partition":2},{"topic":"create17","partition":3},{"topic":"create17","partition":4},{"topic":"create17","partition":5},{"topic":"create17","partition":6},{"topic":"create17","partition":7}]}

然后执行命令:

./bin/kafka-preferred-replica-election.sh --zookeeper cdh-worker-1:2181 --path-to-json-file preferred-replica-election.json

执行结果:

create17 详细信息为:

如上图所示,leader 已经做到了负载均衡了。Leader 的值就是 Replicas 列表值的第一个,也就是 preferred replica 。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、使用
  • 三、示例
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档