这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天。
分布式
概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
常见的分布式系统
分布式存储
Google File System:google分布式文件系统
Ceph:统一的分布式存储系统
Hadoop HDFS:基于GFS架构的开源分布式文件系统
Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
Google Spanner:google可拓展的、全球分布式的数据库
TiDB:开源分布式关系型数据库
HBase:开源Nosql数据库
MongoDB:文档数据库
分布式计算
Hadoop:基于MapReduce分布式计算框架
Spark:在Hadoop基础之上,使用内存来存储数据
YARN:分布式资源调度
系统模型
故障模型
Byzantine failure:节点可以任意篡改发送给其他节点的数据
Authentication dutectable byzantine failure:Byzantine failure的特里;节点可以篡改数据,但不能伪造其他节点的数据
Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
Omission failure:接单收到数据的实践无限晚,即收不到数据
Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设
理论基础
CAP理论
C Consistence:一致性,指数据在多个副本之间能够保持一致性(严格的一致性)
A Availability:可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的相应——但是不保证获取的数据为最性能数据
P Network Partitioning:分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障\
ACID理论
原子性A,一致性C,隔离性I,持久性D
BASE理论
Basically Available 基本可用
Soft state 软状态
Eventually consistent 最终一致性