- 博客(6)
- 收藏
- 关注
原创 Raft系列文章之三:Raft RPC详解
上一篇文章提到, Raft核心部分只需要用到2个RPC: RequestVote和AppendEntries, 本文将介绍这两个RPC的格式和作用。RequestVote RPC是由candidate发送给其他节点,请求其他节点为自己投票,如果一个candidate获得了多数节点的投票,则该candidate转变为Leader。AppendEntries RPC是由Leader节点发送给其他节点,有两个作用,当其entries域为空时,该RPC作为Leader的心跳,当entries域不为空时,请求其他节
2014-12-13 13:10:33 4931
原创 Raft系列文章之二:Leader选举
Raft首先会选举出一个唯一的Leader, Leader负责管理日志,所用对日志的添加和状态变化操作都通过Leader完成。Leader接受用户的日志请求并将日志分发给系统中其他节点。并告知其他节点何时可以安全地将日志应用到状态机上。这种方式简化了多副本日志的管理,日志的数据流向是从Leader到其他节点,而其他节点不会发送日志给Leader。Leader当掉时,Raft会选出一个新的Leader。本文介绍Leader选举过程。
2014-12-07 23:54:05 6884 2
原创 Raft系列文章之一: 什么是Raft?
简单的说,Raft是一种易于理解的一致性算法,其功能相当于Paxos。目前很多提供一致性服务的系统都采用Paxos, 例如Chubby, ZooKeeper, 那么为何还需要Raft?自Lamport 1998年提出Paxos以来, 该协议虽逐渐成为主流一致性协议,但也以难以理解而著名,实现起来比较困难,而Raft 设计的主要目的之一就是容易理解,Raft将整个算法过程分解为若干个独立的子过程,并且详细描述了每个子过程如何实现,容易理解和实现。 博主自己也基于Java语言实现了Raft, 代码位于 http
2014-12-07 17:14:50 5802 1
原创 Windows环境下搭建HBase源码开发环境
本文介绍了如何在Windows环境下搭建HBase源码开发及调试环境,用于查看,分析,开发,提交HBase源码。
2014-12-07 15:18:05 4777
原创 使用JUnit测试Java类的私有方法
Java项目开发过程中,有时需要测试类的私有方法,而私有方法不能直接调用,但可以利用反射机制来进行调用,下面是一个例子: @Test public void testGetElectionTimeout() throws Exception { int confTimeout = conf1.getInt("raft.election.timeout"); Me
2014-12-01 12:05:17 1462
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人