• 张申傲
    2023-07-26 来自北京
    请问下强哥,在Kafka KRaft这类架构中,Controller-Broker节点的职责会不会过重呢? 它相当于Metadata Service Leader + Broker集群的Controller双重角色,既要管理元数据信息,又要维护Broker集群的状态和数据同步,感觉Controller-Broker的负载会有点高。 这种集群内部实现元数据服务的架构,有没有可能把两类职责拆分开呢?比如Broker-1作为Broker集群的Controller,Broker-2节点作为Metadata Service的Leader?

    作者回复: 先补充一个信息,当前的Kafka 的Kraft模式,不区分Metadata Service Leader和Broker Controller,统一称为Controller。 然后说一下我的看法:从理论上来看,是有这个可能,但是我认为风险可控。主要有三点原因: 1. 当前 Kafka kraft 模式的 controller 支持两种部署模式: a. 独立部署,固定某些节点只能承担controller角色,不承担Broker角色。即这台节点的资源都是给controller用的,从而控制这个节点的负载。 b. 混合部署,在流量低的时候可以混部controller和broker,此时在流量上涨的情况下,就有可能出现你说的问题。 2. Controller 在内核会有一些优化机制,用来降低controller的压力。比如数据预加载机制,用来在controller切换时,新的controller节点不需要加载全部数据,从而控制负载。 3. kafka本身的集群管控类操作也不会频繁。因此对controller的压力没有那么大。

    
    2