1-分布式架构

一、集中式与分布式

1、集中式系统

集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行。现在的银行系统,大部分都是这种集中式的系统,此外,在大型企业、科研单位、军队、政府等也有分布。集中式系统,主要流行于上个世纪。

集中式系统的最大的特点就是部署结构非常简单,底层一般采用从IBM、HP等厂商购买到的昂贵的大型主机。因此无需考虑如何对服务进行多节点的部署,也就不用考虑各节点之间的分布式协作问题。但是,由于采用单机部署。很可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。

2、分布式系统

在《分布式系统概念与设计》一书中,对分布式系统做了如下定义:

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

简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。

从分布式系统的概念中我们知道,各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。但是,无论空间上如何分布,一个标准的分布式系统应该具有以下几个主要特征:

分布性

分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。

对等性

分布式系统中的计算机没有主从之分,既没有控制整个系统的主机,也没有控制的从机

同一性

系统中的若干台计算机可以互相协作来完成一个共同的任务,或者说一个程序可以分布在几台计算机上并行地运行。

通信性

系统中任意两台计算机都可以通过通信来交换信息。

二、分布式环境的各种问题

通信异常

系统中任意两台计算机都可以通过通信来交换信息,因此每次通信都会伴随着网络不可用的风险。另外分布式的通信相较于单机内的内存通信,通信延迟也差别较大,单机内存的延时在纳秒级(10ns左

右),而机器之间的网络通信都是在毫秒级别,因此消息丢失和网络延迟的风险也比较大。

网络分区

通信异常的发生,导致只有部分节点之间能正常通信,出现网络分区,俗称"脑裂"。

三态

由于存在通信异常的发生,分布式系统中每一次请求的响应存在三种可能,成功、失败或者超时,称为"三态"。

节点故障

节点down机,每个机器都有可能出现节点故障

三、一致性理论

1、ACID

原子性

一致性

隔离性

持久性

2、分布式事务

单机数据库下,很容易满足ACID事务,但是在分布式系统中,由于上面的问题存在,实现分布式的事务却有很大的挑战。分布式事务实质事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点之上。通常一个分布式事务中会涉及对多个数据源或业务系统的操作。

3、CAP理论

C(consistency)强一致性,A(avaliability)可用性,P(Partition tolerance)分区容忍性。

强一致性(consistency)

分布式系统中的一致性指的是数据在多个副本之间是否能够保持一致。即某个节点的数据发生了变动,需要将数据更新同步到其他节点上。

可用性(avalibility)

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

分区容忍性(partition tolerence)

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

根据CAP理论,在我们设计分布式系统的时候,无法同时满足CAP三个需求,所以就需要进行取舍。 
对于分布式系统来说,分区容忍性可以说是一个最基本的要求,因为分布式中必然存在子网络。所以一般我们都会在C和A之间寻求平衡。

1-分布式架构_第1张图片

4、BASE理论

BA: Basically Avaliable(基本可用) 
S:Soft State(软状态) 
E:Eventually consistent(最终一致性)

BASE是对CAP中一致性和可用性权衡的结果,核心思想是,即使无法做到强一致性,但是每个应用都可以根据自身的业务特点,采取适当的方式使系统达到最终一致性(E)。

基本可用 (Basically avaliable)

分布式系统出现不可预知故障的时候,允许损失部分可用性。包括性能损失(响应时间增加)和功能损失(降级)

软状态(soft state)

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

最终一致性(eventually consitent)

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


最终一致性包括一下5类变种:

因果一致性

读己之所写

会话一致性

单调读一致性

单调写一致性


总的来说,BASE理论面向的是大型高可用高扩展的分布式系统,它完全不同于传统的ACID的强一致性模型,而是通过牺牲强一致性来获得高可用性,并允许数据在一段时间的不一致性,但最终能够达到一致状态。

你可能感兴趣的:(1-分布式架构)