美文网首页
从PAXOS到ZOOKEEPER分布式一致性原理与实践:分布式架

从PAXOS到ZOOKEEPER分布式一致性原理与实践:分布式架

作者: peareaden | 来源:发表于2020-11-18 22:22 被阅读0次

    本文内容为《从PAXOS到ZOOKEEPER分布式一致性原理与实践》一书学习笔记。本文主要概述第一章内容。

    从集中式到分布式

    集中式产生原因:大型主机凭借超强的计算能力和I/O计算能力以及在稳定性和安全性方面的卓越表现引领了计算机行业的发展,大型主机的广泛使用使得集中式计算机架构成为主流。

    集中式特点:一台或多台计算机组成中心节点,数据集中存储于这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统所有功能都由其集中处理。集中式结构最大特点就是简单。每个终端或客户端机器仅仅负责数据的的录入和输出,主机完成数据的存储与控制处理。

    集中式缺点:大型主机对运维人员的要求很高,人才培养成本高;价格昂贵;集中式系统存在明显单点问题(一旦一台大型主机出现了故障,整个系统都将不可用);大型主机进行系统扩容困难。

    分布式定义:一个硬件或软件组件分布在不同的的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。通俗的说,同一分布式系统中的计算机在空间上是可以随意分布的,这些计算机可以放在不同机柜上,也可以在不同机房上,甚至可以是不同的城市。

    分布式特征
    分布性:分布式系统中的计算机空间上随意分布。
    对等性:分布式系统中的计算机没有主从之分,所有节点都是对等的。副本是分布式系统对数据和服务提供的一种冗余方式。数据副本指不同节点上持久化同一份数据,可以解决数据丢失。服务副本指多个节点提供相同的服务,每个节点都有能力接受外部请求并处理。
    并发性:分布式系统中的多个节点并发操作一些共享的资源。
    缺乏全局时钟:分布式系统由一系列在空间上随意分布的多个进程组成,具有明显的分布性,进程之间通过交换信息来进行互相通信。由于缺乏一个全局的时钟序列控制,分布式系统中很难定义两个事件谁先谁后。
    故障总会发生:任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生。

    分布式环境中的问题
    通信异常:从集中式到分布式,必然引入网络因素,分布式系统中各个节点需要进行网络通信,而网络本身不可靠。即使分布式系统中各个节点可以正常进行网络通信,其延时也会远大于单机操作;延时也会影响消息的收发过程,导致消息丢失和消息延迟。

    网络分区(书中定义1):也称为脑裂。即网络发生异常,分布式系统中各个节点之间网络延时不断变大,最终导致分布式系统中各个节点只有部分节点之间可以进行正常通信,另一些节点则不能。当网络分区出现,分布式系统会出现局部小集群,极端情况下这些局部小集群会独立完成原本需要整个分布式系统才能完成的功能。

    网络分区(书中定义2):在分布式系统中,不同的节点分布在不同的子网络(机房或异地网络)中,由于一些特殊的原因导致这些子网络之间出现网络不连通的状况,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干个孤立的区域。需要注意的是,组成一个分布式系统的每个节点的加入与退出都可以看作是一个特殊的网络分区。

    三态:分布式系统的每一次请求与响应,三态:成功、失败、超时。超时分两种:该请求没有成功发送到接受方,发送过程中消息丢失;该请求成功到达接受方,但返回响应反馈给发送方过程中消息丢失。发生超时时,网络通信发起方无法确定当前请求是否被成功处理。

    节点故障:分布式系统中服务器节点宕机。

    从ACID到CAP/BASE

    事务:一系列对系统中数据进行访问与更新操作所组成的一个程序执行逻辑单元。狭义上指数据库事务。一方面,多个应用程序并发访问数据库时,事务可以在这些应用程序间提供隔离;另一方面,事务为数据库操作序列提供了一个从失败恢复到正常状态的方法,提供了数据库即使在异常状态下仍能保持数据一致性的方法。事务特性:ACID。

    原子性Atomicity:事务必须是一个原子的操作系列单元。事务中各项操作只允许全部成功执行或全部不执行。任何一项操作失败会导致整个事务失败,其他已经执行的操作会被撤销并回滚。

    一致性Consistency:事务执行不能破坏数据库系统的完整性和一致性,事务执行前后,数据库必须处于一致性状态。数据库只包含成功事务的提交结果,即处于一个一致性状态;如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所做的修改有一部分已写入物理数据库,此时处于不一致状态。

    隔离性Isolation:并发的事务相互隔离。不同事务并发操纵相同数据时,每个事务都有各自完整的数据空间。四个隔离级别:未授权读取(读未提交)、授权读取(读已提交)、可重复读取、串行化。


    四种隔离级别示意图

    这本书毕竟不是讲数据库的,关于数据库事务隔离级别的讲述不够详尽,更详细内容可参考此链接

    持久性Durability:事务一旦成功结束,它对数据库所做的修改必须永久保存下来。

    分布性事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点之上。一个分布式事务可以看作由多个分布式的操作序列组成,即子事务。

    如果期望实现一套严格满足ACID特性的分布式事务,很可能在系统的可用性和严格一致性之间出现冲突。由此引出CAP理论和BASE理论:

    CAP理论:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)、和分区容错性(P:Partition tolerance);最多满足其中的两项。

    一致性:系统在数据一致的状态下执行更新操作后,系统的数据仍然处于一致的状态

    可用性:对于用户的每一个操作请求总是能够在有限的时间内返回结果。有限的时间一个系统设计之初就设定好的系统运行指标。返回结果是能正确的反映出对请求的处理结果,成功或失败,而不是别的结果。

    分区容错性:分布式系统在遇到任何网络分区故障(即上文中的脑裂),仍能保证对外提供满足一致性和可用性的服务。

    CAP定理应用

    CAP中分区容错性是最基本的要求。因为分布式的组件必然需要被部署到不同的节点,否则也就无所谓分布式系统了,所以必然出现子网络,网络问题又是必会出现的异常情况,所以分区容错性也就是分布式系统必然需要面对和解决的问题。所以往往是在C(一致性)和A(可用性)间寻求平衡。

    BASE是对CAP中一致性和可用性权衡的结果。核心思想:无法做到强一致性,但可以使系统达到最终一致性。
    BASE理论:Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)。无法做到强一致性,但可以使系统达到最终一致性。

    基本可用:分布式系统出现不可预知的故障时,允许损失部分可用性。例如响应时间的提高或功能上的损失。

    软状态:弱状态。允许系统中的数据存在中间状态,且该中间状态的存在不会影响系统的整体可用性。即允许不同节点之间的数据副本进行数据同步的过程存在延时。

    最终一致性:系统所有数据副本最终达到一致,但不需要实时保证系统数据一致。

    相关文章

      网友评论

          本文标题:从PAXOS到ZOOKEEPER分布式一致性原理与实践:分布式架

          本文链接:https://www.haomeiwen.com/subject/igtymktx.html