SOFAJRaft源码之RocksDBLogStorage初始化(二)
(1). 概述在看源码,我建议还是拆开来看,以点向面去扩展,在这里,主要剖析日志的存储这一块,重点要剖析的对象是:RocksDBLogStorage.(2). UML图 在开始看源码之前,先看下与RocksDBLogStorage类相关的UML图
(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的配置类.
(1). 概述在这一小篇,主要学习Atomix在分布式环境下,基本数据类型的使用.
(1). 概述在这一小篇,主要是把Atomix的源码,拉取下来,然后,运行一个测试案例,测试案例的需求是这样的,多个节点组成一个集群启动,能实时(上线/下线)感知其它节点.
(1). 概述前面分析了UdpTransportManager的功能之一就是接受消息并处理,在这里,剖析它的另一大功能,就是发送成员信息.
(1). 概述前面剖析到:GossipManager内部会创建UdpTransportManager进行消息管理,在这一小篇,主要剖析接收消息后,如何进行处理的.
(1). Gossip是什么Gossip 协议(Gossip Protocol)又称Epidemic协议(Epidemic Protocol),是基于流行病传播方式的节点或者进程之间信息交换的协议,在分布式系统中被广泛使用,Gossip Prot...
(1). 概述分析Gossip源码时,发现创建:GossipManager对象时,会通过工厂(MessageHandlerFactory)创建:MessageHandler,所以,这一小篇,主要剖析它.
(1). 概述
(1). 概述传统工作流的缺陷: 传统的工作流引擎,编排的大部分是人工审批任务,意味着任务流转效率低,系统吞吐低.而当下微服务大部分是程序化的自动任务,意味着任务高效流转,系统吞吐高.单点架构、同步响应、高度依赖DB的Activiti,显然支撑...
(1). 概述在前面,剖析到StartupProcess会持有一堆StartupStep,那么,StartupStep是什么呢?它的作用是什么呢?在这一小篇主要对StartupStep(ApiMessagingServiceStep)进行剖析.(...
(1). 概述在前面对NettyMessagingService进行了简单的了解,它主要的职责是进行通信的管理,对于Server(服务端)来说,底层原理应该是要接受请求,并回调给业务代码来着,所以,我们要找到NettyMessagingServi...
(1). 概述在这一小篇,我们分析另一个接口:NodeDiscoveryProvider,从名字上,能看出来,应该是属于服务发现.
(1). 概述在前面分析NettyMessagingService的构建器时,会看到有构建一个类:NettyUnicastService,那这个类主要是干嘛呢?