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

Paxos的通俗理解以及在数据库高可用上的使用

发布时间:2021-02-24 11:46:47 所属栏目:电商 来源:网络整理
导读:《Paxos的通俗理解以及在数据库高可用上的使用》要点: 本文介绍了Paxos的通俗理解以及在数据库高可用上的使用,希望对您有用。如果有疑问,可以联系我们。 近期大家都在讨论Paxos算法,我看了很多网上的文章,总觉得有些晦涩难懂,经过一段时间研究,对Paxos有

Paxos的基本思想大致就是上面过程,Paxos利用的是选举,少数服从多数的思想,只要N个(N为奇数,至少大于等于3)节点中,有[N/2]+1(这里N/2为向下取整)或以上个节点同意了某个决定,则认为系统达到了一致,这样的话,客户端不必与所有服务器通信,选择与大部分通信即可;也无需服务器都全部处于工作状态,有一些服务器挂掉,只有保证半数以上存活着,整个过程也能持续下去,容错性相当好.

Paxos中的Acceptor相当于上面的队长,Proposer相当于上面的驴友,epochNo号就相当于例子中申请短信的发送时间.Paxos最消耗时间的地方就在于需要半数以上同意沟通了才能进入第二步,试想一下,一开始,所有驴友就给队长狂发短信,每个队长收到的最新短信的是不同驴友,这样,就难以达到半数以上都同意与某个驴友沟通的状态,为了减小这个时间,Paxos还有Fast Paxos的改进等等,这里不再细说.另外,paxos并不指代一个协议,而是一类协议的统称,比较常见的paxos类协议有:basic paxos和multi-paxos,这里的例子说的是basic paxos,basic paxos协议较复杂,且相对效率较低,所以现在所有和paxos有关的协议的系统,一般都是基于multi-paxos来实现的,有兴趣了解可以参考文章https://zhuanlan.zhihu.com/p/25664121

3、Paxos在数据库高可用上的使用

作为dba,为了实现高可用,最常用的高可用方式是主从模式,以mysql为例,主要有几种

(1)强同步复制,binlog同步到从库之后,从库返回给主库ok之后才能返回给客户端提交成功,这就有个问题,一旦主从之间网络出现抖动,甚至从库宕机,则主库就无法再继续提供服务,这种模式实现了数据的强一致,但是牺牲了服务的可用性.

(2)异步复制,主库写本地成功后,立刻返回给客户端说成功,无需等待从库应答,这样一旦主库宕机,可能会有少量的日志没有同步到从库造成部分数据丢失,这种模式可用性很好,但是牺牲了数据的一致性.

(3)半同步复制,这种模式是一个折中,主要指至少有一个从库节点收到日志返回给主库ok之后,这是就可以返回给客户端提交成功,当网络环境不好的时候可能退化为异步复制.

另外主从模式还有一个无法绕过的问题,就是选主,为了主从模式的选主,长期以来也诞生了很多种高可用方案,MMM,MHA,中间层等等,但显然理论和思路都不是最先进的.

总结一下,针对主从方式处理数据库高可用有诸多缺陷,要想改进这种数据同步方式,可以梳理数据库高可用的几点需求:

  1. 数据不丢失
  2. 服务持续可用性
  3. 自动选主
  4. 自动容错

使用paxos协议的日志同步就可以实现以上的三个需求,当然paxos协议需要依赖一个基本假设,主备之间有多数派机器(N/2+1)是存活且它们之间的网络通讯正常,如果不满足这个条件,则无法启动服务,数据也无法写入和读取.

所以我们可以使用paxos进行redolog或者binlog的复制,从而保证高可用强一致的集群,主从的切换也不需要担心,只需要有个vip,后端映射后面数据库的多点就行,paxos会自动保证多点的一致性写入,业界阿里云使用paxos或者raft来做的企业三节点的mysql集群.

原文来自微信公众号:Qunar技术沙龙

(编辑:核心网)

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

热点阅读