这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
今天整理了分布式理论相关的学习笔记。
分布式概述
什么是分布式?
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
挑战
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
常见分布式系统
分布式存储
- Googoles File System(GFS):google分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
- Google Spanner:google可扩展的、全球分布式的数据库
- TiDB:开源分布式关系数据库
- HBase:开源Nosal数据库
- MongoDB:文档数据库
分布式计算
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础之上,使用内存来存储数据
- YARN:分布式资源调度
CAP理论
在网络发生分区的情况下,我们必须在可用性和一致性之间做出选择。近似解决办法:把故障节点的负载转移给备用节点负责,下图演示了如何做出故障转移:
ACID理论
事务是数据库系统中非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中所有操作要么全部执行,要么全都不执行。
数据库事务拥有四个特性ACID,即分别是原子性、一致性、隔离性和持久性。
原子性(A): 原子性是指事物包含的所有操作要么全部成功,要么全部失败回滚。
一致性(C): 一致性是指事物必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
隔离性(I): 隔离性是当多个用户并发访问数据时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
持久性(D): 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是持久性的,即便是在数据库系统遇到故障的情况下也不会提交事务的操作。