分布式理论 | 青训营笔记

92 阅读4分钟

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

📜📜📜今天学习的是分布式理论

一、简单介绍

1.什么是分布式?

image.png

优势:去中心化;低成本;弹性;资源共享;可靠性强。

挑战:普遍的结点故障;不可靠的网络;异构的机器与硬件环境;安全。

为什么要用分布式系统?

image.png

怎么使用分布式系统?

image.png

如何使用?

image.png

2.学习者:

image.png

image.png

二、具体了解

常见的分布式系统:

分布式存储:

image.png

分布式数据库:

image.png

分布式计算:

image.png

image.png

分布式故障模型(正确性,时间,状态,原因):

Byzantine failure:节点可以任意篡改发送给其他节点的数据

ADB:可篡改,不可伪造

Performance failure:节点收到数据,时间太早或太晚

Omission failure:节点收到数据时间无限晚,收不到数据

Crash failure:在上面一种情况,增加了节点停止响应的假设

Fail-stop failure:在上面一种情况,增加了错误可检测的假设

image.png

三、模型

image.png

三次握手:【第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN©。此时客户端处于 SYN_SEND 状态。

首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。

第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。

第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。

确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。

发送第一个SYN的一端将执行主动打开(active open),接收这个SYN并发回下一个SYN的另一端执行被动打开(passive open)。】

拜占庭将军问题,我没有听懂,有兴趣的可以自己找找

理论基础

三大分布式理论:

CAP理论 | ACID理论 | BASE理论

什么是架构

架构,又称软件架构:是有关软件整体结构与组件的抽象描述、用于指导软件系统各个方面的设计。

单机架构

简单来说就是,所有的东西都在一个进程里,部署在一个机器上。

优点:简单

缺点:运维需要停服 | 承载能力有限。

单体架构

在单机架构的基础上,将进程部署到多个机器上。

优点:具备水平扩容能力 | 运维不需要停服

缺点:后端进程职责太多,越来越臃肿 | 爆炸半径较大,进程中一个很小的模块出现问题,都可能导致整个进程崩溃

垂直应用架构

在单机架构基础上,将进程按照某种依据切分开。比如,A 软件和 B 软件的后端原先采用单机架构部署,那就是一个进程部署在多个机器上;如果用垂直应用架构,可以将 A 和 B 的后端拆分为 A、B 两个进程,然后再按照单体模式的思路,部署在多个机器上。

优点:一定程度上减少了后端进程职责 | 一定程度上缩小爆炸半径

缺点:没有根本解决单体架构的问题

SOA (面向服务架构)

SOA 架构中,服务为一等公民,将进程按照不同的功能单元进行抽象,拆分为『服务』。有了服务之后,SOA 还为服务之间的通信定义了标准,保证各个服务之间通讯体验的一致性。

优点:各服务的职责更清晰 | 运维粒度减小到服务,爆炸半径可控

缺点:ESB (企业服务总线) 往往需要一整套解决方案

微服务

在 SOA 架构中,ESB 起到了至关重要的作用。但从架构拓扑来看,它更像是一个集中式的模块。有一个 SOA 分布式演进的分支,最终的形态便是微服务。

优点: 兼具 SOA 解决的问题 | 服务间的通信更敏捷、灵活

缺点:运维成本