分布式理论 - 现代架构基石|青训营笔记

86 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第7天

一 本节课主要内容

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

二、本节课详细内容

分布式概述 分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。其优势主要有

  1. 去中心化
  2. 低成本
  3. 弹性
  4. 资源共享
  5. 可靠性高 同时也面临着诸多挑战:
  6. 普遍的节点故障
  7. 不可靠的网络
  8. 异构的机器与硬件环境
  9. 安全问题

常见的分布式系统

  • 分布式存储:GFS Ceph Hadoop HDFS Zookeeper

  • 分布式数据库:Google Spanner TiDB HBase MongoDB

  • 分布式计算:Hadoop Spark YARN

常见故障模型

磁盘故障,磁盘坏道、坏块,服务器主板、板卡故障,网络故障,网络分区,内存故障,线缆故障,内核崩溃,CPU故障,电源故障,软件故障

拜占庭将军问题

  • TCP三次握手
  • 共识和一致性
  • 客户端A读到x=0,当客户端C正在写入时,客户端A和B可能读到0或1。但是当C写入完成后,A和B最终能读到一致的数据。称这样的一致性为最终一致性Eventually Consistent 当客户端A读到更新的版本x=1后,及时将消息同步给其他客户端,这样其他客户端立即能获取到x=1。称这样的一致性为线性一致性Linerizability 如果要保证线性一致性,多个节点间势必需要进行协商,以寻求一致,这样增加了延迟,系统可用性便会受损。

CAP理论(回到云计算与大数据课本)

  • CA:放弃分区容错性。加强一致性和可用性,其实就是传统的单机数据库的选择
  • AP:放弃(强)一致性,追求分区容错性和可用性,例如一些注重用户体验的系统
  • CP:放弃可用性,追求一致性和分区容错性,例如与钱财安全相关的系统 ACID理论 原子性、一致性、隔离性、持久性

BASE理论 BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。其核心思想是:基本可用Basically Available: 假设系统出现了不可预知的故障,但还是能用,相比较正常的系统而言存在在时间上的损失或功能上的损失 软状态Soft State: 允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时 最终一致性Eventually Consistent: 系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值