第1章 分布式架构
阅读笔记《从Paxos到ZooKeeper分布式一致性原理与实践》 倪超
分布式架构
目录:
- 从集中式到分布式
- 从ACID到CAP/BASE
从集中式到分布式
集中式的特点
集中式:如大型机,性能和稳定性都好高,但是成本高昂,除此之外还存在单点问题
最大的特点就是部署结构简单,底层性能卓越,无需考虑部署多节点。
分布式的特点
分布式系统:由软件件或软件组件分布在不同的网络计算机上,彼此之间通过消息传递和协调的系统。
一个标准的分布式系统有以下几个特征:
分布性,对等性(没有主从),并发性,缺乏全局时钟,故障总是会发生
分布式环境的各种问题
-
通信异常:网络本身就是不可靠的,分布式需要各个节点通过网络通讯。其次网络延迟性大于单机操作,消息延迟和丢失比较常见。
-
网络分区 : 由于网络的原因,导致只有部分节点之间可以通讯,而和其他节点不能通讯,这一显现称为“网络分区”,俗称脑裂
-
三态:由于网络的原因,在分布式环境中请求有三种状态,即 成功,失败,超时。单机时一般不会超时,只会成功或失败。
-
节点故障: 单节点宕机,比如停电
从ACID到CAP/BASE
在分布式系统事务处理与数据一致性上遇到的各种挑战
ACID
事务: 是一系列对系统中数据访问和更新组成的执行单元,具有以下四个特性
Atomicity:原子性,即全部成功,或者全部不执行
Consistency:一致性一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNT表中aaa和bbb的存款总额为2000元。
Isolation: 隔离性:在并发环境下,并发的事务相互隔离,一个事务的执行不能影响另外一个事务,在标准的SQL中有四种隔离级别。
Duraiblity: 持久性 事务一旦提交就要存到磁盘中,如果宕机了,只要能重新启动,就要存到磁盘中
分布式事务
在单机上还是比较容易实现一套满足 ACID 特性的事务处理系统,但是在分布式数据库中,数据分散在不同的机器上,就比较麻烦了,比如你跨行转账,就不可能是单机的。
一个分布式事务可以看作是由多个分布式的操作序列组成的。
CAP和BASE理论
CAP定理告诉我们,在一个分布式系统,不可能同时满足一致性(Consistency),可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足2个
一致性:数据在多个副本之间能否保持一致的特性,数据在一个副本更新了,其他副本也要得到跟新。
可用性:系统提供的服务一直处于可服务状态,对用户的请求,总是在有限的时间内返回结果
分区容错性:在遇到任何网络错误,除非都挂了,都能对外提供满足一致性和可用性的服务
往往需要保证分区容错性,这是一个分布式系统的基本要求,所以要在一致性和可用性之间衡量
Base理论:Basically available (基本可用) Soft state(软状态),Eventually consisten(最终一致性) ,是对CAP定理一致性和可用性权衡的结果,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。