分布式理论 - 现代架构基石 | 青训营笔记

55 阅读2分钟

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

分布式概述

特点:

  • 去中心化:多台服务器,而不是一台服务器
  • 低成本
  • 弹性
  • 资源共享
  • 可靠性高

挑战:

  • 普遍的节点故障
  • 不可靠的网络

系统模型

Performance failure:短时间处理不了,还不如"挂掉" (切换别的节点处理)(可理解为时而有故障,时而没有) 拜占庭故障:大多数分布式系统不处理这个故障,因为不好处理。后续检验一下是否结果正确

拜占庭将军问题

无解的通信问题,理论上永远无法达成共识

问题:

  • 为什么三次握手,不是 2 次或 4 次?
  • 挥手过程中 FIN 报文丢失怎么办?

三将军问题

出现了叛徒将军 解法:增加新将军(只传递,不投票) 现有大部分分布式系统都是非拜占庭容错的,bitcoin 是拜占庭容错的

理论基础

一致性

线性一致性:强一致 最终一致性

CAP

ACID

数据库系统中事务的四特性 ACID 事务:要么全部执行,要么全不执行 与 CAP 中的一致性概念不同

数据库 ACID 的一致性,我们又称之为内部一致性,可以理解为事务开始前和结束后,数据库的完整性约束没有被破坏。比如 A 向 B 转账,不可能 A 扣了钱,B 却没收到。 分布式 CAP 的一致性,我们也称之为外部一致性,可以理解为 在分布式系统中,写操作后再读,就必须返回写入的值。比如分布式数据库 A、B、C,A 中写入数据 hello,写完马上读 B 和 C,就一定要读出 hello,读出来我们就称之为符合一致性 两者区别,内部一致性注重于事务前后数据的完整性,而外部一致性则注重于读写数据的一致性

BASE

分布式事务

共识协议

分布式实践

Raft Learner 模式进行数据修复