第1章:分布式架构
? 将多台机器组成分布式的处理方式越来越收到业界的青睐。
1.1 从集中式到分布式
? 由于大型主机拥有卓越的性能和良好的稳定性,在单机处理方面优势非常明显。
? 但是随着计算机系统向网络化和微型化的方向发展,传统的集中式处理越来越不适应人们的需求。
大型主机的缺点:
? (1)操作难度大。
? (2)价格昂贵
? (3)虽然大型主机稳定,但是一旦出现故障后果严重
? (4)扩容非常困难
阿里提出的“去IOE”运动,让计算和存储能力出现了巨大的挑战,所以电商系统正式迈入分布式系统的时代。
1.1.1 集中式的特点
? (1)整个系统的所有业务都部署在这个中心节点上。
? (2)所有的业务集中处理
? (3)不需要考虑多个节点的协作问题
1.1.2 分布式的特点
? 分布式系统的定义: 是一个硬件或者软件组件分布在不同的网络计算机上,彼此之间仅通过消息传递进行通信和协调的系统
? 分布式系统的几大特征
? (1)分布性:
? 多台计算机随意分布,也可以随时变动
? (2)对等性:
? 计算机没有主从之分,都有的节点都是对等的。
? (3)并非性:
? 多个计算机同时操作共享的资源
? (4)缺乏全局时钟:
? 因为没有全局的时钟,很难定义两个事件谁先谁后。
? (5)故障总是发生:
? 随着机器的增加,故障也会发生的越来越多
1.1.3 分布式环境的各种问题
? 1、通信异常
? (1)由于网络的不可靠,比如会导致通信发生异常,比如消息的丢失或者消息的延迟
? 2、网络分区(脑裂)
? (1)随着节点之间的网络延迟不断加大,导致分布式系统中只有部分的节点可以正常工作,另一部分节点不能。
? (2)这个现象称为网络分区,俗称“脑裂”
? 3、三态
? (1)网络请求有“三态”概念,分别是成功、失败与超时。
? (2)集中式的系统中只有成功与失败两个状态,但是分布式系统中有超时的问题
? 4、节点故障
? (1)分布式系统中某些节点出现宕机或者死机的现象。
? (2)且随着分布式模型的增加,故障发生的频率越来越高,几乎每天都在发生。
1.2 从ACID到CAP/BASE
1.2.1 ACID
? 事务有四大特性,分别是ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
? (1)原子性
? 要么全部执行,要么全部不执行。如果执行一半出现错误,则将之前执行的全部撤回。
? (2)一致性
? 一致性是指事务不破坏数据库的完整性和一致性。
? 数据库的完整性包括实体完整性、参照完整性、用户定义完整性
? (3)隔离性
? 事务之间是相互隔离的,两个同时执行的事务之间不互相影响。
? 在SQL规范中提供了4中隔离级别,分别是①未授权读取 ② 授权读取 ③ 可重复读 ④ 串行化
? 其中严格程度从低到高,最严格的是④串行化
? 读脏数据: 不加写锁的情况下,当前事务读取已经撤销的数据
? 不可重复读:不加读锁的情况下,读取后的数据被偷偷修改。第二次读就不一样了。
? 幻读:加写锁的情况下,事务中进行两次查询,发现结果不一致。
隔离级别 | 读脏数据 | 可重复读 | 幻读 |
---|
未授权读取 | 存在 | 不可以 | 存在 | 授权读取 | 不存在 | 不可以 | 存在 | 可重复读取 | 不存在 | 可以 | 存在 | 串行化 | 不存在 | 可以 | 不存在 |
?
1.2.2 分布式事务
? 分布式系统在实现ACID的时候,十分的复杂
1.2.3 CAP和BASE理论
? 分布式系统无法严格地满足ACID特性。如果满足严格的ACID必然会导致分布式系统变得无法使用。
? 所以可用性和一致性是一个无法两全其美的方案。
? 基础此,学者提出了CAP和BASE的分布式系统的经典理论。
CAP定理
? CAP理论: 分布式系统无法同时满足C、A、P三个需求,最多只能同时满足两个。
? C代表一致性(Consistency)、A代表可用性(Availability)、P代表分区容错性(Partition tolerance)
(1)一致性
? 数据的多个副本保持一致的状态。
? 强一致性:如果一个数据有三个副本,那么更新信息的时候需要将三个副本的信息同时更新完成后,才算更新成功。
(2)可用性:
? 对于每个用户的请求,总是在有限的时间内返回结果。
? 有限的时间是人为设定的,如果超过这个时间就认为不可用
(3)分区容错性
? 当遇到某个分区故障时,仍然能够保证对外提供满足一致性和可用性的服务。
? 比如说有一个数据有多个副本,则一个分区故障,另外两个依然可以保证系统的正常运行。
放弃CAP的某一定理 | 说明 |
---|
放弃P | 放弃容错性,那么一个数据只有一个副本,意味一旦节点出错,该数据就再也找不回来了。 | 放弃A | 放弃可用性,意味着用户需要等待长时间,如果节点出错,那么用户只能等待节点恢复,则不可用 | 放弃C | 放弃一致性,意味着数据的多个副本可以不一致。 |
对于分布式架构中,P是最重要的,因为多个副本能保证数据一定不会丢失。这就意味着设计师需要在C和A之间寻求平衡。
BASE理论
? BASE理论是CAP理论无法满足的情况下,一种退而求其次的做法
? BASE指的是 Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)
(1)基本可用
? 允许损失一部分的可用性。
? 比如搜索一个内容需要0.5秒返回结果,出现过在则可以增加1~2秒。
? 比如高峰期进行网上购物,那么为了稳定,可能会被引导到降级的页面。
(2)软状态
? 允许同一数据的不同副本之间有短时间内的不一致
(3)最终一致性
? 所有的数据副本,经过一段时间的同步后,最终能够达到一致性的状态。
|