- 博客(14)
- 收藏
- 关注
原创 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 6883 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
原创 Protocol Buffers学习笔记 - Windows上搭建开发环境,开发Java序列化应用
Google ProtocolBuffer是Google开源数据序列化工具,的是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。
2014-11-10 15:26:56 1281
转载 HBase文件格式演变之路
Apache HBase是Hadoop的分布式开源的存储管理工具,非常适合随机实时的io操作。我们知道,Hadoop的Sequence File是一个顺序读写,批量处理的系统。但是为什么HBase能做到随机的,实时的io操作呢?Hadoop底层使用Sequence File文件格式存储,Sequence File允许以追加的方式增加k-v(Key-Value)数据,根据hdfs的a
2014-11-09 16:29:33 469
翻译 LSM树在HBase中的应用
3.5 Log-Structured Merge-Trees(LSM-trees)No-SQL database usually uses LSM-trees as data storage process architecture. HBase is no exception. As we all known, RDBMS adopts B+ tree to organize its i
2014-11-09 14:53:44 1714
翻译 JDK中的设计模式
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsCreational patternsAbstract factory (recognizeable by creational methods returning the factory itself which in turn
2014-11-08 01:13:14 492
原创 ThreadLocal类型变量为何声明为静态?- ThreadLocal实现原理
ThreadLocal类的目的是为每个线程单独维护一个变量的shiti
2014-11-07 16:01:40 8522 2
原创 HBase 0.99 源代码分析 - Master启动过程(2)
下面继续从HMaster.finishActiveMasterInitialization方法开始分析HBase 0.99 Master启动过程。HMaster.finishActiveMasterInitialization方法主要完成如下功能:1. 初始化Master功能组件:filesystem manager, server manager, assignment manager, r
2014-11-06 00:10:34 1723
原创 HBase 0.99 源代码分析 - Master启动过程(1)
HBase版本更新速度比较快,网上已经有很多HBase源码分析的文章,本文基于目前最新的master branch(当前最新release版本为0.98)分析学习HBase Master服务器启动过程。从HBase启动脚本 (start-hbase.sh, hbase-daemon.sh, hbase) 可以看出HBaseMaster启动的入口函数是org.apache.hadoop.hbas
2014-11-04 23:53:52 1835
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人