加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

微信开源PhxSQL背后:强一致高可用分布式数据库的设计和实现哲学

发布时间:2021-01-08 07:25:55 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 《微信开源PhxSQL背后:强一致高可用分布式数据库的设计和实现哲学》要点: 本文介绍了微信开源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一致性模型建立在两个前提上:

  1. Paxos保证一致性.这个大家都可以接受.
  2. 各个MySQL的binlog流水一致,则各个MySQL机器之间数据“一致”.这个假设小有争议.例如即使binlog流水一致,由于不同的binlog格式、备机重放流水的不同配置,也会导致主备之间、不同备机之间的数据产生不同级别的“不同”,例如一条和当前时间相关的insert操作.这种不一致有些应用可以容忍,有些则不能.在这里,PhxSQL保证流水一致,而把格式和配置的自由留给应用和DBA根据具体场景确定.在最严格的配置下,binlog一致,则数据一致.

在这两个前提下,PhxSQL的一致性模型通过Paxos,使得主机写入Paxos的binlog流水与备机从Paxos里拉取的binlog流水一致,从而保证MySQL数据的一致性.详细证明过程我们将另外提供.模型和证明过程都很简单,大家在读完源码后也可以尝试:).

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!