本次笔记内容:

  • 分布式概述
  • 系统模型
  • 理论基础
  • 分布式事务
  • 共识协议
  • 分布式实践

分布式概述

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算结点的计算资源来实现共同目标(以上是百度百科的官方解释,有点抽象)

优点

  • 去中心化
  • 低成本
  • 弹性
  • 资源共享
  • 可靠性高

挑战

  • 普遍的结点故障
  • 不可靠的网络
  • 异构的机器与硬件环境
  • 安全

从使用者视角来看(what、how、why)

  • why
  • 数据爆炸,对存储的计算有大规模的运用的诉求
  • 成本低,构建在廉价服务器上
  • how
  • 分布式框架
  • 成熟的分布式系统
  • what
  • 理清规模,负载,一致性要求
  • 明确稳定性要求,制定技术方案

常见的分布式系统

分布式存储

  • Google file system:Google分布式文件系统
  • ceph:统一的分布式存储系统
  • Hadoop hdfs:基于gfs架构的开源分布式文件系统
  • zookeeper:高可用的分布式数据管理与系统协调框架

分布式数据库

  • Google spanner
  • TIDB
  • HBase
  • MongoDB

分布式计算

  • Hadoop
  • Spark
  • YARN

系统模型

故障模型

  1. Byzantine failure
  2. Authentication detectable byzantine failure
  3. Performance failure
  4. Omission failure
  5. Crash failure
  6. Fail-stop failure

故障问题

  1. 磁盘故障
  2. 磁盘坏道
  3. 服务器主板故障
  4. 网络故障
  5. 网络分区
  6. 内存故障
  7. 线缆故障
  8. 内核崩溃
  9. cpu故障
  10. 电源故障
  11. 软件故障

理论基础

CAP理论

  • CA:放弃分区容错性,加强一致性和可用性
  • AP:放弃一致性,追求分区容错性和可用性
  • CP:放弃可用性,追求一致性和分区容错性

ACID理论

  • 原子性:指十五包含的所有操作要么全部成功,要么全部失败回滚
  • 一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态
  • 隔离性:当多个用户并发访问数据库时,数据库为每一个用户开启的事务互不干扰
  • 持久性:一旦事务提交,那么对数据库中数据的改变就是永久性的。