这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
分布式概述
什么是分布式?
- 分布式系统定义:跨多个节点的计算机程序的集合
- 使用分布式系统的五大优势:去中心化、低成本、弹性、资源共享、可靠性高
- 分布式系统的挑战:故障、网络、环境、安全
Why-How-What
使用者:
Why:
- 数据爆炸,对存储和计算有大规模运用的诉求
- 成本低,可以构建在相对廉价的服务器上
How:
- 分布式框架
- 成熟的分布式系统
What:
- 清理规模,负载,一致性要求
- 明确稳定性要求,制定技术方案
学习者:
Why:
- 后端开发必备
- 理解后台服务器之间的协作机理
How:
- 掌握分布式理论
- 了解一致性协议
What:
- 把要点深入展开,针对难点进行学习。一般是业界当中使用分布式较多。
- 将知识应用于实践
常见分布式系统
- 分布式存储
- 分布式数据库
- 分布式计算
故障模型
-
Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障
-
Authentication detectable byzantine failure (ADB):节点可以篡改数据,但不能伪造其他节点的数据
-
Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
-
Omission failure:节点收到数据的时间无限晚,即收不到数据
-
Crash failure:节点停止响应,持续性的故障
-
Fail-stop failure:错误可检测,是最容易处理的故障
常见故障:
占拜庭将军问题
思考题
TCP为什么要三次握手?
为了实现可靠数据传输,TCP 协议的通信双方,都必须维护一个序列号, 以标识发送出去的数据包中,哪些是已经被对方收到的。三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤。
如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认。
挥手过程中,如果FIN 报文丢失,发生什么?
如果FIN 报文丢了,那么客户端迟迟收不到被动方的 ACK 的话,也就会触发超时重传机制,重传 FIN 报文,重发次数由 tcp_orphan_retries 参数控制。
当客户端重传 FIN 报文的次数超过 tcp_orphan_retries 后,就不再发送 FIN 报文,则会在等待一段时间(时间为上一次超时时间的 2 倍),如果还是没能收到第二次挥手,那么直接进入到 close 状态。
基础理论
CAP理论
- C (Consistence) 一致性。指数据在多个副本之间能够保持一致的特性(严格的一致性)
- A (Availability) 可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应一但是不 保证获取的数据为最新数据。
- P (Network partitioning) 分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性 的服务,除非整个网络环境都发生了故障。
CAP的原理说,一个数据分布式系统不可能同时满足C和A和P这3个条件。所以系统架构师在设计系统时,不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。由于网络的不可靠性质,大多数开源的分布式系统都会实现P,也就是分区容忍性,之后在C和A中做抉择。所以这个原理也叫三选二原理。
CAP理论往往运用于数据库领域,同样可以适用于分布式存储方向。
ACID理论
事务是数据库系统中非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全都不执行。 数据库事务拥有四个特性ACID,即分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Ilsolation)和持久性(Durability)。
- 原子性(A) :原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。
- 一致性(C) :一致性是指事务必须使数据库从-一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之 后都必须处于致性状态
- 隔离性(I) :隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
- 持久性(D) :持久性是指一个事务一旦被提交了 ,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
BASE理论
Base理论是对CAP中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。其核心思想是:
Basically Available(基本可用)假设系统出现了不可预知的故障,但还是能用,相比较正常的系统而言:响应时间上的损失,或功能上的损失
Soft state(软状态)∶允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
Eventually consistent(最终一致性)︰系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。