分布式理论|青训营笔记

90 阅读3分钟

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

什么是分布式

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

常见的分布式系统

分布式存储
  1. Google File System(GFS): google 分布式文件系统
  2. CEph:统一的分布式存储系统
  3. Hadoop HDFS: 基于GFS框架的开源分布式文件系统
  4. Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
  1. Google Spanner : google可扩展的、全球分布式的数据库
  2. TiDB:开源分布式关系型数据库
  3. HBase:开源Nosql数据库
  4. MongoDB:文档数据库
分布式计算
  1. Hadoop:基于MapReduce分布式计算框架
  2. Spark:在Hadoop基础上,使用内存来存储数据
  3. YARN : 分布式资源调度

共识和一致性

客户端A读到x=0,当客户端c正在写入时,客户端A和B可能读到0或1,但当C写入完成后,A和B最终能读到一致数据。这样的一致性为Eventually consistent(最终一致性)。

uTools_1675343938654.png

读请求和写请求并发时可能读到旧值

当客户端A读到更新的版本x=1后,及时将消息同步给其他客户端。这样其他客户端立即能获取到x=1,这样的一致性为Linearizability(线性一致性)。

uTools_1675344254742.png

所有客户端返回新值

CPA理论

  • C(Consistence):一致性,数据在多个副本之间能够保持一致性(严格一致性)
  • A(Availability):可能性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取非错的响应--但不能保证获取的数据为最新数据。
  • P(Network partitioning):分区容错性,分布式系统在遇到任何网络分区故障时,仍能对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

CAP运用于数据库领域,同样可以适用于分布式存储方向(只能满足两种情况,不能三种同时满足)

  1. CA:放弃分区容错,加强一致性和可用性,如传统的单机数据库的选择
  2. AP:放弃一致性(强一致性),追求分区容错性和可用性,如一些注重用户体验系统
  3. CP:放弃可用性,追求一致性和分区容错性,如与钱财安全相关的系统

ACID理论

原子性(A):指事务包含的所有操作要么全部成功,要么全部失败回滚。 一致性(C):指事务必须使数据库从一个一致性状态转化到另一个一致性状态。 隔离性(I):当多个用户并发访问数据库时,数据库为每一个用户开启事务,不能被其他事务操作所干扰。 持久性(D):指一个事务一旦被提交了,那么对数据库中的数据的改变是永久的。

BASE理论

Base理论是对CAP中一致性和可用性权衡的结果。

  • 基本可用(Basically Available):假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言,响应时间上的损失或功能上的损失。
  • 软状态(Soft state):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性。
  • 最终一致性(Eventually consistent):系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够到达一致的状态。