这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
什么是分布式
分布式是计算机程序的集合,利用多个独立计算节点的计算资源来实现共同的目标,比如分布式计算,分布式存储,分布式数据库等. 优势: 去中心化,低成本,弹性,资源共享,可能性高. 问题: 安全问题,异构问题,网络问题,节点故障
WHW
为什么要使用分布式?
- 数据爆炸,有存储,计算等大规模运用的诉求
- 成本低,可以构建在廉价服务器上.
对于学习者来说,是后端必备的开发技能,能够帮助理解后台服务器之间写作的原理
这么使用分布式
- 使用分布式框架
- 使用成熟的分布式系统
对学习者来说,可以掌握分布式理论,了解一致性的协议
常见的分布式存储
分布式存储
- ZooKeeper, 高可用的分布式数据和西他协调框架
- Google File System 骨骼分布式文件系统
分布式数据库
- MongoDb, 数据库文档
- GoogleSpanner: 谷歌可扩展的全球分布式数据库 分布式计算
- YARN 分布式资源调度
故障模型
- Byzantine failure 阶段可以篡改发送给其他节点的数据
- ADB 节点可以篡改数据,但不能伪造其他节点的数据
- PF 节点未在特定时间段内受到数据,太早或者太晚
- OF 节点收到数据的时间无限晚
- Crash Failure 在上面的基础上,添加了节点响应的假设
- Fail stop failure 在上面的基础上添加了错误可检测的假设
CAP理论
C 代表着一致性,数据在多个副本之间能够保持一致 A 代表可用性,系统提供的服务一直处于可用状态,每次都能得到非错的响应,但不保证是最新的. P 代表分区容错性,分布式系统遇到网络分区故障的时候,仍然提供对外一致满足一致性和可用性的服务
ACID理论
A,原子性指的是事务的操作要么全部成功,要么全部失败回滚. C,表示一个事务执行前和执行后都必须处于一致性状态 I,隔离性,是多个用户并发访问数据库,数据库未每一个用户开启的事务都要互相隔离. D,持久性,事务提交了,对数据库中数据的改变是永久性的,遇到故障的情况下也不会丢失提交事务的操作