随笔分类 -  SOFAJRaft

摘要:分布式系统和一致性问题 一致性问题(consensus problem)是分布式系统需要解决的一个核心问题。分布式系统一般是由多个地位相等的节点组成,各个节点之间的交互就好比几个人聚在一起讨论问题。让我们设想一个更具体的场景,比如三个人讨论中午去哪里吃饭,第一个人说附近刚开了一个火锅店,听说味道非常 阅读全文
posted @ 2020-06-17 10:05 luozhiyun 编辑
摘要:前言 引入快照机制主要是为了解决两个问题: 1. JRaft新节点加入后,如何快速追上最新的数据 2. Raft 节点出现故障重新启动后如何高效恢复到最新的数据 Snapshot 源码分析 生成 Raft 节点的快照文件 如果用户需开启 SOFAJRaft 的 Snapshot 机制,则需要在其客户 阅读全文
posted @ 2019-12-29 16:23 luozhiyun 编辑
摘要:前言 前几天和腾讯的大佬一起吃饭聊天,说起我对SOFAJRaft的理解,我自然以为我是很懂了的,但是大佬问起了我那SOFAJRaft集群之间的日志是怎么复制的? 我当时哑口无言,说不出是怎么实现的,所以这次来分析一下SOFAJRaft中日志复制是怎么做的。 Leader发送探针获取Follower的 阅读全文
posted @ 2019-12-08 15:51 luozhiyun 编辑
摘要:前言 我在看SOFAJRaft的源码的时候看到了使用了对象池的技术,看了一下感觉要吃透的话还是要新开一篇文章来讲,内容也比较充实,大家也可以学到之后运用到实际的项目中去。 这里我使用RecyclableByteBufferList来作为讲解的例子: RecyclableByteBufferList 阅读全文
posted @ 2019-11-24 22:29 luozhiyun 编辑
摘要:开篇 其实这篇文章我本来想在讲完选举的时候就开始讲线性一致性读的,但是感觉直接讲没头没尾的看起来比比较困难,所以就有了RheaKV的系列,这是RheaKV,终于可以讲一下SOFAJRaft的线性一致性读是怎么做到了的。所谓线性一致性,一个简单的例子是在 T1 的时间写入一个值,那么在 T1 之后读一 阅读全文
posted @ 2019-11-17 20:46 luozhiyun 编辑
摘要:概述 上一篇讲了RheaKV是如何进行初始化的,因为RheaKV主要是用来做KV存储的,RheaKV读写的是相当的复杂,一起写会篇幅太长,所以这一篇主要来讲一下RheaKV中如何存放数据。 我们这里使用一个客户端的例子来开始本次的讲解: 我们从这个main方法中启动我们的实例,调用rheaKVSto 阅读全文
posted @ 2019-11-10 16:16 luozhiyun 编辑
摘要:由于RheaKV要讲起来篇幅比较长,所以这里分成几个章节来讲,这一章讲一讲RheaKV初始化做了什么? 阅读全文
posted @ 2019-10-30 23:50 luozhiyun 编辑
摘要:开篇 在上一篇文章当中,我们讲解了NodeImpl在init方法里面会初始化话的动作,选举也是在这个方法里面进行的,这篇文章来从这个方法里详细讲一下选举的过程。 由于我这里介绍的是如何实现的,所以请大家先看一下原理: "SOFAJRaft 选举机制剖析 | SOFAJRaft 实现原理" 文章比较长 阅读全文
posted @ 2019-10-26 15:54 luozhiyun 编辑
摘要:看完这个实现之后,感觉还是要多看源码,多研究。其实JRaft的定时任务调度器是基于Netty的时间轮来做的,如果没有看过Netty的源码,很可能并不知道时间轮算法,也就很难想到要去使用这么优秀的定时调度算法了。 对于介绍RepeatedTimer,我拿Node初始化的时候的electionTimer 阅读全文
posted @ 2019-10-19 22:49 luozhiyun 编辑
摘要:我们这次依然用上次的例子CounterServer来进行讲解: 我这里就不贴整个代码了 我们在启动server的main方法的时候会传入日志存储的路径、SOFAJRaft集群的名字、当前节点的ip和端口、集群节点的ip和端口并设值到NodeOptions中,作为当前节点启动的参数。 这里会将当前节点 阅读全文
posted @ 2019-10-10 23:45 luozhiyun 编辑
摘要:SOFAJRaft 是基于 Raft 算法的生产级高性能 Java 实现,支持 MULTI RAFT GROUP。应用场景有 Leader 选举、分布式锁服务、高可靠的元信息管理、分布式存储系统。 如果不了解Raft算法的朋友可以去看看这篇文章: "Raft 为什么是更易理解的分布式一致性算法" , 阅读全文
posted @ 2019-10-06 13:29 luozhiyun 编辑