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

  • 相关阅读:
    [linux]进程(七)——进程通信
    [linux]进程(六)——守护进程
    [linux]进程(五)——进程调度
    [linux]进程(四)——进程的创建
    [linux]进程(三)——idle进程
    [linux]进程(二)--进程地址空间
    [linux]进程(一)--基本概念
    控制input输入框中提示信息的显示和隐藏的方法
    获取class名以某个字符开头的元素,获取class名以某个字符结尾的元素,
    vue本地代理实现跨域
  • 原文地址:https://www.cnblogs.com/fxjwind/p/3578417.html
Copyright © 2011-2022 走看看