Skip to content

Latest commit

 

History

History
141 lines (75 loc) · 7.7 KB

分布式-分布式架构.md

File metadata and controls

141 lines (75 loc) · 7.7 KB

分布式:分布式架构

分布式特点

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

一个标准的分布式系统在没有任何特定业务逻辑约束的情况下,都会有如下几个特征:

分布性

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

对等性

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

副本(Replica)是分布式系统最常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。

  • 数据副本是指在不同节点上持久化同一份数据,当某一个节点上存储的数据丢失时,可以从副本上读取到该数据
  • 服务副本指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理

并发性

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

缺乏全局时钟

在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是分布式系统缺乏一个全局的时钟序列控制。

故障总是会发生

组成分布式系统的所有计算机,都有可能发生任何形式的故障。

分布式环境的各种问题

通信异常

分布式系统需要在各个节点之间进行网络通信,因此每次网络通信都会伴随着网络不可用的风险,网络光纤,路由器或是 DNS 等硬件设备或是系统不可用都会导致最终分布式系统无法顺利完成一次网络通信。

即使分布式系统各节点之间的网络通信能够正常运行,其延时也会远大于单机操作。

网络分区

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

三态

分布式系统的每一次请求与响应,存在特有的"三态"概念,即成功,失败与超时。

当网络出现异常的情况下,可能会出现超时现象,通常有如下两种情况:

  • 由于网络原因,该请求(消息)并没有被成功地发送到接收方,而是在发送过程就发生了消息丢失的现象
  • 该请求(消息)成功的被接收方接收后,并进行了处理,但是在将响应反馈给发送方的过程中,发生了消息丢失现象

节点故障

组成分布式系统的服务器节点出现的宕机或僵死现象,每个节点都有可能会出现故障,并且每天都在发生。

ACID

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

事务具有四个特征,分别是原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability),简称事务的 ACID 特性。

原子性

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

  • 全部成功执行
  • 全部不执行

一致性

事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。

隔离性

事务的隔离是指在并发环境中,并发的事务都是相互隔离的,一个事务的执行不能被其他事务干扰。

在标准 SQL 规范中,定义了 4 个事务隔离级别:

  • 未授权读取(Read Uncommitted):该隔离级别允许脏读,其隔离级别最低
  • 授权读取(Read Committed):该隔离级别只允许获取已经被提交的数据
  • 可重复读取(Repeatable Read):在事务处理过程中,多次读取同一个数据时,其值和事务开始时刻是一致的。该事务级别禁止了不可重复读取和脏读,但有可能出现幻读。
  • 串行化(Serializable):它要求所有事务都被串行执行,即事务只能一个接一个地进行处理,不能并发执行。

持久性

持久性是指一个事务一旦提交,它对数据库中对应数据的状态变更就应该是永久性的。

CAP 理论

CAP 理论告诉我们,一个分布式系统不可能同时满足一致性,可用性和分区容错性这三个基本需求,最多只能同时满足其中的两项。

一致性(Consistency)

在分布式环境下,一致性是指数据在多个副本之间是否能够保持一致的特性。

在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。

可用性(Availability)

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

  • "有限的时间内"是指,对于用户的一个操作请求,系统必须能够在指定的时间(即响应时间)内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。
  • "返回结果"要求系统在完成对用户请求的处理后,返回一个正常的响应结果。

分区容错性(Partition tolerance)

分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

对于分布式系统而言,分区容错性是分布式系统必然需要面对和解决的问题,因此系统架构设计师往往需要把精力花在如何根据业务特点在一致性和可用性之间寻求平衡。

BASE 理论

BASE 是 Basically Available(基本可用),Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的简写。

BASE 是对 CAP 中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

基本可用

基本可用指的是分布式系统在出现不可预知故障的时候,允许损失部分可用性,但这绝不等价于系统不可用。

以下是两个"基本可用"的典型例子:

  • 响应时间上的损失:正常情况下,一个请求需要在 0.5s 内返回给用户,但由于出现故障,查询结果的时间增加到了 1-2 秒。
  • 功能上的损失:正常情况下,在一个网站上购物,消费者能够顺利完成订单,但在高峰时期,部分消费者可能会被引导到一个降级页面。

弱状态

弱状态也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

最终一致性

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。

因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

思维导图

分布式-分布式架构-思维导图.png