美文网首页
Kafka之分区副本分配

Kafka之分区副本分配

作者: 五月笙 | 来源:发表于2021-04-05 22:53 被阅读0次

    分区和角色

    分区分配需要从三个角度考量:

    1.生产者:关注的是每条消息发往哪个分区
    2.消费者:关注的是每个消费者被指定消费哪个分区
    3.服务端:关注一个Topic下的每个分区的若干副本如何保存在不同的broker节点
    

    分配逻辑

    没有开启机架感知(比如没有配置机架或者指定了disable-rack-aware),那么分配逻辑如下:

    1. 最开始会将所有的可用broker初始化一个List集合
    2. 然后随机计算首个分配的broker;(并不是每次都从0号broker开始,那样会不均匀且0号broker可能已经退出集群了);
    3. 给分区取一个编号,按照顺序从分区编号为0的分区开始分配;
    4. 分配的时候会计算一个步长shift,比如0号分区的第一个副本在broker为2,那么1号副本就在broker2+shift,这个计算细节就没有研究了,可以参照scala源码
    

    开启机架感知,会将机架信息作为一个附加参考项,下面是对比前面的区别

    1.在计算初始化broker集合的时候,是轮询的而不是顺序的;比如A机架有1、2和3,B机架有4、5和6,C机架有7、8和9,那么broker的集合是[1,4,7,2,5,8,3,6,9];
    2.另外在分配的时候会做一些校验,比如A机架中的一个broker已经分了一个副本了,B和C机架中还有一个机架没有改分区副本,那么就一定不会把新的副本分配到A机架,而是B或者C机架
    
    PS:总体来说就是进来均匀分布,有机架的时候就尽量把副本分配到不同的机架
    

    相关文章

      网友评论

          本文标题:Kafka之分区副本分配

          本文链接:https://www.haomeiwen.com/subject/xvujkltx.html