[TOC]数据库
集中式系统架构与分布式系统架构
集中式系统:由卓越性能的大型主机单机组成的计算机系统,称为集中式系统。网络
特色。单机运算能力强劲,部署结构简单。可是,拥有单点故障,且单机价格昂贵。架构
分布式系统:一个硬件或者软件组件分布在不一样的网络计算机上,彼此之间仅仅经过消息传递进行通讯和协调的系统。并发
特色:分布式
- 分布性。多台计算机在空间中任意分布,且分布状况随时变更。
- 对等性。分布式系统中计算机硬件没有主从之分。
- 并发性。并发的操做共享资源(分布式系统最大挑战之一)。
- 缺少全局时钟。分布式系统中时间的前后,缺少全局时钟序列控制。
- 故障老是发生。组成分布式系统的计算机,随时都有可能发生任何形式故障
分布式系统架构中的挑战
事务
定义:一系列对系统中数据进行访问与更新的操做所组成的一个程序执行单元。狭义上的事务特指数据库事务。性能
4大特性:ACIDspa
原子性 Atomicity 一致性 Consistency 隔离性Isolation 持久性Durability设计
原子性指事务必须是一个原子的操做序列单元,只容许出现所有成功执行和所有不执行两个状态。事务
一致性指事务执行的结果必须是使系统从一个一致性状态变为另外一个一致性状态。好比数据库事务中,出现故障事务失败,可是数据写入了部分,此为不一致状态。ci
隔离性指一个事务的执行不能被其它事务干扰。
持久性指事务一旦提交,对系统的变动是永久性的。好比数据库事务操做完毕,数据持久到磁盘。
分布式事务和数据一致性
一个分布式事务可看做由多个分布式的操做序列组成,因为在分布式事务中,各个子事务的执行是分散的,所以要实现一种可以保证ACID特性的分布式事务处理系统格外复杂。
举个典型的分布式事务场景:一个跨银行的转帐操做涉及调用两个异地的银行服务,其中一个是本地银行提供的取款服务,另外一个则是目标银行提供的存款服务,这两个服务自己是无状态而且相互独立的,共同构成了一个完整的分布式事物。若是从本地银行取款成功,可是由于某种缘由存款服务失败了,那么就必须回滚到取款以前的状态,不然用户可能会发现本身的钱不知去向了。
CAP定理
一个经典的分布式系统理论。CAP理论:一个分布式系统不可能同时知足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时知足其中两项。
C 一致性:一个系统在数据一致的状态下执行更新操做后,应该保证系统的数据仍然处于一致的状态
A 可用性:系统提供的服务必须一致处于可用的状态,对于用户的每个操做请求老是可以在有限时间内返回结果
P 分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然须要可以对外知足一致性和可用性的服务,除非网络环境都发生故障
选择 | 说 明 |
---|---|
CA | 放弃分区容错性,增强一致性和可用性,其实就是传统的单机数据库的选择 |
AP | 放弃一致性(追求最终一致性),追求分区容错性和可用性,这是不少分布式系统设计时的选择,例如不少NoSQL系统就是如此 |
CP | 放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用 |
须要明确的一点是:对于一个分布式系统来讲,分区容错性能够说是一个最基本的需求。由于既然是一个分布式系统,那么分布式系统中的组件必然须要部署在不一样节点,所以会出现子网络,所以分区容错性成为了一个分布式系统必然要面对和解决的问题。所以系统设计师每每在一致性和可用性之间作平衡取舍。由此引起Base理论。
BASE理论
BASE是对CAP中一致性和可用性权衡的结果,核心思想是即便没法作到强一致性,可是每一个应用均可以根据自身业务特色,采用适当的方式使系统达到最终一致性。
BASE理论三要素:
- 基本可用 Basically Available
- 软状态 Soft state
- 最终一致性 Eventually consistent
三要素详细解释:
基本可用
分布式系统出现不可预知故障的时候,容许损失部分可用性
例:集群中部分机器宕机,致使剩余机器压力过大,查询效率从0.5s降到了2s
弱状态
容许系统中的数据存在中间状态,并认为该状态不影响系统的总体可用性,即容许系统在多个不一样节点的数据副本存在数据延时。
最终一致性
最终一致性强调在系统的全部数据副本,在通过一段时间的同步后,最终可以达到一个一致的状态。
总的来讲。BASE 理论面向的是大型高可用可扩展的分布式系统,和传统事务的 ACID 是相反的,它彻底不一样于 ACID 的强一致性模型,而是经过牺牲强一致性来得到可用性,并容许数据在一段时间是不一致的。