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

51 阅读3分钟

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

此笔记的主要内容如下
  • 分布式概述
  • 系统模型
  • 理论基础
  • 分布式事务
  • 共识协议
  • 分布式实践

分布式概述

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

优势:1. 去中心化 2. 低成本 3. 弹性 4. 资源共享 5. 可靠性高

挑战:1. 普遍的节点故障 2. 不可靠的网络 3. 异构的机器与硬件环境 4. 安全

常见的分布式系统

分布式存储: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: 系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值