这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天。
内容受本人水平限制,若有错误还望各位看官不吝赐教。
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等
优势
- 去中心化(防单点故障)
- 成本低(可构建在廉价服务器上)
- 弹性
- 共享资源
劣势(挑战)
- 处理节点故障
- 不可靠的网络传输
- 异构的硬件环境
- 安全性
分布式系统模型
故障模型
常见的故障包括Byzantine failure,Omission failure等。
拜占庭将军问题
为了解决这类问题/基于此模型的启发——为我们理解和分类现有的众多分布式一致性协议和算法提供了框架. 现有的分布式一致性协议和算法主要可分为两类:
- 故障容错算法(Crash Fault Tolerance, CFT), 即非拜占庭容错算法,假设不存在共识问题。
- 拜占庭容错算法, 可以解决分布式系统中既存在故障, 又存在恶意攻击场景下的共识问题。(在区块链技术中使用)
共识和一致性
多进程读写一个数据如何保证一致?如果通过同步/协商等方法会使得系统的可用性降低。
时间和事件顺序
happen before 关系
译《Time, Clocks, and the Ordering of Events in a Distributed System》 - 杭州.Mark - 博客园 (cnblogs.com)
系统关于一致性和可用性的理论
ACID理论
事务它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全都不执行。
数据库事务拥有四个特性ACID,即分别是:
- 原子性 (Atomicity)(单个事务要么全部执行完,要么不执行)
- 一致性(Consistency) (事务执行前后数据库必须处于和之前一样有效的状态,如出错需要回滚)
- 隔离性 (Isolation) (并发操作数据时只能获得事务级别操作后的数据)
- 持久性(Durability)(事务成功后应该永久保存系统状态)
BASE理论
BASE理论是由eBay工程师提出,是对可用性和一致性的权衡。
- Basically Available(基本可用)(通过处理过载来保障基本可用)
- Eventually consistent(最终一致性)
- Soft state(软状态)(相对于满足ACID的硬状态,软状态下的数据不一定是确定的)