分布式理论篇 | 青训营笔记

108 阅读6分钟

这是我参与「第五届青训营」笔记创作活动的第 8 天。笔记旨在记录自己的学习过程以及跟更多人分享交流,重点讲干货,不扣细节,从整体认知。废话不多说,上内容!!!

本堂课重点内容

  1. 概述
  2. 系统模型
  3. 理论基础
  4. 分布式事务
  5. 共识协议
  6. 分布式实践

详细知识点介绍

概述

  • 什么是分布式?

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

优势:

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

挑战:

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

  • Why-How-What

使用者视角:

Why:

1.数据爆炸,对存储和计算有大规模运用的述求 2.成本低,构建在廉价服务器之上

How:

1.分布式框架 2.成熟的分布式系统

What:

1.理清规模,负载,一致性要求等 2.明确稳定性要求,制定技术方案

学习者视角:

Why:

1.后端开发必备技能 2.帮助理解后台服务器之间协作的机理

How :

1.掌握分布式理论 2.了解一致性协议

What:

1.把要点深入展开,针对难点搜索互联网资料进行学习 2.将所学知识运用于实践

  • 常见的分布式系统

分布式存储 :

1.Google File System (GFS) : google分布式文件系统 2.Ceph:统一的分布式存储系统 3.Hadoop HDFS:基于GFS架构的开源分布式文件系统 4.Zookeeper:高可用的分布式数据管理与系统协调框架

分布式数据库 :

1.Google Spanner: google可扩展的、全球分布式的数据库 2.TiDB:开源分布式关系型数据库 3.HBase:开源Nosql数据库 4.MongoDB:文档数据库

分布式计算 :

1.Hadoop:基于MapReduce分布式计算框架 2.Spark:在Hadoop基础之上,使用内存来存储数据 3.YARN:分布式资源调度

系统模型

  • 故障模型

1.png

2.png

  • 拜占庭将军问题

引入:两将军问题(Two Generals' Problem):两支军队的将军只能派信使穿越敌方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。 –来自ikipec

结论是,两将军问题是被证实无解的电脑通信问题,两支军队理论上永远无法达成共识。 方案一:同时发送N个信使,任何一个达到对方军队,都算成功。 方案二:设置超时时间,发送后未在一定时间返回,则加派信使。

  • 共识和一致性

3.png

  • 时间和事件顺序

理论基础

  • CAP理论

4.png

  • ACID理论

事务是数据库系统中非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全都不执行。

数据库事务拥有四个特性ACID,即分别是原子性(Atomicity)、一致性(Consistency)、隔离性(lsolation)和持久性(Durability)

原子性(A)。原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。

一致性(C)。一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态

隔离性((l)。隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离

持久性(D)。持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

  • BASE理论

Base理论是对CAP中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。其核心思想是:

Basicaly Available(基本可用):假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言∶响应时间上的损失,或功能上的损失

Soft state(软状态)∶允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。

Eventually consistent(最终一致性)︰系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。

分布式事务

  • 两阶段提交

二阶段提交(Two-phase Commit):为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的—种演算法。

  • 三阶段提交

将两阶段提交中的Prepare阶段,拆成两部分:CanCommit和PreCommit机制

  • MVCC

MVCC是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。MVCC为每个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题,

共识协议

  • Quorum NWR 模型

Quorum NWR 三要素

N:在分布式存储系统中,有多少份备份数据

W:代表一次成功的更新操作要求至少有w份数据写入成功

R:代表一次成功的读数据操作要求至少有R份数据成功读取

  • RAFT协议

Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,RAFT也使用了Quorum机制。

  • Paxos协议

Paxos算法与RAFT算法区别:

1.Multi-Paxos可以并发修改日志,而Raft写日志操作必须是连续的

2.Multi-PaxoS可以随机选主,不必最新最全的节点当选Leader

Paxos优势:写入并发性能高,所有节点都能写入

Paxos劣势:没有一个节点有完整的最新的数据,恢复流程复杂,需要同步历史记录

实践练习例子

分布式实践

MapReduce

5.png

分布式KV

6.png

课后个人总结

  1. 对于分布式的内容我还是比较熟悉的,因为我之前自己学习过一些大数据的框架,由于海量数据,那么就需要分布式的方式去解决一些问题;

  2. 通过这次学习,使我对分布式的了解更加全面

引用参考

  1. 字节录播课
  2. 分布式理论-现代架构基石
  3. 后端专场 学习资料三 第五届字节跳动青训营