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..对库做充分细致的测试
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..对库做充分细致的测试
相关文章推荐
- 需求分析过程中和用户沟通的几个心得
- [股市]不败心得与未来走势长线分析(收藏)
- BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)
- BT源代码学习心得(十一):客户端源代码分析(存储管理) 转自CSDN:gushenghua的专栏
- BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化)
- BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)
- BT源代码学习心得(十六):客户端源代码分析(实际数据的传输及其速率限制策略)
- BT源代码学习心得(十):客户端源代码分析(相关对象一览) 转自CSDN:gushenghua的专栏
- BT源代码学习心得(十二):客户端源代码分析(从开始到连接建立阶段)
- [内核分析]LXR安装心得(0.9.1版)
- BT源代码学习心得(九):客户端源代码分析(图形界面浅析)
- BT源代码学习心得(十二):客户端源代码分析(从开始到连接建立阶段)
- BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理)
- [内核分析]LXR安装心得(0.9.3版)---RH8.0测试通过
- 《C游戏编程从入门到精通》第一章心得和代码分析
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象)
- BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) 转自CSDN:gushenghua的专栏
- BT源代码学习心得(十四):客户端源代码分析(对等客户连接中的阻塞管理) 转自CSDN:gushenghua的专栏
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象)