SOFAJRaft源码之Node发起投票请求(二十六)
(1). 概述前面,剖析了,预投票过程,预投票的过程是为了防止无效投票的,只有预投票之后通过之后,才能进入投票阶段,所以,这一篇主要剖析,发起投票请求的剖析.
(1). 概述前面,剖析了,预投票过程,预投票的过程是为了防止无效投票的,只有预投票之后通过之后,才能进入投票阶段,所以,这一篇主要剖析,发起投票请求的剖析.
(1). 概述前面,剖析了,发起投票请求,这一篇主要剖析,接受投票请求.
(1). 概述前面剖析了Node的启动方法,会判断是否有其它节点,如果有其它节点的情况下,会判断是否要进行选举,这一小篇,剖析下定时任务中的选举处理.
(1). 概述上一篇,分析的是Node发起预投票请求,这一篇主要分析,Node发起预投票请求之后,服务端处理流程.
(1). 概述一直以为Node的角色是网络通信的Server,但是,稍微的剖析了一下之后,发现好像,它在网络通信层属于Client端,这一篇主要是看下Node的初始化方法.
(1). 概述在这一篇,继续剖析完一个比较重要的环节,那就是应用任务,这是JRaft提供给业务开发人员的一个重要接口.
(1). 概述终于轮到剖析StateMachine了,其实,剖析完:FSMCaller之后,StateMachine要不要剖析,也没多大的意义了,只是,还是要让整个源码剖析过程比较完整一些,此处,以:CounterStateMachine为例.(...
(1). 概述本来是想剖析SnapshotStorage,但是在用UML对SnapshotStorage进行分解时,底层实际上还是依赖一个比较重的:Snapshot,所以,这一篇改成,剖析:Snapshot(2). Snapshot UML图解(...
(1). 概述终于到分析的重头戏了,这一小篇主要剖析:SnapshotStorage,它组合了:SnapshotWriter和SnapshotReader的功能,所以,它的职责应该是产生快照以及读取快照.
(1). 概述上一篇对SnapshotWriter的源码进行了剖析,在这篇,对SnapshotReader进行剖析(相比SnapshotWriter,SnapshotReader还是比较复杂一点)
(1). 概述在准备剖析Replicator时,发现它会与网络通信有一些纠缠不清,因为与网络相关,想要剖析整个链路,不想再进行Mock了,所以,这一小篇主要剖析与网络相关的类:RpcServer
(1). 概述在前面对RocksDBLogStorage的初始化进行了剖析,在这里,主要剖析追加日志和获取日志.
(1). 概述在看源码,我建议还是拆开来看,以点向面去扩展,在这里,主要剖析日志的存储这一块,重点要剖析的对象是:RocksDBLogStorage.(2). UML图 在开始看源码之前,先看下与RocksDBLogStorage类相关的UML图
(1). 概述这一篇主要剖析:RepeatedTimer,因为,Node的源码里用到了它,我们知道,RAFT启动时,会产生一个随机延迟数进行选举,而这一步是需要构建一个定时任务来着的,上一篇,我们粗略的剖析了一下:HashedWheelTimer...
(1). 概述最近一直在看RAFT相关的源码,Atomix突然开始转型(用Go重写),不得不看其它RAFT的实现,从蚂蚁金服官网clone RAFT演示代码,进行源码剖析,在这里先看RPC初始化处理.
(1). 概述固名词义,这个接口的主要功能是元数据的存储.
(1). 概述还是按照官网的框架图,以局部作为点,进行剖析,这一小篇主要分析:LogManager,它是对LogStorage进行了包装,为什么要包装呢?因为,这个类它在LogStorage的基础上增加了:缓存和批量提交的功能,咱们一点点的剖析....
(1). 概述还是按照官网的框架图,以局部作为点,进行剖析,这一小篇主要分析:LogManager,它是对LogStorage进行了包装,为什么要包装呢?因为,这个类它在LogStorage的基础上增加了:缓存和批量提交的功能,咱们一点点的剖析.
(1). 概述本来应该要剖析StateMachine的,但是,在剖析FSMCaller(onCommitted方法)时,有涉及到一个类:IteratorImpl,所以,在这一篇主要剖析它了.
(1). 概述前面剖析了与网络相关的内容,按理来说:应该要开始剖析Replicator,但却发现,如果用Mock来走测试案例剖析的话,自我感觉太虚了,所以,换种方式来解读源码,解析一套网络流程,在剖析之前,要先把Node里所依赖的一些对象给先剖析...
(1). 概述一直都好奇,FSMCaller与StateMachine的onApply方法是如何交互的,曾还一度怀疑可能不存在交互,这一小篇主要剖析:FSMCaller与StateMachine的onApply方法交互.
(1). 概述在上一篇对FSMCaller的初始化和基本方法进行了剖析,发现,大量的API操作最终是往Disruptor里发布事件而已,所以,Disruptor的消费(ApplyTaskHandler)是这一篇要分析的.
(1). 概述本来这一节,要剖析SnapshotExecutor,结果,我发现:SnapshotExecutor底层却依赖:FSMCaller,所以,先剖析:FSMCaller(2). FSMCaller UML图
(1). 概述本来应该要剖析StateMachine的,但是,在剖析FSMCaller(onCommitted方法)时,有涉及到一个接口:ClosureQueue,所以,在这一篇主要剖析它了.(2). 先看下ClosureQueue接口签名 有...
(1). 概述在准备剖析Replicator时,发现它会与网络通信有一些纠缠不清,因为与网络相关,想要剖析整个链路,不想再进行Mock了,所以,这一小篇主要剖析与网络相关的类:ClientService
(1). 概述在前面对BallotBox追加任务进行了剖析,在这一部份,主要剖析日志确认这一部份,RAFT要求,过半加一的节点确认后,这条日志才能真正的成功,才能推动commitIndex和applyIndex.
(1). 概述本来是要剖析:Replicator的,但是,发现Replicator,它依赖很多的其余组件,所以,这一篇开始,先解决内部组件依赖的剖析,再分析Replicator,这一篇的重头戏是:BallotBox
(1). 概述前面对BootstrapDiscoveryBuilder源码分析,最终是调用:BootstrapDiscoveryBuilder.build方法,构建:BootstrapDiscoveryProvider,所以,这一篇主要对:Boo...
(1). 概述在前面的节点发现的例子中,我们能看到Atomix用到了构建者模式,通过构建者创建:BootstrapDiscoveryProvider,在这里,先剖析下:BootstrapDiscoveryBuilder.
(1). 概述在继续往下剖析源码Atomix前,需要先看下Atomix的业务模型,即:Atomix的配置类.