[分布式理论|青训营笔记] 这是我参加「第五届青训营伴学笔记的第四天
前言
记录青训营后端专场学习过程,有不足的地方还请大佬指正。 由于本人基础较为薄弱,所以笔记尽可能详细。
分布式概述
一、解决分布式系统的why-how-what问题
使用者视角:
why:
- 数据爆炸,对存储和计算有大规模运用的诉求
- 成本低,构建在廉价的服务器上
how:
- 分布式框架
- 成熟的分布式系统
what:
- 理清规模、负载、一致性的要求
- 明确稳定性要求,制定技术方案
学习者角度
why:
- 后端开发必备技能
- 帮助后台服务器之间协作的机理
how:
- 掌握分布式理论
- 了解一致性协议
what:
- 将要点深入展开,针对难点搜索互联网资料进行学习
- 将所学知识运用于实践
二、常见的分布式系统
系统模型
故障模型
各种故障类型的层级关系如下图:
- Byzantine failure:节点可以任意篡改发送给其他节点的数据
- Authentication-detectable Byzantine failure:是Byzantine failure的一个特例;节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段收到数据,即时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也持续性的omission failure
- Fail-stop failure:在Crash failure的基础上,增加了错误可检测的假设
理论基础
CAP理论
C(Consistence):一致性,指数据在多个副本之间能够保持一致的特性(严格一致性) A(Avaliability):可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应——但是不保证获取的数据是最新的数据 P(Network parttioning):分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障