分布式理论 | 青训营笔记

23 阅读4分钟

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

分布式理论

分布式概述

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

优势是去中心化以及低成本,但是出现的问题是节点故障以及不可靠的网络。

常见的分布式系统有:

分布式存储

1,Google File System(GFS):google:分布式文件系统

2,Ceph:统一的分布式存储系统

3,Hadoop HDFS:基于GFS架构的开源分布式文件系统

4,Zookeeper:高可用的分布式数据管理与系统协调框架

分布式数据库

1,Google Spanner:google可扩展的、全球分布式的数据

2,TDB:开源分布式关系型数据库

3.HBa5e:开源Nosa数据库

4.MongoDB:文档数据库

分布式计算

1,Hadoop:基于MapReduce分布式计算框架

2,Spark:在Hadoopi基础之上,使用内存来存储数据

3,YARN:分布式资源调度

故障模型

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

理论基础

CAP理论 C(Consistence):一致性

A(Availability):可用性

P(Network partitioning):分区容错性

CAP理论往往运用于数据库领域,同样可以适用于分布式存储方向 CA:放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选 择

AP:放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性, 例如一些注重用户体验的系统

CP:放弃可用性,迫求一致性和分区容错性,例如与钱财安全相关的系统

ACID理论:

事务是数据库系统中非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要 么全部执行,要么全都不执行。

数据库事务拥有四个特性ACID,即分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性 Durability 原子性(A】。原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。 一致性(C)。一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之 后都必须处于一致性状态 隔离性(I)。隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能披其他事务的探作所干扰,多个 并发事务之间要相互隔离 持久性(D】。持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障 的情况下也不会丢失提交事务的操作。

分布式事务

二阶段提交(Two-phase Commit):为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的 一种演算法。

三个假设: 1,引入协调者(Coordinator)和参与者(Participants),互相进行网络通信

2,所有节点都采用预写式日志,且日志被写入后即披保持在可靠的存储设备上

3,所有节点不会永久性损坏,即使损坏后仍然可以恢复

悲观锁:操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修 改数据

乐观锁:不会上锁,只是在执行更新时判断 别人是否修改数据,只有冲突时才放弃操作

MVCC是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。MVCC 为每个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题。

另外一种时间戳的实现:时间戳预言机【TSO】,采用中心化的授时方式,所有协调者向中心化节点获取时钟。优点是算 法简单,实现方便,但需要每个节点都与他进行交互,会产生一些网络通信的成本。TSO的授时中就需要考虑低延迟,高性能以及更好的容错性。