2018-08-20 23:24:19
来 源
中存储
存储基础知识
大数据分布式系统架构中CAP原理指的是,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。

本文探讨大数据的分布式架构原理:

一、分布式系统的理论

1、CAP原理

cap理论原理示意图-hadoop大数据

CAP原理指的是,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架构设计时,必须做出取舍。而对于分布式数据系统,分区容忍性是基本要求 ,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡。

其中:

一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

2、BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

二、数据分割方式

1、哈希方式

优点:

散列性:好

元信息:只需要函数+服务器总量

缺点:

可扩展性:差。一旦集群规模扩展,大多数数据都需要被迁移并重新分布

数据倾斜:当某个用户id的数据量异常庞大时,容易达到单台服务器处理能力的上限

2、按数据范围分布

 将数据按特征值的值域范围划分数据。

优点:

可扩展性:好。灵活根据数据量拆分原有数据区间

缺点:

元信息:大。容易成为瓶颈

3、按数据量分布

与按范围分布数据方式类似,元信息容易成为瓶颈

4、一致性哈希

用一个hash函数计算数据(特征)的hash值,令该hash函数的值域成为一个封闭的环,将节点随机分布在环上。每个节点负责处理从自己开始顺时针到下一节点的值域上的数据

优点:

可扩展性:极好。任意动态添加、删除节点,只影响相邻节点

缺点:

元信息:大而且复杂

随机分布节点容易造成不均匀

动态增加节点后只能缓解相邻节点

一个接点异常时压力全转移到相邻节点

三、副本策略

1、中央化副本控制协议

副本控制协议指按特定的协议流程控制副本数据的读写行为,使得副本满足一定的可用性和一致性要求的分布式协议。副本控制协议可以分为两大类“中心化(centralized)副本控制协议”和“去中心化(decentralized)副本控制协议”。

中心化副本控制协议的基本思路:由一个中心节点协调副本数据的更新、维护副本之间的一致性。所有副本相关的控制交由中心节点完成,并发控制由中心节点完成,从而简化一个分布式并发控制问题为一个单机并发控制问题。而所谓并发控制,即多个节点同时需要修改副本数据时,需要解决“WW”,"RW"等并发冲突。

2、副本的一致性

副本的consistency是针对分布式系统而言的,不是针对某一个副本而言。根据强弱程度分为:

①强一致性:任何时刻任何用户/节点都可以读到最近一次更新成功的副本数据

②单调一致性:任何时刻任何用户一旦读到某个数据某次更新后的值,就不会再读到更旧的值

③会话一致性:任何时刻任何用户在某次会话内一旦读到某个数据某次更新后的值,就不会在这次会话再读到更旧的值

④最终一致性:各个副本的数据最终将达到一致状态,但时间不保证

⑤弱一致性:没有实用价值

3、Primary-secondary协议

Primary-secondary协议是中心化副本控制协议中常常用到的,该协议将副本分为两大类:其中有且仅有一个副本作为primary副本,除primary意外的副本都作为secondary副本。维护primary副本的节点作为中心节点,中心节点负责维护数据的更新、并发控制、协同副本的一致性。

1)Primary-secondary协议数据更新基本流程:

①数据更新都由primary节点协调完成

②外部节点将更新操作发给primary节点

③primary节点进行并发控制即确定并发更新操作的先后顺序

④primary节点将更新操作发送给secondary节点

⑤primary根据secondary节点的完成情况决定更新是否成功并将结果返回外部节点

2)数据读取方式

与数据更新流程类似,读取方式也与一致性高度相关。使用primary-secondary比较困难的是实现强一致性。实现强一致性一般有如下几个思路:

①始终只读primary副本的数据

②由primary控制节点secondary节点的可用性。

③基于Quorum机制

3)Primary副本的确定和切换

primary副本的确定通常由原信息管理,由专门的元数据服务器维护,执行更新操作时,首先查询元数据服务器获取副本的primary信息,从而进一步执行数据更新流程。

primary副本的切换通常可以使用lease机制来完成。

4)数据同步

数据同步是因为primary副本可能会存在于secondary副本不一致的问题。通常有如下三种形式:

①由于网络分化等异常,secondary上的数据落后于primary上的数据。—— redo primary副本上的操作日志。

②在某些协议下,secondary上的数据有可能是脏数据,需要被丢弃。—— undo日志的方法删除脏数据

③secondary是一个新增加的副本,完全没有数据,需要从其他副本上拷贝数据。—— 使用primary副本的snapshot(快照)功能

4、Paxos协议

多个节点直接通过操作日志同步数据,如果只有一个节点称为主节点,就很容易在多个节点之间维护数据一致性。然后主节点可能出现故障,那么就需要选出主节点。Paxos协议就是用于解决多个节点之间的一致性问题。

在paxos算法中,分为4种角色:

Proposer :提议者

Acceptor:决策者

Client:产生议题者

Learner:最终决策学习者

最终决策的paxos算法行为

①Proposer提出议题

②Acceptor初步接受 或者 Acceptor初步不接受

③如果上一步Acceptor初步接受则Proposer再次

④向Acceptor确认是否最终接受

⑤Acceptor 最终接受 或者Acceptor 最终不接受

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。