您的位置:首页 > 其它

libpaxos分析心得

2014-08-25 17:05 302 查看
前一段时间在《大型分布式存储与实践》中作者提http://到一个观点:弄清楚PAXOS协议会大大增强你对分布式系统理解的信心。后来陆陆续续看过网络上的一些PAXOS的介绍,包括PAXOS的历史、PAXOS的第一版论文(The Part-Time
Parlinment)、第二版论文( Paxos Made Simple)以及chubby的论文。都没太搞懂里面的细节,后来结合wiki上对paxos算法的描述,算是基本上弄懂了其原委。个人感觉wiki上面的描述是最清晰易懂的,也是最好的入门文档。后来在一篇文章中有人提到libpaxos这个库,用C实现的,为了进一步弄懂算法的每一个细节,于是开始对libpaxos做细致的阅读并对代码做了详细的注释。注释的代码我已经放到git
hub上,要下载点这里

虽然libpaxos对PAXOS算法做了基础的实现,但这个库本身不能直接用于生产环境,这个库的proposer和learner并没有对议案做固化保存,一旦某个物理机异常,就会丢失相关的议案信息,acceptor实现采用了Berkeley DB来固化接受的提案,算是比较稳定的。这个库在内存分配和效率上做的一般,如果大规模的消息,很容易产生内存碎片。库采用的是libevent单线程reactor模型,无法利用充分利用多CPU的优势,并发上会是个问题。另外,libpaxos并没有实现PAXOS的leader模式。

   从上可以看出,libpaxos的主要价值是可以用来做研究,可以让程序员对PAXOS的细节了解更加清楚,也可以根据其算法模型实现一个可以用于生产环境的paxos库,但这必须要做几个工作:

1.各个单元的状态信息固化,防止宕机发生信息丢失

2.增加leader模型

3.改为多线程实现并合并learner、proposer、acceptor为一个进程。

4..对库做充分细致的测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐