分布式架构vs单体式架构
分布式架构是不可逆的潮流,分布式相比于单体式架构,解决了系统容量和系统可用的问题。
单体式架构,不论如何优化,其容量总是有极限的。而分布式架构,利用多台机器分布的大规模分布式特性,可以很好的解决容量问题。
单体式架构,一旦出现问题,会导致down机,需要用主备容灾等方式。对于分布式架构,可以使用冗余系统来消除单点问题。
现在基本所有的大的IT或者CT公司,基本都已采用或者正在转型到分布式架构,分布式架构已经是不可逆的潮流。所以作为架构师,必须要深入学习掌握分布式架构的知识。
但是,分布式架构是博大精深的知识体系,任何一个知识点都能深挖学习。本文就作为分布式架构学习的起点,从ACID、CAP定理、BASE思想开始。
ACID
**ACID,是指在数据库知识库管理系统(DBMS)中,事务(transaction)所具有的四个特性:
- 原子性(Atomicity):一个事物的操作,要么全部都完成,要么全部都不完成。
- 一致性(Consistency):一个事物在执行前和执行后数据库处于一致性状态。
- 隔离性(Isolation,又称独立性):不同的事物操作相同的数据时,每个事物都具有完整的数据空间
- 持久性(Durability): 一个事物执行后,数据库的更新就永远保存下来。
CAP定理
CAP指的是分布式架构的三种要素,分别是Consistence、Available、Patition tolorence:
- C:在分布式系统的所有数据备份,在同一时刻具备同样的值。
- A: 集群中一部分节点故障后,集群整体是否能响应客户端的读写请求。
- P:任意数量的信息在节点之间丢失或者延迟,系统仍然运行。
CAP定理是说任何时刻三者只能有两者被满足。
研读了历史后,发现这个定理并不充分:2000年Brew提出了,CAP三者任何时刻只有两者能被同时满足,2003年Lynch证明了Brew的猜想,但是只是证明了不可能被同时满足,并未证明二者可被同时满足。
Robert Greiner的定义更加精确一点:
CAP: In a distributed system (a collection of interconnected nodes that share data.), you can only have two out of the following three guarantees across a write/read pair: Consistency, Availability, and Partition Tolerance - one of them must be sacrificed.
C:A read is guaranteed to return the most recent write for a given client.
A: A non-failing node will return a reasonable response within a reasonable amount of time (no error or timeout).
P:The system will continue to function when network partitions occur.
由于分区是必然发生的事情,按照定义,分布式世界里一般通常的是CP和AP两种情况,CA少见或者基本不可能出现。
BASE模型
BASE全称是BasicallyAvailable(基本可用), Soft-state(软状态/柔性事务), Eventually Consistent(最终一致性)
对于分布式数 据系统,分区容忍性是基本要求 ,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡。牺牲一致性不代表不要一致性,而是最终达到一致性。
学习了CAP定理有什么用处
理论是技术的指导,理论让技术人知道为何要这么做,哪个方向做会行之有效,而不要在已经被证实无用的方向上下无用功。