大数据技术:分布式系统和分布式事务

1.    分布式系统

1.1  分布式的特点

分布性

       分布式系统中的多台计算机都会在空间上随意分布,同时,机器的分布情况也会随时改变。

对等性

       分布式系统中的计算机没有主从之分,既没有控制整个系统的主机,也灭有被控制的从机,组成分布式系统的所有计算机节点都对等的的。

并发性

       在一个计算机网络中,程序运行过程中的并发性操作也是非常常见的行为。

1.2  分布式环境中存在的问题

通信异常

       由于分布式系统必然引入了网络因素,而由于网络本身的不可靠性,因此也引入了额外的问题。分布式系统需要在各个节点之间进行网络通信,因此每次网络通信都伴随着网络不可用的风险。

网络分区

       当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有一小部分节点能够进行正常通信,而另一些节点由于网络原因,被认为错误节点---我们称为这个现象为网络分区,也就是俗称的“脑裂”。

节点故障

       组成分布式系统的服务器节点出现的宕机或者“僵死”现象。

2.    从ACID到CAP/BASE

事务(Transaction)是由一系列对系统中数据进行访问与更新的操作锁组成的一个程序执行逻辑单元(Unit),侠义上的事务特指数据库的访问。

2.1  ACID

原子性(Atomicity):

       事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现以下两种状态之一。

一致性(Consistency):

       事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性的状态。也就是说,事务的执行结果必须是使数据库从一个一致性状态转变到另一个一致性状态,因此数据库只包含成功事务提交的结果时,就能说明数据库处于一致性状态。

隔离性(Isolation

       事务的隔离性是指在并发环境中,并发的事务时相互隔离的,一个事务的不能被其他事务相干扰。也就时说不同的事务在并发操作相同的数据时候,每个事务都有各自完整的数据空间,即一个事务内部的操作及使用的数据对其他并发事务时隔离的,并发执行的各个事务之间是不能相互干扰的。

持久性(Durability

       事务的持久性也被称为永久性,是指一个事务一旦提交,它对数据库中对应数据的状态变更应该是永久的。换句话说,一旦某个事务成功结束,那么它对数据库所做的更新就必须被永久保存下来。

       在单机数据库中,我们很容易能够实现这一套满足ACID特性的事务处理系统,但在分布式数据库中,数据分散在不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑战。

2.2  分布式事务

       随着分布式计算的发展,事务在分布式的计算领域也得到了广泛的应用。由于在分布式数据库中,数据分散在不同的机器中,如何对这些数据进行分布式的事务处理具有非常大的挑战。因为分布式系统具有上述提到的各种问题。

       分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点之上。但由于在分布式事务中,各个子事物的执行是分布式的,因此要实现一种能够保证ACID特性的分布式事务处理系统就显得格外复杂。

2.3  CAP和BASE理论

CAP理论

       CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Avaliability)和分区容错性(P: partition tolerance)这三个基本需求,最多只能满足其中两项。

一致性(Consistency

       在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。

可用性(Avaliability

       可用性是指系统提供的服务必须处于一直可用的状态,对于用用户的每一个操作请求总是能够在有限的时间内返回正确的结果。

容错性(P: partition tolerance

       分区容错性约束了分布式系统需要具有如下特性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境出现故障。

BASE理论

eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong ConsistencyCAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)

基本可用(Basically Available)

基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。

软状态( Soft State)

软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。

最终一致性( Eventual Consistency)

最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

猜你喜欢

转载自blog.csdn.net/qq_21125183/article/details/80584871