目录
聊到分布式,很容易想到分布式系统、分布式部署,微服务、集中式等。
集中式
整个系统所有业务单元都集中部署到中心节点上,所有功能集中处理,数据集中存储于中心点上。集中式系统带来的好处系统部署简单,不用考虑多个节点的部署,不用考虑多个节点直接的协作问题。
分布式
特点
对分布式做如下定义:
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
一个分布式系统存在如下特征
- 分布性:多台机器空间上任意分布,机器的分布也随时变动
- 对等行:机器间无主从之分,机器之间可以互做副本(数据副本和服务副本)
- 并发性:主要理解对共享资源更新的并发性,如何准确并高效低协调分布式并发操作是分布式架构中的需要解决的问题
- 缺乏全局时钟:分布式系统由一系列在空间上随意分布的多个进程组成,进程之间通过交换信息来进行相互通信。因此在分布式系统中,很难定义两个事件谁先谁后,原因就是缺乏一个全局的时钟序列控制
- 故障总是发生
分布式一些典型问题
- 通信异常:分布式系统通过网络进行信息交换,网络本身就不可靠,每次通信都伴随着网络不可用的风险;其次,即使网络通信正常,其延迟也会大于单机操作(比如内存操作10ns,单一次网络通信的延迟在0.1-1ms左右)
- 网络分区:整个集群中,只有部分节点正常提供服务,剩余都是各种原因导致的异常
- 三态:成功、失败和超时
- 节点故障:节点宕机或僵死
事务
数据事务ACID
- 原子性
- 一致性
-
隔离型
在标准的SQL规范中,定义了4个事务隔离级别
- 未授权读取:事务提交之前读取了脏的数据
- 授权读取:事务提交之后才能读取数据
- 可重复读
- 串行化
- 持久性
分布式事务
举个例子:一个跨银行转账操作设计调用两个银行服务,其中一个是本地银行提供的取款服务,另一个则是目标银行提供的存款服务,这两个服务本身是无状态并且是相互独立的,共同构成了一个完整的分布式事务。
CAP理论
CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C: Consistency)、可用性(A: Availabitity)、分区容错性(P: Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。
- 一致性:在分布式环境下一致性是指多个副本之间能否保持一致的特性
- 可用性:系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。
- 分区容错性:分布式系统在遇到任何网络分区故障的时候,任然需要能够保证对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。 对于一个分布式系统而言,分区容错性可以说是一个最基本的要求,因此在做业务的时候,系统架构师往往需要把精力花在如何根据业务特点在C和A之间之间寻求平衡
BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式使系统达到最终一致性
- 基本可用:分布式系统在不可预知故障的时候,允许损失部分可用性
- 响应时间上的损失
- 功能上的损失: 如在抢购业务中,由于高峰负载激增,为了保护系统的稳定性,部分消费者会被引导到一个降级的页面。
- 弱状态 即软状态,允许系统中的数据存在中间状态,并认为中间状态不影响系统的整体可用性
- 最终一致性 系统所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。
总结
本文主要讲从集中式到分布式过程中碰到的一系列问题,并介绍了分布式事务一致性方面的经典理论
