分布式入门 | 青训营笔记

71 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天。

内容受本人水平限制,若有错误还望各位看官不吝赐教。


什么是分布式

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等

优势

  1. 去中心化(防单点故障)
  2. 成本低(可构建在廉价服务器上)
  3. 弹性
  4. 共享资源

劣势(挑战)

  1. 处理节点故障
  2. 不可靠的网络传输
  3. 异构的硬件环境
  4. 安全性

分布式系统模型

故障模型

常见的故障包括Byzantine failure,Omission failure等。

《分布式系统:概念与设计》一2.4.2 故障模型-阿里云开发者社区 (aliyun.com)

拜占庭将军问题

为了解决这类问题/基于此模型的启发——为我们理解和分类现有的众多分布式一致性协议和算法提供了框架. 现有的分布式一致性协议和算法主要可分为两类:

  1. 故障容错算法(Crash Fault Tolerance, CFT), 即非拜占庭容错算法,假设不存在共识问题。
  2. 拜占庭容错算法, 可以解决分布式系统中既存在故障, 又存在恶意攻击场景下的共识问题。(在区块链技术中使用)

拜占庭将军问题 (The Byzantine Generals Problem) - Liebing's Blog

共识和一致性

多进程读写一个数据如何保证一致?如果通过同步/协商等方法会使得系统的可用性降低。

时间和事件顺序

happen before 关系

译《Time, Clocks, and the Ordering of Events in a Distributed System》 - 杭州.Mark - 博客园 (cnblogs.com)

系统关于一致性和可用性的理论

ACID理论

事务它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全都不执行。


数据库事务拥有四个特性ACID,即分别是:

  1. 原子性 (Atomicity)(单个事务要么全部执行完,要么不执行)
  2. 一致性(Consistency) (事务执行前后数据库必须处于和之前一样有效的状态,如出错需要回滚)
  3. 隔离性 (Isolation) (并发操作数据时只能获得事务级别操作后的数据)
  4. 持久性(Durability)(事务成功后应该永久保存系统状态)

BASE理论

BASE理论是由eBay工程师提出,是对可用性和一致性的权衡。

  1. Basically Available(基本可用)(通过处理过载来保障基本可用)
  2. Eventually consistent(最终一致性)
  3. Soft state(软状态)(相对于满足ACID的硬状态,软状态下的数据不一定是确定的)