《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

时间:2022-06-29 01:14:21


文章目录

  • 开篇:分布式系统关注的点
  • 一、基本概念
  • 1.异常
  • 2.“超时”
  • (1)分布式存储的三态:成功、失败、超时(未知状态)
  • 3.一致性
  • 4.衡量分布式存储系统的指标
  • (1)性能:系统的吞吐能力和系统的响应延迟
  • (2)可用性:系统异常时,可提供正常服务的能力
  • (3)一致性:越是强一致性的模型,用户用起来越简单
  • (4)可扩展性:
  • 二、性能分析:系统设计之初估算存储系统的性能
  • 三、数据分布
  • (1)基本概念
  • (2)哈希分布:只支持随机读取操作,不支持顺序扫描
  • (a)哈希取模与数据特征
  • (b)如何通过哈希方式找到处理的数据属于哪台机器?
  • (c)哈希方式带来多的困难以及处理大用户问题的两种方式
  • (d)如何解决服务器上线或者下线,数据重分布带来的大量数据迁移问题?
  • (i)思路1:将哈希值与服务器的对应关系作为元数据,交给元数据服务器去管理
  • (ii)思路2:一致性哈希算法
  • (3)顺序分布:在分布式表格中很常见
  • (4)负载均衡
  • (1)总控节点与心跳包Heartbeat
  • (2)分布式存储系统的主副本与备副本
  • (3)数据迁移的具体eg
  • 四、复制
  • 1.复制的含义
  • (1)基本概念
  • (2)强同步协议:只要至少一个备副本返回成功(操作:备副本回放日志)就可以回复客户端操作成功
  • (3)异步复制:主副本返回成功,就可以回复客户端操作成功
  • (4)强同步复制和异步复制都是基于主副本的复制协议,且都通过操作日志来实现主副本之间的复制
  • 2.一致性和可用性是矛盾的
  • (1)一致性、可用性,分区可容忍性
  • (2)一致性和可用性总是矛盾的
  • (3)Oracle数据库的DataGuard复制组件包含三种模式:最大保护模式、最大性能模式、最大可用性模式
  • 五、容错:是分布式存储系统设计的首要目标
  • 1.基本概念
  • 2.常见故障
  • 3.故障检测
  • (1)心跳包
  • (2)租约Lease
  • 4.故障恢复
  • (1)单层结构
  • (2)双层结构
  • (3)总控节点
  • (4)停服务时间由故障检测时间和故障恢复时间构成
  • 六、可扩展性
  • 1.基础知识
  • 2.总控节点
  • (1)分布式文件系统与分布式存储系统的区别
  • (2)分布式文件系统如何不让总控节点称为瓶颈?
  • 3.数据库扩容
  • (1)数据库可扩展的手段
  • (2)数据库垂直和水平拆分的具体过程
  • 4.异构系统
  • (1)同构系统
  • (2)异构系统的具体eg
  • 七、分布式协议
  • 1.两阶段提交协议2PC:实现分布式事务(大部分分布式存储系统不支持)
  • 2.Paxos协议:解决多个节点之间的一致性问题
  • 3.Paxos与2PC协议在分布式系统中的异同点
  • 八、跨机房部署主要解决2个问题:数据同步和服务切换
  • 1.集群整体切换
  • 2.单个集群跨机房
  • 3.Paxos选主副本

开篇:分布式系统关注的点

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

一、基本概念

1.异常

(1)节点和大规模分布式存储系统的核心问题

  • 在分布式存储系统中,将一台服务器或服务器上运行的一个进程称之为一个节点,节点和节点之间通过网络互联;
  • 大规模分布式存储系统的一个核心问题是:自动容错,因为服务器节点是不可靠的,网络也是不可靠的。

(2)异常类型

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

2.“超时”

(1)分布式存储的三态:成功、失败、超时(未知状态)

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


具体eg如下:

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

3.一致性

(1)副本是分布式存储系统容错技术的唯一手段

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


(2)如何理解一致性?

两个角度:

  • 用户角度:即客户端,客户端读写操作是否符合某种特性;
  • 存储系统:即存储系统的多个副本之间是否一致,更新的顺序是否相同;

(i)定义的场景如下:

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


(ii)从客户端的角度来看,一致性包含的情况:

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(iii)从存储系统的角度看

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


(iiii)总结如下

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

4.衡量分布式存储系统的指标

(1)性能:系统的吞吐能力和系统的响应延迟

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(2)可用性:系统异常时,可提供正常服务的能力

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)一致性:越是强一致性的模型,用户用起来越简单

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(4)可扩展性:

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

二、性能分析:系统设计之初估算存储系统的性能

(1)性能分析的重要性

  • 性能分析用来判断涉及方案是否存在瓶颈点,权衡多种设计方案
  • 也可作为后续性能优化的依据
  • 系统中的资源(CPU、内存、磁盘、网络)是有限的,性能分析就是找出可能出现的资源瓶颈

(2)具体eg

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

三、数据分布

(1)基本概念

  • 数据分布主要分为两种: 一种哈希分布(eg:google的Dynamo系统),一种是顺序分布(即每张表格上的数据按照主键整体有序,eg:Google的Bigtable系统)
  • 分布式存储系统需要能够自动识别负载高的节点,当某台机器的负载较高时,将他服务的部分数据迁移到其他机器,实现自动负载均衡

(2)哈希分布:只支持随机读取操作,不支持顺序扫描

(a)哈希取模与数据特征

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(b)如何通过哈希方式找到处理的数据属于哪台机器?

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(c)哈希方式带来多的困难以及处理大用户问题的两种方式

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(d)如何解决服务器上线或者下线,数据重分布带来的大量数据迁移问题?

(i)思路1:将哈希值与服务器的对应关系作为元数据,交给元数据服务器去管理

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(ii)思路2:一致性哈希算法

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)顺序分布:在分布式表格中很常见

  • 将大表顺序划分为连续的范围,每个范围称为一个子表,总控服务器负责将这些子表按照一定的策略分配到存储节点上,总控服务器负责将这些子表按照一定的策略分配到存储节点上。
  • 顺序分布类似于B+树,解释如下
  • 顺序分布解释如下

(4)负载均衡

(1)总控节点与心跳包Heartbeat

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(2)分布式存储系统的主副本与备副本

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)数据迁移的具体eg

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

四、复制

1.复制的含义

(1)基本概念

  • 分布式系统中数据保存在多个副本,其中一个副本是主副本,其他副本是备副本,通常做法是:数据写入到主副本,由主副本确定操作的顺序并复制到其他副本
  • 分布式存储系统中,某个存储节点出现故障时,分布式存储系统能自动地将服务切换到其他的副本,实现自动容错
  • 分布式存储系统通过复制协议将数据同步到多个存储节点,并确保多个副本之间的数据一致性
  • 复制协议主要分为:强同步复制和异步复制,二者的区别在于:用户的写请求是否需要同步到备副本才可以返回成功

(2)强同步协议:只要至少一个备副本返回成功(操作:备副本回放日志)就可以回复客户端操作成功

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)异步复制:主副本返回成功,就可以回复客户端操作成功

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(4)强同步复制和异步复制都是基于主副本的复制协议,且都通过操作日志来实现主副本之间的复制

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

2.一致性和可用性是矛盾的

(1)一致性、可用性,分区可容忍性

  • 一致性consistency
  • 可用性availability
  • 分区可容忍性tolerance of network partition
  • 在工程中,具体理解如下:
  • 《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


(2)一致性和可用性总是矛盾的

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)Oracle数据库的DataGuard复制组件包含三种模式:最大保护模式、最大性能模式、最大可用性模式

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

五、容错:是分布式存储系统设计的首要目标

1.基本概念

  • 首先,分布式存储系统需要能检测到机器故障,故障检测往往通过租约Lease协议实现
  • 其次,能够将服务复制或者迁移到集群中的其他正常服务的存储节点

2.常见故障

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

3.故障检测

(1)心跳包

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(2)租约Lease

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

4.故障恢复

(1)单层结构

(a)大部分系统为单层结构,在系统中对每个数据分片维护多个副本

(b)

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(2)双层结构

(a)只有类Bigtable系统为双层结构,将存储和服务分为两层, 存储层对每个数据分片维护多个副本,服务层只有一个副本提供服务

(b)

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)总控节点

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(4)停服务时间由故障检测时间和故障恢复时间构成

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

六、可扩展性

1.基础知识

  • 可扩展性的实现手段很多,如通过增加副本个数或者缓存提高读写能力,将数据分片使得每个分片可被分配到不同的工作节点以实现分布式处理,把数据分配到各个数据中心等等
  • 主流的分布式存储系统大多带有总控节点,且支持成千上万台的集群规模破
  • 可扩展性不能简单地通过系统是否为P2P架构或者能够将数据分布到多个节点来衡量,而应该综合考虑节点故障后的恢复时间,扩容的自动化程度,扩容的灵活性等等

2.总控节点

(1)分布式文件系统与分布式存储系统的区别

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(2)分布式文件系统如何不让总控节点称为瓶颈?

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

3.数据库扩容

(1)数据库可扩展的手段

  • 通过主从复制提高系统的读取能力
  • 通过垂直拆分和水平拆分将数据分布到多个存储节点
  • 当主节点出现故障时,可以将服务切换到从节点,当数据库整体服务能力不足时,可以根据业务特点重新拆分数据进行扩容

(2)数据库垂直和水平拆分的具体过程

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

4.异构系统

(1)同构系统

  • 定义:统一组内的节点服务相同的数据,这样的系统称之为同构系统
  • 存储节点分为若干组,每个组内的节点服务完全相同的数据,其中有一个节点为主节点,其它节点为备节点
  • eg如下:
  • 《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


  • 《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


(2)异构系统的具体eg

  • 异构系统将数据划分为很多大小接近的分片,每个分片的多个副本可以分布到集群中的任何一个存储节点
  • 《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


七、分布式协议

1.两阶段提交协议2PC:实现分布式事务(大部分分布式存储系统不支持)

(1)两阶段提交协议用于保证跨多个节点操作的原子性,即:跨多个节点的操作要么在所有节点上全部执行成功,要么全部失败。

(2)2PC的具体解释如下

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


具体eg如下:

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

2PC协议可能面临的故障如下

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

(3)总结
两阶段提交协议是阻塞协议,执行过程中需要锁住其他更新,且不能容错,大多数分布式存储系统都采用敬而远之的做法,放弃对分布式事务的支持

2.Paxos协议:解决多个节点之间的一致性问题

(1)主要用于确保多个节点对某个投票(例如哪个节点为主节点)达成一致。考虑到主节点可能出现故障,系统需要选举出新的主节点。

(2)Paxos协议执行步骤如下:

  • 如果主节点发生故障,备节点会提议自己成为主节点,可能会出现多个备节点提议(Proposer)自己成为主节点,Paxos协议保证,即使同时存在多个proposer,也能够保证所有节点最终达成一致,即选举出唯一的主节点。
  • Paxos协议执行步骤如下:
  • 《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


  • 《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

  • (3)Paxos协议需要考虑两个问题:正确性和可终止性
  • 正确性:只有一个提议者会生效
  • 可终止性:最后总会有一个提议者生效
  • so,随着协议不断运行,它会往某个提议者被多数派接受并生效这一最终目标靠拢。

3.Paxos与2PC协议在分布式系统中的异同点

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

八、跨机房部署主要解决2个问题:数据同步和服务切换

1.集群整体切换

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


集群整体切换的数据同步和服务切换的说明:

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

2.单个集群跨机房

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统

3.Paxos选主副本

《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统


《大规模分布式存储系统 原理解析与架构实践》第三章 分布式系统