分布式一致性

分布式一致性协议 --- Paxos

末鹿安然 提交于 2019-11-26 10:58:36
问题 Paxos 到底解决什么样的问题,动机是什么 Paxos 流程是怎么样的? Paxos 算法的缺陷是什么 概述 Paxos 是分布式一致性算法,根据少数服从多数的原则多个节点确定某个数值。通过学习 Base Paxos ,我们再进一步优化,提出了 Multi Paxos . 动机 我们先思考为什么会出现一致性问题,原因是我们原本使用一台机器,而使用多台机器后(分布式),发生网络延迟或是其他原因导致所有机器不能同时在线,分布式的好处为了让我们享有可用性的好处,但是多台同时也会带来一致性的问题,最好理解的就是MySQL 中的主从复制,当主在写入的时候从没来得及复制完毕,那么此时的读到的数据是和刚写入的值是不一致的,而过多一会再次读就可以读到正确的值,也就是上面讲到的主从复制保证的最终一致性,于是,起码来说分布式中要解决这两个问题 : 部分机器挂了 一致性问题 我们来看一下wiki中关于 Paxos 的介绍 : Paxos is a family of protocols for solving consensus in a network of unreliable processors (that is, processors that may fail). Consensus is the process of agreeing on one result among a

分布式一致性算法Paxos

不问归期 提交于 2019-11-26 05:26:53
  Paxos是一种基于消息传递的分布式一致性算法,由Leslie Lamport(莱斯利·兰伯特)于1990提出。是目前公认的解决分布式一致性问题的最有效算法之一。 要解决的问题及应用场景   Paxos算法要解决的问题,可以理解为:一个异步通信的分布式系统中,如何就某一个值(决议)达成一致。   而此处异步通信是指,消息在网络传输过程中存在丢失、超时、乱序现象。   其典型应用场景为:   在一个分布式系统中,如果各节点初始状态一致,而且每个节点执行相同的命令序列,那么最后就可以得到一个一致的状态。为了保证每个节点执行相同的命令序列,即需要在每一条指令上执行一致性算法(如Paxos算法),来保证每个节点指令一致。 概念定义   Proposal:为了就某一个值达成一致而发起的提案,包括提案编号和提案的值。   涉及角色如下:   Proposer:提案发起者,为了就某一个值达成一致,Proposer可以以任意速度、发起任意数量的提案,可以停止或重启。   Acceptor:提案批准者,负责处理接收到的提案,响应、作出承诺、或批准提案。   Learner:提案学习者,可以从Acceptor处获取已被批准的提案。 约定   Paxos需要遵循如下约定:   1、一个Acceptor必须批准它收到的第一个提案。   2、如果编号为n的提案被批准了,那么所有编号大于n的提案

分布式一致性算法2PC和3PC

柔情痞子 提交于 2019-11-26 01:28:07
  为了解决分布式一致性问题,产生了不少经典的分布式一致性算法,本文将介绍其中的2PC和3PC。2PC即Two-Phase Commit,译为二阶段提交协议。3PC即Three-Phase Commit,译为三阶段提交协议。 分布式系统和分布式一致性问题   分布式系统,即运行在多台不同的网络计算机上的软硬件系统,并且仅通过消息传递来进行通信和协调。   分布式一致性问题,即相互独立的节点之间如何就一项决议达成一致的问题。 2PC   2PC,二阶段提交协议,即将事务的提交过程分为两个阶段来进行处理:准备阶段和提交阶段。事务的发起者称协调者,事务的执行者称参与者。    阶段1:准备阶段   1、协调者向所有参与者发送事务内容,询问是否可以提交事务,并等待所有参与者答复。   2、各参与者执行事务操作,将Undo和Redo信息记入事务日志中(但不提交事务)。   3、如参与者执行成功,给协调者反馈YES,即可以提交;如执行失败,给协调者反馈NO,即不可提交。    阶段2:提交阶段   此阶段分两种情况:所有参与者均反馈YES、或任何一个参与者反馈NO。   所有参与者均反馈YES时,即提交事务。   任何一个参与者反馈NO时,即中断事务。   提交事务:(所有参与者均反馈YES)   1、协调者向所有参与者发出正式提交事务的请求(即Commit请求)。   2

一篇文章彻底搞懂“分布式事务”

纵然是瞬间 提交于 2019-11-25 22:06:38
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免。 本篇文章将通过详解分布式事务的一致性,以及分布式事务实战解决方案,帮助大家搞懂分布式事务,推荐收藏。 01 为什么需要分布式事务 由于近十年互联网的发展非常迅速,很多网站的访问越来越大,集中式环境已经不能满足业务的需要了,只能按照业务为单位进行数据拆分(包含:垂直拆分与水平拆分),以及按照业务为单位提供服务,从早期的集中式转变为面向服务架构的分布式应用环境。 举一个典型的例子,阿里的淘宝网站随着访问量越来越大,只能按照商品、订单、用户、店铺等业务为单位进行数据库拆分,以及按照业务为单位提供服务接口。 这个时候 为了完成一个简单的业务功能,比如:购买商品后扣款,有可能需要横跨多个服务,涉及用户订单、商品库存、支付等多个数据库,而这些操作又需要在同一个事务中完,这就涉及到到了分布式事务。 本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。 02 分布式的一致性理论 最早加州大学伯克利分校 Eric Brewer教授提出一个分布式系统特性的CAP理论。 1.CAP 理论的不可能三角 一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance) 在分布式系统中