zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Web_0012:FTP文件编辑器关联
    JS_0033:判断苹果安卓 微信浏览器,并在苹果微信浏览器下做特别处理
    JS_0032:匿名函数 function前加 ! 或 function用括号包裹起来 含义
    JS_0031:JS 常用方法
    spark为什么用scala语言开发
    spark开发常见问题
    java实现多继承
    数仓架构
    object类中的方法
    Spring的IOC原理
  • 原文地址:https://www.cnblogs.com/fxjwind/p/3578417.html
Copyright © 2011-2022 走看看