jraft- Counter
2024-03-07 14:12:16 1 举报
jraft-Counter
作者其他创作
大纲/内容
initLogStorage初始化日志存储
CounterGrpcHelper.initGRpc()CounterGrpcHelper.setRpcServer启动 rpc 服务
以 Counter 为切入点,学习jraft,以jraft为切入点学习raft
ApplyTaskHandler
StableClosureEventHandler
初始化各种时间轮voteTimer 投票electionTimer 选举stepDownTimersnapshotTimer 快照
initFSMCaller
initSnapshotStorage初始化快照存储
LogStorage#appendEntries保存到硬盘的接口
是否是leader
创建 Disruptor 并添加处理器StableClosureEventHandler
不是
this.writeLock.lock()加上写锁
LogManagerImpl#appendToStorage
添加到一个集合中
initMetaStorage初始化元数据存储
LogManager#appendEntries发送事件 StableClosureEventHandler 会处理
主要逻辑是用过 4 个 Disruptor,绝大部分操作都是异步的,主要就是4个handler
RaftRpcServerFactory.createRaftRpcServer创建 rpcServer,进行服务间通信,已经和客户端互动
启动节点NodeImpl#init
CounterServer#main
LogManagerImpl#checkConsistency校验数据一致性
executeApplyingTasks
创建 Disruptor 并添加处理器ApplyTaskHandler
设置为error
rpcServer.registerProcessor注册处理器
LogEntryAndClosureHandler#onEvent添加日志就会发事件
LogManagerImpl.AppendBatcher#append把数据先存到集合里面
FileUtils.forceMkdir创建工作目录
CounterStateMachine核心逻辑,继承 StateMachineAdapter
创建 Disruptor 并添加处理器ReadIndexEventHandler
创建投票箱BallotBox
设置为errormsg为 Is not leader.
org.rocksdb.RocksDB#write写入的硬盘
RaftGroupService#startRaftServiceFactory.createAndInitRaftNode启动 node 节点
是
ReadOnlyServiceImpl#init只读服务初始化
ReplicatorGroupImpl#init日志复制服务初始化
LogEntryAndClosureHandler
doCommitted
是否为预期的Term
RocksDBLogStorage#executeBatch
RaftGroupService创建 raft node
RocksDBLogStorage#appendEntries默认实现
LogManagerImpl#init
FSMCallerImpl#doApplyTasks
this.state = State.STATE_FOLLOWER;设置当前服务为follower
创建 FSMCallerImpl
StateMachine#onApply调用用户实现的具体实现类
AppendBatcher#flush存满了就调用
FSMCallerImpl#runApplyTask根据传进来的事件类型调用不同的方法
0 条评论
下一页