该文章可能已过期,已不做勘误并更新,请访问原文地址(持续更新) 【kafka思考】最小成本的扩缩容副本设计方案
kafka知识图谱: Kafka知识图谱大全
在这篇文章开始前,你需要先了解 【kafka源码】kafka分区副本的分配规则
从【kafka源码】kafka分区副本的分配规则 中我们已经知道了,如何分区副本是如何进行分配的
那么当我们想要批量进行副本扩缩的时候, 如果按照之前 --generate
的重新计算分配方式来做的话, 那么这个数据迁移量是非常大的; 很有可能大部分的副本都有变动(牵一发而动全身)
那么我们有没有什么方式能够尽量减少这种变动吗, 根据这个目标,我们本篇文章就好好思考一下设计方案
扩缩副本 想法1
我们指定,扩缩副本在kafka中是不直接支持的,但是我们可以通过
kafka-reassign-partitions.sh
工具来进行重新分配, 但是如果要给多个topic来进行扩缩副本操作的话,要自己去一个个的配置副本分配的位置,那么这是一个灾难; 手动不仅容易出错,已非常容易让副本分配的不均衡, 可以看看之前的文章 kafka运维】副本扩缩容、数据迁移、副本重分配、副本跨路径迁移
那么我们下面就介绍如何去解决这个问题,动态的就帮我们自动计算好扩容副本的分配方式;