微信开源PhxSQL背后:强一致高可用分布式数据库的设计和实现哲学
|
世界上目前已知的经过理论证明和实际检验的一致性算法屈指可数:两阶段提交two-phase commit (2PC)、Paxos、Raft、Zookeeper Atomic Broadcast (ZAB)、Viewstamped Replication等.2PC虽然可以保证一致性,但在主机故障时无法工作,存在可用性问题. 目前被工业界广泛认可和应用的是Paxos和Raft,2PC一般在前两者帮助选主下使用.这里的一个小建议就是:如果一个分布式系统宣称支持线性一致性级别的强一致和高可用,请先检查它使用的一致性算法.如果是新算法,请检查它的形式化证明或者逻辑证明. 因此,为支持线性一致性和高可用,同时完全兼容MySQL,我们在MySQL的基础上应用Paxos,设计和开发了PhxSQL. 4、PhxSQL的设计原则是什么?从实际需求出发,除了前述强一致、高可用、完全兼容MySQL这3个明显、必须的设计原则,我们还提出以下3原则. 1、简单可逻辑证明的一致性模型 这可能是明显区别PhxSQL和其它方案的一个特点.一个经过逻辑证明的模型才是可靠的,一个建立在可靠模型基础上的系统也才是可信赖的.PhxSQL一致性模型建立在两个前提上:
在这两个前提下,PhxSQL的一致性模型通过Paxos,使得主机写入Paxos的binlog流水与备机从Paxos里拉取的binlog流水一致,从而保证MySQL数据的一致性.详细证明过程我们将另外提供.模型和证明过程都很简单,大家在读完源码后也可以尝试:). (编辑:网站开发网_马鞍山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

