微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 分布式存储系统技术解读

分布式存储系统技术解读

时间:09-17 来源: 点击:

些变得很小,数据分布不均匀。如果采用顺序分布,系统设计时需要考虑子表的分裂与合并。子表合并的目的是为了防止系统中出现过多太小的子表,减少系统中的元数据。

  3、负载均衡:工作节点通过心跳包(Heartbeat,定时发送)将节点负载相关的信息,如CPU,内存,磁盘,网络等资源使用率,读写次数及读写数据量等发送给主控节点。负载均衡操作需要控制节奏,负载均衡操作需要做到比较平滑,一般来说,从新机器加入,到集群负载达到比较均衡的状态需要较长一段时间,比如30分钟到一个小时。

  复制

  复制协议分为两种:强同步复制和异步复制,如图1。

  

  图1 主备复制协议示范

  强同步复制和异步复制都是将主副本的数据以某种形式发送到其他副本,这种复制协议称为基于主副本的复制协议( Primary-based protocol)。这种方法要求在任何时刻只能有一个副本为主副本,由它来确定写操作之间的顺序。如果主副本出现故障,需要选举一个备副本成为新的主副本,这步操作称为选举,经典的选举协议为Paxos协议。

  主备副本之间的复制一般通过操作日志来实现。操作日志的原理很简单:为了利用好磁盘的顺序读写特性,将客户端的写操作先顺序写入到磁盘中,然后应用到内存中,由于内存是随机读写设备,可以很容易通过各种数据结构,比如B+树将数据有效地组织起来。当服务器宕机重启时,只需要回放操作日志就可以恢复内存状态。为了提高系统的并发能力,系统会积攒一定的操作日志再批量写入到磁盘中,这种技术一般称为成组提交。

  如果每次服务器出现故障都需要回放所有的操作日志,效率是无法忍受的,检查点( CheckPoint)正是为了解决这个问题。系统定期将内存状态以检查点文件的形式dump到磁盘中,并记录检查点时刻对应的操作日志回放点。检查点文件成功创建后,回放点之前的日志可以被垃圾回收,以后如果服务器出现故障,只需要回放检查点之后的操作日志。(内存中只有"检查点"之后的数据)

  分布式存储系统要求能够自动容错,也就是说,CAP理论中的"分区可容忍性"总是需要满足的,因此,一致性和写操作的可用性不能同时满足。例如,Oracle教据库的DataGuard复制组件包含三种模式:

  最大保护模式( Maximum ProtecTIon):即强同步复制模式,写操作要求主库先将操作日志(数据库的redo/undo日志)同步到至少一个备库才可以返回客户端成功。

  最大性能模式( Maximum Performance):即异步复制模式,写操作只需要在主库上执行成功就可以返回客户端成功。

  最大可用性模式( Maximum Availability):上述两种模式的折衷。

  容错

  常见故障中,单机故障和磁盘故障发生概率最高。在分布式系统中,可以通过租约(Lease)机制进行故障检测。

  租约机制就是带有超时时间的一种授权。假设机器A需要检测机器B是否发生故障,机器A可以给机器B发放租约,机器B持有的租约在有效期内才允许提供服务,否则主动停止服务。需要注意的是,实现租约机制时需要考虑一个提前量。

  故障恢复中,总控节点一般需要等待一段时间,比如1个小时,如果之前下线的节点重新上线,可以认为是临时性故障,否则,认为是永久性故障。停服务时间包含两个部分,故障检测时间以及故障恢复时间。故障检测时间一般在几秒到十几秒,和集群规模密切相关,集群规模越大,故障检测对总控节点造成的压力就越大,故障检测时间就越长。

  

  图2 故障恢复

  可扩展性

  分布式存储系统大多都带有总控节点,基于这点,很多人会自然地认为总控节点存在瓶颈问题,认为去中心化的P2P架构更有优势。然而,事实却并非如此,主流的分布式存储系统大多带有总控节点,且能够支持成千上万台的集群规模。可扩展性应该综合考虑节点故障后的恢复时间,扩容的自动化程度,扩容的灵活性等。

  分布式存储系统中往往有一个总控节点用于维护数据分布信息,执行工作机管理,数据定位,故障检测和恢复,负载均衡等全局调度工作。通过引入总控节点,可以使得系统的设计更加简单,并且更加容易做到强一致性,对用户友好。那么,总控节点是否会成为性能瓶颈呢?如果总控节点成为瓶颈,例如需要支持超过一万台的集群规模,或者需要支持海量的小文件,那么,可以采用两级结构,如图3所示。

  

  图3 两级元数据结构

在数据库的扩容中,如果系统的读取能力不足,可以通过增加副本的方式解决,如果系统的写入能力不足,可以根据业务的特点重新拆分数据,常见的做法为双倍扩容,即将每个分片的数据拆分为两个分片,扩容的过程中需要迁移

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top