Kafka动态修改副本数及遇到的坑

实际项目中我们可能在创建topic时没有设置好正确的replication-factor,导致kafka集群虽然是高可用的,但是该topic在有broker宕机时,可能发生无法使用的情况。topic一旦使用又不能轻易删除重建,因此动态增加副本因子就成为最终的选择。

原因分析:

假设我们有3个kafka broker分别broker0、broker1、broker2.
当我们创建的topic有3个分区partition时并且replication-factor为1,基本上一个broker上一个分区。当一个broker宕机了,该topic就无法使用了,因为三个分区只有两个能用,
当我们创建的topic有3个分区partition时并且replication-factor为2时,可能分区数据分布情况是
broker0, partiton0,partiton1,
broker1, partiton1,partiton2
broker2, partiton2,partiton0,
每个分区有一个副本。
当其中一个broker宕机了,kafka集群还能完整凑出该topic的三个分区,例如当broker0宕机了,可以通过broker1和broker2组合出topic的三个分区。
但是如果两个broker宕机,那kakfa集群就无法凑出该topic的三个分区,例如当broker0和broker1宕机后,只有broker2上partation2和partation0可用,此时partation1处于无法使用的状态。

解决办法:动态增加副本数

首先我们配置topic的副本,保存为json文件()

例如, 我们想把hongjiang-test-0422的副本设置为3,(我的kafka集群有3个broker,id分别为0,1,2), json文件名称为1.json

{
   "version":1,
"partitions":[
{
   "topic":"hongjiang-test-0422","partition":0,"replicas":[0,1,2]},
{
   "topic":"hongjiang-test-0422","partition":1,"replicas"
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值