分布式系统介绍
分布式系统(distributed system)
由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在在不同的平台上如:Pc、工作站、局域网和广域网上等。
分布式系统的最大难点,就是各个节点的状态如何同步。CAP
则是这方面的基本定理,也是理解分布式系统的基础。
在介绍CAP
之前,我们先来了解以下ACID
ACID是什么?
ACID
即事务执行的四个基本要素:
- A (Atomicity) 原子性
- C (Consistency) 一致性
- I (Isolation) 独立性
- D (Durability) 持久性
A (Atomicity) 原子性:
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
C (Consistency) 一致性:
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
I (Isolation) 独立性:
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的
D (Durability) 持久性:
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
CAP是什么?
CAP即分布式系统中的三个基本要素,三者不可兼得:
- C(Consistency)强一致性
- A(Availability)可用性
- P(Partition tolerance)分区容错性
C(Consistency)强一致性
在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份 最新的数据副本)
A(Availability)可用性
在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备 高可用性)
P(Partition tolerance)分区容错性
以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性, 就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。
CAP
理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,
最多只能同时较好的满足两个。
因此,根据 CAP 原理分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
- CA:单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大;
- CP:满足一致性,分区容忍必的系统,通常性能不是特别高;
- AP:满足可用性,分区容忍性的系统,通常可能对一致性要求低一些;
Base是什么?
Base
BASE其实是下面三个术语的缩写就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案;
Base即如下三个术语的缩写:
- (Basically Available)基本可用
- (Soft state)软状态
- (Eventually consistent)最终一致
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里Base就是解决这个问题的办法