分布式实践 | 青训营笔记

52 阅读2分钟

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

分布式概述

为什么要使用分布式?

优势: 去中心化、低成本、弹性(根据波峰波谷,进行扩容、缩容)、资源共享、可靠性高(冗余)

挑战:故障、网络、环境、安全

为什么要使用?

数据爆炸,大规模的存储和计算 成本低,搭建在廉价服务器上

为什么要学习使用?

后端开发必备 & 理解后台服务器之间协作原理

系统模型

故障模型

  • 六种故障模型

image.png

拜占庭将军问题

两将军问题,两方理论上永远无法达成共识。

TCP三次握手是拜占庭问题的工程解,允许存在误差。

分布式并没有解决拜占庭将军问题,在介绍分布式时认为TCP能够近似解决拜占庭问题。

三将军问题,需要四将军通过中枢达成一致

共识和一致性

最终一致性 - 读写请求并发可能读到旧值

线性一致性 - 强一致性

理论基础

CAP理论

一致性、可用性、分区容错性

一个系统无法同时完全满足,但也不是完全不满足

在网络发生分区的情况下,无论在可用性和一致性做出的哪种选择,都是不愿意看到的。因此,把故障节点的负载转给备用节点,是近似的解决办法。

事务ACID理论

原子性、一致性、隔离性 Isolation 、持久性 Durability

BASE理论

BASE理论是对AP的扩展,基于AP系统而言,对分布式的实践做出总结,Basically Available 基本可用,Soft state 软状态,Eventually consistent 最终一致

分布式事务

二段式提交

通过 Prepare 和 Commit 实现所有节点在进行事务提交时的一致性

三段式提交

MVCC

innodb中使用 MVCC 用在RC和RR的隔离级别

补充:常见的分布式事务还有 TCC、Saga、MQ等,在实际开发中,需要尽量避免使用分布式事务,而非主动使用分布式事务,使业务变得复杂。

公式协议

Quorum NWR模型

Quorum NWR的概念是,使 W 写数据的数量和 R 读数据的数量一定大于总备份的数量 N,使得每次读取到数据其中一份,一定为最新的数据。该模型是将 CAP 交给用户进行选择,但是使用该模型需要避免数据覆盖,数据覆盖会出现一致性问题。

RAFT协议

Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性

Paxos协议