本次笔记内容:
- 分布式概述
- 系统模型
- 理论基础
- 分布式事务
- 共识协议
- 分布式实践
分布式概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算结点的计算资源来实现共同目标(以上是百度百科的官方解释,有点抽象)
优点:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
挑战:
- 普遍的结点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
从使用者视角来看(what、how、why)
- why
- 数据爆炸,对存储的计算有大规模的运用的诉求
- 成本低,构建在廉价服务器上
- how
- 分布式框架
- 成熟的分布式系统
- what
- 理清规模,负载,一致性要求
- 明确稳定性要求,制定技术方案
常见的分布式系统
分布式存储
- Google file system:Google分布式文件系统
- ceph:统一的分布式存储系统
- Hadoop hdfs:基于gfs架构的开源分布式文件系统
- zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
- Google spanner
- TIDB
- HBase
- MongoDB
分布式计算
- Hadoop
- Spark
- YARN
系统模型
故障模型
- Byzantine failure
- Authentication detectable byzantine failure
- Performance failure
- Omission failure
- Crash failure
- Fail-stop failure
故障问题
- 磁盘故障
- 磁盘坏道
- 服务器主板故障
- 网络故障
- 网络分区
- 内存故障
- 线缆故障
- 内核崩溃
- cpu故障
- 电源故障
- 软件故障
理论基础
CAP理论
- CA:放弃分区容错性,加强一致性和可用性
- AP:放弃一致性,追求分区容错性和可用性
- CP:放弃可用性,追求一致性和分区容错性
ACID理论
- 原子性:指十五包含的所有操作要么全部成功,要么全部失败回滚
- 一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态
- 隔离性:当多个用户并发访问数据库时,数据库为每一个用户开启的事务互不干扰
- 持久性:一旦事务提交,那么对数据库中数据的改变就是永久性的。