分布式存储
- 分布式存储系统的特性有哪些?
答:可扩展、低成本、高性能
- 分布式存储系统的数据模型有哪些?
答:文件模型、键值模型、表格模型
- 分布式存储系统设计的技术性挑战包括那些。
答:数据分布、一致性、容错、负载均衡、并发控制、易用性、压缩/解压缩
- 分布式存储系统中跨机房部署的方案有哪些?
答:集群整体切换、单个集群跨机房、Paxos选主副本
- 事务的ACID特性指的是什么。
答:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)
- 分布式存储系统中请求结果中存在“三态”的概念,三态指什么?
答:成功、失败、超时
- 分布式存储系统的衡量指标包括哪些。
答:性能、可用性、可扩展性、一致性
- TFS 的NameServer具有的功能有哪些?
答:DataServer管理、映射关系维护、Block管理
- GFS系统的节点有哪些?
答:主控服务器、数据块服务器、客户端
- Dynamo分布式键值系统的容错机制
答:数据回传、Merkle树同步、读取修复
- 分布式存储系统的一致性有哪些?
答:强一致性、弱一致性、最终一致性
- Megastore系统的组成部分包括哪些?
答:客户端库、协调者、复制服务器
- 完整的一轮Paxos协议包含什么?
答:准备、批准、确认
- 分布式存储面临的数据需求大致可以分为非结构化数据、结构化数据和半结构化数据。
- GFS的主控服务器上保存了哪些元数据信息?
答:命名空间、文件到chunk之间的映射、chunk副本的位置信息
- GFS通过什么将chunk写操作授权给ChunkServer?
答:租约机制(lease)
- Dynamo键值系统的性能特点有哪些?
答:无中心节点、最终一致性、可扩展
- 分布式存储系统运行过程中可能出现的异常类型有哪些?
答:服务器宕机、网络异常和磁盘故障。
- 从存储系统的角度看,一致性主要包含什么?
答:副本一致性和更新顺序一致性
- 机房之间的数据同步方式可能为什么?
答:强同步或者异步
- Google的Bigtable采用的数据分布方式是什么?
答:顺序分布
- 什么是分布式存储系统容错技术的主要手段?
答:冗余存储
- 分布式存储系统的故障检测机制是什么?
答:租约机制
- 两阶段提交协议(Two-phase Commit, 2PC)的作用?
答:用来实现分布式事务
- Paxos协议的作用是什么?
答:用于确保多个节点对某个投票达成一致
- Dynamo中用一个[nodes,counter]对表示什么?
答:向量时钟
- 非持久化的Tair可以看成是一个分布式缓存,持久化的Tair将数据存放于磁盘中。
- 在两阶段协议中,系统一般包含的节点分为为协调者和事务参与者两类
- Dynamo设计支持可插拔的存储引擎。
- 分布式表格系统支持什么操作?
答:不仅支持简单的CRUD操作,还支持扫描
- GFS的经验表明单Master的设计是可行的,不仅简化了系统,且能够较好地实现一致性
- Google Spanner中TrueTime API实现的基础是什么
答:GPS和原子钟
- Google Megastore是介于哪两种数据库之间的存储技术。
答:介于传统的关系型数据库和NoSQL的存储技术
- TFS在设计时采用的思路是什么?
答:多个逻辑图片文件共享一个物理文件
- Bigtable访问控制的基本单元是什么?
答:子表
- 分布式文件系统存储数据的类型包括哪些?
答:Blob对象、定长块和大文件
- Spanner通过什么实现跨数据中心的多个副本之间的一致性?
答:Paxos协议
- 简述事务的ACID特性。
答:原子性(atomicity):指事务的不可分割性,一个事务的所有操作要么不间断地全部被执行,要么一个也没有执行。
一致性(consistency):一个或多个事务执行后,原来一致的数据和数据库仍然是一致的。
隔离性(isolation) :一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
持久性(durability):事务完成后,它对于数据库的影响是永久性的,即使系统出现各种异常也是如此。
- 简述分布式存储系统数据分布的主要方法。
答:分布式存储系统数据分布的主要方法有散列分布和顺序分布,散列分布采用某种算法将数据分散到各存储设备,顺序分布一般应用在表格和键值系统,按照主键顺序有序分布
- 简述Dynamo键值系统针对数据分布问题采用的方法及其基本思想。
答:采用的改进的一致性哈希算法
基本思想:每个物理节点根据性能的差异分配多个token,每个token对应一个“虚拟节点”;每个虚拟节点的处理能力基本相当,并随机分布在哈希空间中;数据按照哈希值落到某个虚拟节点负责的区域,然后被存储在该虚拟节点对应的物理节点中。
- 简述什么是分布式存储系统中的CAP定理?
答:CAP定理又称 CAP原则,指在分布式系统中,一致性 (Consistency) 、可用性 (Availability) 、分区容错性 (Partition Tolerance) 、三者不可兼得
- 论述在分布式系统中如何实现分布式事务的原子性,详细描述一种实现分布式事务原子性方法的步骤。
答:在分布式系统中,因为节点分布在不可靠的网络中,原子性问题更加复杂,不仅需要确保一个操作在一个节点上的原子性,还要确保一个操作在多个节点上的原子性,也就是说,操作要么在所有的节点上都生效,要么不在任何一个节点上生效,每个节点提交或中止事务的操作要保持一致。
可以使用两阶段提交、三阶段提交、Paxos提交算法、Saga事务等原子提交算法来保证分布式事务的原子性。
如:两阶段提交(Two-Phase Commit,2PC)由两个阶段组成,是最经典的原子提交协议。包含两个角色:协调者 (Coordinator) 和参与者 (Participants),协调者负责协调算法的各个阶段,而参与者则参与到事务中执行事务操作,也可以选择其中一个参与者来同时扮演协调者。
两阶段提交协议执行过程如下:
阶段1:请求阶段(Prepare Phase)。在请求阶段,协调者通知事务参与者准备提交或者取消事务,然后进入表决过程。在表决过程中,参与者将告知协调者自己的决策:同意(事务参与者本地执行成功)或者取消(事务参与者本地执行失败)
阶段2:提交阶段(Commit Phase)。在提交阶段,协调者将基于第一个阶段的投票结果进行决策:提交或者取消。当且仅当所有的参与者同意提交事务协调者才通知所有的参与者提交事务,否则协调者通知所有的参与者取消事务。参与者在接收到协调者发来的消息后执行相应的操作。
或者举Paxos的例子
- 请论述分布式存储系统架构的主要类型及其技术特点。
答:中间控制节点架构:部分节点NameNode存放管理数,另一部分节点DataNode存放业务数据,DataNode负责管理具体数据
完全无中心架构-计算模式:客户端通过一个设备映射关系计算出数据写入的位置,实现与存储节点的直接通信,避免中心节点的性能瓶颈
完全无中心架构-一致性哈希:通过一致性哈希将设备做成一个哈希环,然后根据数据名称计算出的哈希值映射到哈希环的某个位置,实现数据的定位
- 请论述一致性哈希算法的思想和优点,并简要论述该算法的主要作用。
答:算法思想如下:给系统中每个节点分配一个随机 token,这些 token 构成一个哈希环。执行数据存放操作时,先计算 Key(主键)的哈希值,然后存放到顺时针方向第一个大于或者等于该哈希值的 token 所在的节点。
优点在于节点加入/删除时只会影响到在哈希环中相邻的节点,而对其他节点没影响。
该算法主要用于解决分布式存储系统中的数据分布和负载均衡问题
- 请论述Taotao文件系统TFS和Google文件系统GFS在架构设计上的异同。
答:TFS和GFS的相同处为都采用了主控节点设置,利用主控节点对整个系统进行管理;和GFS类似,TFS的负载均衡也需要考虑机架分布、磁盘利用率、数据服务器读写负载等因素;TFS内部不维护文件目录树,每个小文件使用一个64位的编号;TFS是一个读多写少的应用,其写流程更为简单有效
- 请论述分布式存储同构系统和异构系统的系统布置方式及其优缺点
答:同构系统:将存储系统分为若干组,每组内的节点服务完全相同的数据,其中一个节点为主节点,其他节点为备节点同构系统增加副本需要迁移的数据量太大,拷贝需花费的时间过长,再次发生故障的概率也很高。
异构系统:将数据划分为很多大小接近的分片,每个分片的多个副本分布在集群中的任意一个存储节点由于应用了数据分片,异构系统故障恢复的时间很短,且集群规模越大,优势越明显。
- 请论述Paxos协议的执行过程及其在分布式存储中发挥的主要作用。
答:准备:Proposer首先发送一个提议序号n给其他节点,如果提议的序号大于Acceptor已经回复的所有消息,则Acceptor将自己上次接受的提议回复Proposer
批准:如果Acceptor回复了上次接受的提议,Proposer选择序号最大的提议值发给Acceptor批准,否则Proposer生成一个新的提议值发给Acceptor批准
确认:如果超过一半的Acceptor接受,提议值生效
作用:Paxos协议确保在主节点出现问题时,能够顺利的选举出新的主节点。
- 请论述Google文件系统GFS的追加流程。
答:①客户端向Master请求每个副本所在的ChunkServer,其中主服务器持有修改租约;②Master返回客户端主副本所在的ChunkServer的位置信息,客户端缓存这些信息供以后使用;③客户端将要追加的记录发送到每一个副本,每一个ChunkServer 会在内部缓存这些数据;④当所有副本都确认收到数据,客户端会发起一个写请求控制命令给主副本;⑤主副本把写请求提交给所有的备副本,每一个备副本会根据主副本确定的顺序执行写操作;⑥备副本成功完成后应答主副本;主副本应答客户端,如果有副本发生错误,将出现主副本写成功但是某些备副本不成功的情况,客户端将重试。
- 请论述亚马逊Dynamo键值系统在系统设计上采用的关键分布式技术及解决的相关问题。
答:Dynamo采用一致性哈希算法解决数据分布问题
采用复制写协议解决数据复制问题
向量时钟解决数据冲突问题
数据回传机制对临时故障进行处理
采用Merkle哈希树对永久故障进行恢复
利用Gossip的成员资格和错误检测协议对成员资格及错误进行检测