场景描述
当需要处理大量消息时,Kafka实例的扩容是一种常见的解决方案。扩容可以增加Kafka集群的吞吐量、存储能力和高可用性。分布式消息服务Kafka提供三类扩容方案,分别为节点、规格和磁盘扩容,更好满足用户不同场景下的扩容需求。
● 代理数量扩容:指向Kafka集群中添加更多的节点以增加系统的吞吐量和可靠性。通过扩容,可以将消息的发送和消费负载分摊到更多的节点上,从而提高系统的并发处理能力。
● 规格扩容:指通过增加Kafka的资源配置来提升系统的处理能力和性能。
● 磁盘扩容:指增加磁盘的存储容量,以满足更多消息的存储需求。
变更实例规格的影响
| 变更配置类型 | 影响 |
|---|
| 磁盘扩容 | 磁盘扩容不会影响业务。 |
| 代理数量扩容 | - 代理数量扩容不会影响原来的代理,业务也不受影响(如果实例已配置分区自动重平衡,会触发重平衡,客户端会触发重连)。
新创建的Topic才会分布在新代理上,原有Topic还分布在原有代理上。通过修改Kafka分区平衡,实现将原有Topic分区的副本迁移到新代理上。
|
| 规格扩容\缩容 | - 若Topic为单副本,扩容/缩容期间会出现无法对该Topic生产消息或消费消息,会造成业务中断。
若Topic为多副本,代理会滚动重启,代理滚动重启造成分区Leader切换,会发生秒级连接闪断,Leader切换时长一般为1分钟以内。建议您在业务低峰期扩容/缩容,并且再生产客户端配置重试机制,方法如下: (1)生产客户端为Kafka开源客户端时,检查是否配置retries和retry.backoff.ms参数。建议参数值分别配置为:retries=10,retry.backoff.ms=1000。 (2)生产客户端为Flink客户端时,检查是否配置重启策略,配置重启策略可以参考如下代码。 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(10, Time.seconds(20)));
规格变更的时长和代理数量有关,单个代理的变更时长一般在5~10分钟,代理数量越多,规格变更时间越长;若是缩容场景,受数据量以及业务流量大小的影响,变更时间可能会更长。
|
操作步骤
实例变更
(1)登录管理控制台。
(2)进入Kafka管理控制台。
(3)在实例列表页在操作列,目标实例行点击“更多”,点击“扩容”或者“缩容”。
(4)点击后,会打开新的“扩容”或者“缩容”页面,先选择需要变更的类型,再选择需要的规格,会计算出对应价格,点击“提交订单”,后可到订单中支付。