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

一、 概述

1.1 What?

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

1.2 优势与挑战

  • 优势:去中心化、低成本、弹性(根据流量分配在线和离线资源)、资源共享、可靠性高(多副本冗余)。
  • 挑战:普遍的节点故障不可靠的网络(三态:对、错、未决)、异构的机器与硬件环境、安全。

二、 系统模型

2.1 故障模型

六种故障模型,从处理的难易程度分类(由难到易)

  • Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障(处理:对消息进行冗余和加密,期望能检测出篡改)
  • Authentication detectable byzantine failure (ADB):节点可以篡改数据,但不能伪造其他节点的数据
  • Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚(一下好,一下不好,不确定是否故障)
  • Omission failure:节点收到数据的时间无限晚,即收不到数据(长时间未决,确定故障)
  • Crash failure:节点停止响应,持续性的故障(只知道状态,不知道原因)
  • Fail-stop failure:错误可检测,是最容易处理的故障(状态、原因)

2.2 拜占庭将军问题

拜占庭帝国军队的几个师驻扎在敌城外, 每个师都由各自的将军指挥. 将军们只能通过信使相互沟通. 在观察敌情之后, 他们必须制定一个共同的行动计划, 如进攻(Attack)或者撤退(Retreat), 且只有当半数以上的将军共同发起进攻时才能取得胜利. 然而, 其中一些将军可能是叛徒, 试图阻止忠诚的将军达成一致的行动计划. 更糟糕的是, 负责消息传递的信使也可能是叛徒, 他们可能篡改或伪造消息, 也可能使得消息丢失.
叛徒的目标就是让进攻失败

两种解决方案

  • 口信消息型解决方案(A solution with oral message);
  • 签名消息型解决方案(A solution with signed message).

推荐学习链接:拜占庭将军问题 (The Byzantine Generals Problem) - 知乎 (zhihu.com)

三、 理论基础

3.1 CAP理论

CAP的定义,分别代表一致性、可用性、分区容错性。三者无法同时达到

一致性(Consistence):指数据在多个副本之间能够保持一致的特性(严格一致性)。

可用性(Availability):指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应----但是不保证数据是最新的。

分区容错性(Network partitioning):分布式系统在遇到任何网络分区故障的时候,仍能对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

  • CAP诞生了三类系统:

    • CA系统:放弃分区容错,传统单机数据库。
    • AP系统:放弃强一致性,保证高可用,不少nosql存储系统采用,注重用户体验的系统。
    • CP系统:放弃可用性,保证数据一致性,注重安全的系统。

3.2 ACID理论

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

数据库事务拥有四个特性ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

3.3 BASE理论

BASE理论是针对AP系统而言的,其来源于对大型互联网分布式实践的总结

  • Basically Available(基本可用):假设系统,出现了不可预知的故障,但还是能用
  • Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性
  • Eventually consistent(最终一致性):数据最终一定能够达到一致的状态

参考链接

拜占庭将军问题 (The Byzantine Generals Problem) - 知乎 (zhihu.com)

【后端专场 学习资料三】第五届字节跳动青训营 - 掘金 (juejin.cn)

最后修改:2023 年 06 月 07 日
如果觉得我的文章对你有用,请随意赞赏