Go语言-分布式理论1 | 青训营笔记

61 阅读2分钟

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

一、分布式概述

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

优势:

  1. 去中心化
  2. 低成本
  3. 弹性
  4. 资源共享
  5. 可靠性高

缺点:

  1. 普遍的节点故障
  2. 不可靠的网络
  3. 异构的机器与硬件环境
  4. 安全

二、系统模型

1.故障模型

  • Byzantine failure:节点可以任意篡改发送给其他节点的数据
  • Authentication detectable byzantine failure (ADB):Byzantine failure的特例,节点可以篡改数据,但不能伪造其他节点的数据
  • Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
  • Omission failure:节点收到数据的时间无限晚,即收不到数据
  • Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
  • Fail-stop failure:在crash failure的基础上增加了错误检测的假设

2.拜占庭将军问题

结论是,两将军问题是被证实无解的电脑通信问题,两支军队理论上永远无法达成共识。

方案一:同时发送N个信使,任何一个达到对方军队,都算成功。 方案二:设置超时时间,发送后未在一定时间返回,则加派信使。

共识与消息传递不同:即使保证了消息传递成功,也不能保证达成共识。

3.时间和事件顺序

"happened before" 关系

三、理论基础

1.CAP理论

  • C (consistence)一致性:指数据在多个副本之间能够保持一致的特性(严格)。
  • A (availability)可用性:指系统提供的服务必须一直处于可用状态,每次请求都能获得非错的响应——但是不保证获取的数据为最新数据。
  • P (network partitioning)分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然能够对外满足一致性和可用性的服务,除非整个网络环境都发生了故障。

CAP理论往往用于数据库领域,同样适用于分布式存储。

  • CA:放弃分区容错性,加强一致性和可用性,传统单机数据库的选择
  • AP:放弃一致性,追求分区容错性和可用性,例如注重用户体验的系统
  • CP:放弃可用性,追求一致性和分区容错性,例如与钱财安全相关的系统