目录
- 分布式架构
- 从集中式到分布式
- 从ACID到CAP/BASE
- 一致性协议
- 2PC与3PC
- Paxos算法
- Paxos的工程实践
- Chubby
- Hypertable
- Zookeeper与Paxos
- 初始Zookeeper
- Zookeeper的ZAB协议
- 使用Zookeeper
- 部署与运行
- 客户端脚本
- Java客户端API
- 开源客户端
- Zookeeper的典型应用场景
- Zookeeper技术内幕
- 系统模型
- 序列化与协议
- 科幻端
- 会话
- 服务器启动
- leader选举
- ...
- Zookeeper运维
Chap1 分布式架构
从集中式到分布式
- 集中式:由一台或多台主计算机组成中心节点,数据集中存储于这个中心节点中。部署结构简单,不用考虑多个节点之间的分布式协作问题。
- 分布式:
- 分布式系统定义:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
- 分布式系统特征:
- 分布性:空间上任意分布;
- 对等性:计算机没有主从之分,所有节点都是对等的。副本是分布式系统最常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式,以对外提供高可用的服务;
- 并发性:计算机网络中,程序运行过程中的并发性操作是很常见的行为。例如一个分布式系统中的多个节点,可能会并发地操作一些共享的数据,如何准确并高效地协调分布式并发操作时分布式系统架构和设计中最大的挑战之一;
- 缺乏全局时钟:一个典型的分布式系统是由一系列空间任意的多个进程组成,进程间通过交换消息来通信。因此,在分布式系统中,很难定义两个时间究竟谁先谁后,原因就是分布式系统中缺乏一个全局的时钟序列控制。[注:关于分布式系统时钟可参考经典论文:Time, Clocks, and the Ordering of Events in a Distributed System]
- 故障总会发生:在系统实际运行过程中还会遇到很多在设计时为考虑到的异常故障。
分布式环境的各种问题
- 通信异常:网络本身的不可靠性,消息丢失和消息延迟非常普遍。
- 网络分区:当网络由于异常而导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有部分节点间能正常通信,该现象称为网络分区,俗称“脑裂”。在极端情况下,这些局部小集群会独立完成原本需要整个分布式系统才能完成的功能,包括对数据的事务处理,这就对分布式一致性提出了非常大的挑战。
- 三态:分布式系统的每一次请求与响应,存在特有的“三态”概念,即成功、失败与超时。(不同于传统单机,能够得到明确的响应:成功或失败。)
- 节点故障:每个节点都有可能故障。
从ACID到CAP/BASE
ACID
- 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元,狭义上的事务特指数据库事务。
- 一方面,当多个应用程序并发访问数据库时,事务可以在这些应用程序之间提供一个隔离方法,以防止彼此操作互相干扰;
- 另一方面,事务为数据库操作序列提供了以个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持数据一致性的方法。
- 事务的ACID特性:
- 原子性(Atomicity):事务必须是一个原子的操作序列单元。只允许出现“全部执行成功”和“全部不执行”两种状态。
- 一致性(Consistency):事务的执行不能破坏数据库数据的完整性和一致性。一个事务在执行前后,数据库都必须处于一致性状态。也就是说,事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。
- 隔离性(Isolation):在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其他事务干扰。也即,不同的事务并发操作相同数据时,每个事务都有各自完整的数据空间。[关于隔离性的更多内容戳事务隔离性]
时间: 2024-11-24 13:38:35