这是我参与「第五届青训营 」伴学笔记创作活动的第10天
1.分布式概述
1.1分布式定义
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
1.2分布式优势
- 去中心化(将程序运行在一个集群里面,整体的存储和计算能力会有提高)
- 低成本
- 弹性(用户的访问会有波动,白天提供在线服务,夜间提供离线计算;促销活动中服务进行扩容,活动结束后服务进行缩容)
- 资源共享
- 可靠性高
1.3分布式挑战
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
1.4常见的分布式系统
- 分布式存储
- Google File System(GFS):google分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
- 分布式数据库
- Google Spanner:google可扩展的、全球分布式的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosql数据库
- MongoDB:文档数据库
- 分布式计算
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础之上,使用内存来存储数据
- YARN:分布式资源调度
2.系统模型
2.1故障模型
按照处理故障的难易程度可分为6类
- Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障,通常是由于网络问题和安全性事故引起的
- Authentication detectable byzantine failure (ADB)(Byzantine failure的特例)节点可以篡改数据,但不能伪造其他节点的数据,例如内存错误,磁盘错误等
- Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:在Omission failure的基础上,节点停止响应,持续性的故障
- Fail-stop failure:在Crash failur的基础上,错误可检测,是最容易处理的故障
| 故障模型表 | ||
|---|---|---|
| 故障 | 描述 | 可能的故障类型 |
| 磁盘故障 | 例如:磁头不寻道,盘片不转,磁介质损伤等,年发生率1-2% | Fail-stop |
| 磁盘坏道、坏块 | 磁头划伤引起坏道,或宇宙射线影响晶体管产生位反转 | Fail-stop、ADB |
| 服务器主板、板卡故障 | 可能是风扇故障或灰尘引起的短路或SCSI/RAID卡造成的死机器 | Crash |
| 网络故障 | 电源、背板故障、网卡位反转、网络流量大造成大量丢包 | Byzantine、Omission |
| 网络分区 | 网络引起的节点形成不同的子集,子集中网络相通,子集间网络不通 | Performance |
| 内存故障 | 内存出错造成的数据被篡改,分为UE、CE | ADB |
| 线缆故障 | 服务器光模块频繁up或down | Performance、Omission |
| 内核崩溃 | 内核内部的致命错误,产生的kernel panic | Crash |
| CPU故障 | 年故障率接近1% | Omission、Crash |
| 电源故障 | 服务器失去电源支撑 | Omission |
| 软件故障 | 例如进程crash、内存踩坏、状态不一致、配置错误、软件bug等 | Byzantine |