• Apache Kafka源码分析 – ReplicaManager


    如果说controller作为master,负责全局的事情,比如选取leader,reassignment等
    那么ReplicaManager就是worker,负责完成replica的管理工作

    主要工作包含,

    stopReplica
    getOrCreatePartition
    getLeaderReplicaIfLocal
    getReplica
    readMessageSets
    becomeLeaderOrFollower

     

    StopReplicaCommand

    处理很简单,主要就是停止fetcher线程,并删除partition目录

    stopReplicas

    stopReplica

    LeaderAndISRCommand

    becomeLeaderOrFollower
    做些epoch和valid的检查,然后区分出leader和follows,分别调用makeLeaders,makeFollowers


    makeLeaders
    停止Fetcher,调用partition.makeLeader,把这些partition加到leaderPartitions中


    makeFollowers
    除了修改leaderPartitions和Mark as followers以外
    作为followers,需要truncated log到highWatermark,然后启动fetcher去catch leader


    checkpointHighWatermarks
    对于每个replica而已,HighWatermarks是很重要的,因为只有通过它可以知道到底哪些数据是一致的,这样就算broker crash,恢复的时候只需要基于HighWatermarks继续catch就可以
    所以对于HighWatermarks,需要做cp

  • 相关阅读:
    备份服务-Rsync
    mysql查询语句,int类型加引号居然也能查
    echo显示带颜色
    python读文件
    python发送邮件
    javadoc源码获取
    mac修改终端用户名
    [tomcat]-tomcat8启动时SessionIdGeneratorBase.createSecureRandom耗时
    shell运算符
    shell中$*和$@ 两个都区别
  • 原文地址:https://www.cnblogs.com/fxjwind/p/3578417.html
Copyright © 2020-2023  润新知