这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同目标。可以分为分布式计算、分布式存储、分布式数据库等。
常见的分布式系统
分布式存储
- Google File System(GFS): google 分布式文件系统
- CEph:统一的分布式存储系统
- Hadoop HDFS: 基于GFS框架的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
- Google Spanner : google可扩展的、全球分布式的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosql数据库
- MongoDB:文档数据库
分布式计算
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础上,使用内存来存储数据
- YARN : 分布式资源调度
共识和一致性
客户端A读到x=0,当客户端c正在写入时,客户端A和B可能读到0或1,但当C写入完成后,A和B最终能读到一致数据。这样的一致性为Eventually consistent(最终一致性)。
读请求和写请求并发时可能读到旧值
当客户端A读到更新的版本x=1后,及时将消息同步给其他客户端。这样其他客户端立即能获取到x=1,这样的一致性为Linearizability(线性一致性)。所有客户端返回新值
CPA理论
- C(Consistence):一致性,数据在多个副本之间能够保持一致性(严格一致性)
- A(Availability):可能性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取非错的响应--但不能保证获取的数据为最新数据。
- P(Network partitioning):分区容错性,分布式系统在遇到任何网络分区故障时,仍能对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。
CAP运用于数据库领域,同样可以适用于分布式存储方向(只能满足两种情况,不能三种同时满足)
- CA:放弃分区容错,加强一致性和可用性,如传统的单机数据库的选择
- AP:放弃一致性(强一致性),追求分区容错性和可用性,如一些注重用户体验系统
- CP:放弃可用性,追求一致性和分区容错性,如与钱财安全相关的系统
ACID理论
原子性(A):指事务包含的所有操作要么全部成功,要么全部失败回滚。 一致性(C):指事务必须使数据库从一个一致性状态转化到另一个一致性状态。 隔离性(I):当多个用户并发访问数据库时,数据库为每一个用户开启事务,不能被其他事务操作所干扰。 持久性(D):指一个事务一旦被提交了,那么对数据库中的数据的改变是永久的。
BASE理论
Base理论是对CAP中一致性和可用性权衡的结果。
- 基本可用(Basically Available):假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言,响应时间上的损失或功能上的损失。
- 软状态(Soft state):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性。
- 最终一致性(Eventually consistent):系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够到达一致的状态。