从Paxos到Zookeeper笔记1——第一章:分布式架构

第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)最终一致性

​ 所有的数据副本,经过一段时间的同步后,最终能够达到一致性的状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值