在数据时代,为了提升性能或者说是为了数据的安全,我们可以采用分布式的技术来解决横向扩展的问题,其中非常重要的一点就是保持数据的强一致性。现在很多方案或产品中都用到了分布式的技术,尤其是数据库、中间件技术。其中较为常用技术的就是paxos和raft。其中腾讯、阿里、网易等公司的MySQL数据库产品和其他一些产品都用到了这其中的一种。区块链技术中也用到了raft的技术。MySQL中的Group Replication中也使用了paxos。通过paxos还可以实现分布式存储,分布式数据库,分布式中间件等,其中腾讯还公开了几款关于使用paxos技术的产品或库文件的源码。
https://github.com/tencent/paxosstore
https://github.com/Tencent/phxPaxos
https://github.com/Tencent/phxsqlhttps://github.com/Tencent/phxqueue
https://github.com/Tencent/libco
Paxos
Paxos算法是Leslie Lamport在1990年提出的一种基于消息传递的一致性算法。由于算法难以理解,起初并没有引起大家的重视,Lamport在1998年将论文重新发表到TOCS上,即便如此Paxos算法还是没有得到重视,2001年Lamport用可读性比较强的叙述性语言给出算法描述。2006年Google发布了三篇论文,其中在Chubby锁服务使用Paxos作为Chubby Cell中的一致性算法,Paxos从此开始活了起来。基于Paxos协议的数据同步与传统主备方式最大的区别在于:Paxos只需超过半数的副本在线且相互通信正常,就可以保证服务的持续可用,且数据不丢失。
Raft
Raft是斯坦福大学的Diego Ongaro、John Ousterhout两个人以易理解为目标设计的一致性算法,在2013年发布了论文:《In Search of an Understandable Consensus Algorithm》。从2013年发布到现在,已经有了十几种语言的Raft算法实现框架,较为出名的有etcd,Google的Kubernetes也是用了etcd作为他的服务发现框架。
与Paxos相比,Raft强调的是易理解、易实现,Raft和Paxos一样只要保证超过半数的节点正常就能够提供服务。
https://raft.github.io/
https://raft.github.io/raft.pdf
Reference
http://libPaxos.sourceforge.net/
https://github.com/Tencent/phxsql/blob/master/README.zh_cn.md
腾讯开源的项目
https://opensource.tencent.com/projects
号称史上最晦涩的算法Paxos,如何变得平易近人?
https://mp.weixin.qq.com/s/NqLpT47ZWD6oJzfo_tWceA
微信开源PhxSQL:高可用、强一致的MySQL集群
http://djt.qq.com/article/view/1489
ocean与paxos
http://oceanbase.org.cn/?cat=16
Paxos和Raft的前世今生
https://cloud.tencent.com/developer/article/1352070
分布式事务一致性协议paxos的应用场景
https://yq.aliyun.com/articles/312999
raft算法与paxos算法相比有什么优势,使用场景有什么差异?
https://www.zhihu.com/question/36648084/answer/82332860