一种分布式存储系统的数据分布控制方法、系统及装置与流程

文档序号:15020020发布日期:2018-07-25 00:29阅读:262来源:国知局

本发明涉及分布式存储系统,更具体地,涉及一种分布式存储系统的数据分布控制方法及系统、装置。



背景技术:

当前的大规模分布式存储系统中,为了实现在某个容错域出现问题时数据仍然可以被访问到,采用数据多个副本跨容错域存储的方式,以抵御单个容错域故障导致的数据可用性问题。例如,Hadoop分布式文件系统(HDFS:Hadoop Distributed File System)中,将数据的多个副本分布到不同的机架进行存储。HDFS中一个机架构成一个容错域(也称为错误域),容错域代表出错的一个物理单元,通过将容错域放置在不同机架中,在某个机架的电源或者相应交换机出现故障时,仍然可以访问数据。

有些分布式存储系统会跨地域分布,在一个国家区域范围内,也会出现某个地域的供电或者网络基础设施出现故障,导致存储系统在地域内的数据不可访问,进而引起上层应用的故障。

相关技术进行分布式存储系统的数据分布控制时,先收集分布式存储系统的拓扑关系,生成整个分布式存储系统中存储节点间的拓扑关系,并自动划分好容错域。在创建数据时,指定数据要写入的副本数量,将数据的多个副本保存在多个容错域中即跨容错域分布。当有容错域出现故障导致数据的副本缺失时,可以通过数据复制过程恢复数据的副本数。

本申请的发明人发现,上述数据分布控制方法实际是认为容错域是等价的,容错域间网络带宽相同,单位价格一样,且容错域间网络传输的延迟是一样的。但是实际情况并非如此,例如在一个分层网络架构下的数据中心内部,同一机架下机器间的网络带宽可以达到网卡带宽,延迟在0.3ms以内,但是在经过汇聚交换机(PSW)后,机器间的网络带宽会缩小到原来的1/3,同时延时会接近0.5ms。而在存储系统跨地域部署时,不同地域的网络一般都有流量限制,带宽更小。同时由于传输距离的增长,导致传输延迟呈现正比关系的增加。

相关技术对所有数据采用相同的分布策略,没有考虑不同数据的差异性。例如,有些数据对可用性要求很高,数据量不大,而有些数据没有很高的可用性要求,但数据量大,读写吞吐量很高。采用相同的分布策略,对于可用性要求高的数据可能满足不了防御大范围故障的要求,而对于可用性要求低的数据,却不能满足其对数据读写速度的要求,还会给网络带来沉重的负担。

此外,相关技术采用单一层次的容错域划分,如均按照机架划分,很难表现出不同层次容错域间的区别,给数据分布的合理性和有效性造成困扰。例如,由于网络的分层架构,两个机架之间的带宽并不一定都是一样的,可能要经过核心交换机甚至经过互联网,一旦数据分布到的两个机架之间带宽较小,会造成数据写变慢。为了弥补这样的问题,一种做法是调整网络架构,使得系统中任意两个节点间的带宽是一样的,但网络设备和架构调整的代价相对较大,也提高了机房内部网络布线的难度,降低了网络可以承载的规模,不能做到成本降低的目的。



技术实现要素:

有鉴于此,本发明实施例提供了一种分布式存储系统的数据分布控制方法,包括:

从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,所述多种分布策略包括跨容错域分布的策略和在一个容错域内分布的策略;

根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入。

本发明实施例还提供了一种分布式存储系统中的数据分布控制系统,包括策略确定模块和分配及写入模块,其中:

所述策略确定模块设置为:从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,所述多种分布策略包括跨容错域分布的策略和在一个容错域内分布的策略;

所述分配及写入模块设置为:根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入。

本发明实施例还提供了一种分布式存储系统中的分布控制装置,包括处理器和存储器,其特征在于:

所述存储器设置为:保存程序代码;

所述处理器设置为:读取所述程序代码以执行以下数据分布控制处理:

从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,所述多种分布策略包括跨容错域分布的策略和在一个容错域内分布的策略;

根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入。

上述方案增加了数据的分布属性设置,可以适应数据的差异性要求。例如,可以实现关键数据跨容错域分布,在单个容错域出现故障时,仍然可以提供读写服务;而非关键数据在容错域内分布,不增加域间网络带宽成本,并且可提升数据的读写性能。

附图说明

图1是本发明实施例一分布式存储系统中存储节点的分层网络架构图;

图2是本发明实施例一数据分布控制方法的流程图;

图3是本发明实施例一分布控制系统的模块图;

图4是本发明实施例二分布式存储系统中存储节点的分层网络架构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例一

图1所示是本实施例分布式存储系统(文中也简称系统)中存储节点的分层网络架构,包括以下节点:

存储节点,存储节点是存储数据的实体,也称为机器(host,Machine)。

接入交换机(ASW),是为存储节点提供网络接入的交换机,在实际部署时,通常将一个机架上的多台机器连接到同一接入交换机。

汇聚交换机(PSW),是多台接入层交换机的汇聚点,处理来自接入层设备的所有通信量,并提供到核心层的上行链路。

核心交换机(DSW),部署在核心层(网络主干部分)的交换机称之为核心交换机。核心层通过高速转发通信,提供优化、可靠的骨干传输结构。

本实施例的分布式存储系统跨地域部署,不同地域的设备之间通过骨干网相连。这里的地域是指地理区域,如北京、上海、广州等,但也可以是一个国家或多个国家或其他地理区域,这取决于网络部署。

除上述存储节点外,分布式存储系统还包括分布控制系统和客户端,分布控制系统用于实现数据分布策略的确定、容错域的分配和数据写入、接收用户指令并执行等功能。客户端可以与分布控制系统进行信令交互,并与存储节点之间进行数据读写。

需要说明的是,不同规模和需求的分布式存储系统的网络架构是不同的。例如,有些分布式存储系统部署在同一地域内,而且上述架构中有些层次的节点如汇聚交换机等也是可选的。

文中提到的分布式存储系统的拓扑关系是指存储节点的拓扑关系,包括上述分层网络架构,还包括各个存储节点的名称、各个容错域的存储空间等属性信息。

基于本实施例的上述网络架构,本实施例将分布式存储系统划分为多个层次的容错域,按层次从低到高的顺序包括:

机器层的容错域,接入到同一接入交换机的一台或一组机器可组成该层次的一个容错域,每台机器可以包括多个磁盘来写入同一数据的多个副本。机器层容错域在图中用Machine表示。

接入层的容错域,连接到同一上层交换机(本实施例是PSW,也可以是DSW)的一台或多台接入交换机及其下连接的设备可组成该层次的一个容错域,一个接入层的容错域可以包括一个或多个机器层的容错域。接入层的容错域通常对应于一个或多个机架,图中用Rack表示。

汇聚层的容错域,连接到同一上层交换机(本实施例是DSW)的一台或多台汇聚交换机及其下连接的设备可组成该层次的一个容错域,一个汇聚层的容错域可以包括一个或多个接入层的容错域。汇聚层的容错域在图中用Pod表示。

数据中心层的容错域,同一数据中心内的一台或多台核心层交换机及其下连接的设备可组成该层次的一个容错域,一个数据中心层的容错域可以包括一个或多个汇聚层的容错域。数据中心层的一个容错域通常对应于一个机房,当然一个数据中心包含多个机房也是可以的。图中用Zone表示。Zone内的多台核心层交换机可通过光纤接入互联网。

地域层的容错域,跨地域部署的分布式存储系统可以划分地域层的容错域,一个地域层的容错域可以包括同一地域内的一个或多个数据中心层的容错域。地域层容错域在图中未示出,文中用Region表示。

一般来说,两台机器跨容错域分布时,所跨容错域的层次越高,则相互之间的网络带宽越小,传输延迟和带宽成本越高,但数据分布在这两台机器中时对故障的防御能力越强;反之,所跨的容错域的层次越低,则相互之间的网络带宽越大,传输延迟和带宽成本越低,但对故障的防御能力越差。例如,跨Machine但在同一Rack内的机器之间的带宽最大,延时最小。跨Rack但在同一Pod内的机器之间的网络带宽小于同一Rack内机器间的网络带宽,延时增大。跨Pod但在同一Zone内的机器之间的网络带宽更小,通常只有单机网卡带宽的1/3,而网络通信的传输延迟和带宽成本也相对更高。跨Zone但在同一地域的机器之间的网络带宽通常大于跨地域的机器之间的网络带宽。不同地域的机器之间的网络带宽与Internet分配的带宽有关,远远小于任何系统在一个地域内所有机器网卡带宽的总和。

文中,将比容错域层次A高一个层次的容错域层次B称为容错域层次A的上一层次,而容错域层次A称为容错域层次B的下一层次。例如,Machine的上一层次是Rack,Rack的下一层次是Machine;Rack的上一层次是Pod,Pod的下一层次是Rack,依次类推。这与容错域的层次划分也是有关系的,例如,如果没有划分Pod,则Rack的上一层次是Zone,Zone的下一层次是Rack。

对容错域层次的划分与分布式存储系统的网络架构有关,例如,当分布式存储系统不跨地域部署时,不会划分地域层的容错域。而对于相同的网络架构,容错域层次的划分也可以不同。例如,基于本实施例的网络架构,可以划分一个或多个层次的容错域。如只划分有Zone,或只划分有Rack和Zone、或只划分有Rack、Pod和Zone、或只划分有Machine、Rack和Zone,等等。

基于上述架构和容错域的划分,本实施例提供一种分布式存储系统的数据分布控制方法,如图2所示,包括:

步骤110,从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,所述多种分布策略包括跨容错域分布的策略和在一个容错域内分布的策略;

步骤120,根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入。

文中提到的第一数据可以是分布式存储系统存储的任一种数据,并不局限于某种特定的数据。

第一数据的分布是指第一数据多个副本(目前一般是3个)在系统中的分布。例如,第一数据的副本数为3,如果采用跨容错域分布(简称“跨域分布”,也即在多个容错域分布)的策略,一般分配2个容错域,将第一数据的2个副本保存在一个容错域,1个副本保存在另一个容错域,以防御单个容错域故障,提高可用性。而如果采用在一个容错域内分布(简称“域内分布”)的策略,则将第一数据的3个副本都保存在同一容错域如一台机器的不同磁盘里,在机器内部读写数据,可以提高读写速度,节约容错域之间的带宽资源。当然,本发明也不排除为数据存储2个或4个以上的副本。跨域分布时,分配的容错域也可以在3个以上。

本实施例中,根据所述第一数据的可用性要求,确定所述第一数据采用的分布策略,包括:

如第一数据为要求在单个容错域故障时仍可访问的高可用数据,确定所述第一数据采用跨容错域分布的策略;

如第一数据为在容错域故障时可停止访问并重新生成的低可用数据,确定所述第一数据采用在一个容错域内分布的策略。

上述要求在单个容错域故障时仍可访问的可用性要求,是指数据实现跨域分布后在单个容错域故障时仍可访问。

第一数据的可用性要求(第一数据是高可用数据还是低可用数据),可以根据系统默认配置确定。另外,数据的可用性要求也可以由用户(如分布式存储系统的后台维护人员、业务使用者等)来定制,用户可以将一些数据定制为高可用数据,而将另一些数据定制为低可用数据,系统根据用户定制确定数据的可用性要求。

在另一实施例中,用户可以直接为第一数据指定分布策略,也即将用户为所述第一数据指定的分布策略,确定为所述第一数据采用的分布策略。

在又一实施例中,用户直接为第一数据指定容错域,在这种情况下,如果用户为第一数据指定一个容错域,则可确定第一数据采用的是在一个容错域内分布的策略,如果用户为第一数据指定多个容错域,则可确定第一数据采用的是跨容错域分布的策略。

在实际应用中,需要跨域分布的数据,对可用性的要求也可能有差异。而本实施例分布式存储系统划分有多个层次的容错域。在此场景下,跨容错域分布的策略又以可细分为多种策略,如跨Machine分布的策略,跨Rack分布的策略,跨Pod分布的策略,跨Zone分布的策略,跨Region分布的策略,跨不同层次容错域分布的策略可提供的可用性、带宽和延迟都是不同的。因而本实施例在确定第一数据采用跨容错域分布的策略时,还根据用户定制或系统默认配置所跨的容错域的层次,以更好地满足数据的差异化要求。在实际系统中,并不一定要使用所有的层次,只使用其中的部分层次也是可以的。另外,分配的容错域个数默认为2个,如果需要分配更多的容错域,在确定分布策略时,也可以特别指定容错域的个数。

如前所述,两台机器跨容错域分布时,所跨容错域的层次越高,则相互之间的网络带宽越小,传输延迟和带宽成本越高,但数据分布在这两台机器中时对故障的防御能力越强。因而对跨域分布的高可用数据来说,对其可用性要求也可以做相应的细化,例如,要求在单个Rack故障时仍可访问的高可用数据,可以采用跨Rack分布的策略;要求在单个Zone故障时仍可访问的高可用数据,可以采用跨Zone分布的策略,等等。第一数据采用跨哪一层次容错域分布的策略,可以由系统默认或用户定制。系统也可以在高可用数据之下再定义多种细化的可用性要求(单个Rack故障时仍可访问、单个Zone故障时仍可访问等等),由用户为第一数据定制一种可用性要求。或者,系统也可以定义容错域层次不同的多种跨域分布策略,由用户直接为第一数据指定一种分布策略而完成为容错域层次的定制。上述方式还可以结合起来使用,例如,如果用户不定制,系统默认对高可用数据采用跨Zone分布(也可以是跨Rack或其他)的策略,如果用户定制(如指定要跨Zone分布),则优先采用用户定制的策略。

对于域内分布的策略,因为不要求跨任何域,一般都会写在同一存储节点中,不需要再定义层次。但也可以定义在哪一个层次的容错域内分布,例如要求在Machine内分布,以确保数据有很好的读写性能。

本实施例根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域时,如果第一数据采用域内分布的策略,则为第一数据分配第一数据的生成者所在的容错域,且优先将第一数据的多个副本写入所分配容错域内的同一存储节点。为第一数据分配第一数据的生成者所在的容错域可以方便数据就近写入,节约带宽资源。而将第一数据的多个副本写入同一存储节点,可以具有更好的读写性能,也方便数据的复制。这里,第一数据的生成者可以是指产生第一数据的一个进程,进程是可以调度到不同的容错域执行的。

本实施例根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域时,如果第一数据采用跨域分布的策略并确定了所跨的容错域的层次时,则在确定的层次为第一数据分配多个容错域,而且优先在上一层次的同一容错域内来分配。例如,第一数据采用跨Rack分布的策略时,为第一数据分配2个Rack层的容错域,这2个Rack层的容错域优先在同一Pod内分配(无Pod时优先在同一Zone内分配)。这样在满足可用性要求的基础上,使得容错域之间的带宽较大、延时较小,便于数据的写入和复制。

实际系统为第一数据分配的是“容错域中的存储节点”,因为本申请主要讨论数据在容错域中的分布,为了使表述更为简洁,将其表述为“分配容错域”,并不表示不需要分配存储节点。

本实施例中,第一数据采用跨容错域分布的策略时,根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入,可以采用以下两种方式中的一种:

同时写入方式,在分布式存储系统正常容错域的数量M大于或等于采用的所述分布策略要求的容错域数量N时,为所述第一数据分配N个容错域并同时写入;在M<N时,为所述第一数据分配M个容错域并同时写入,在正常容错域的数量达到N个后,再通过数据复制使所述第一数据分布到N个容错域,其中N,M为正整数,N≥2;或者

分时写入方式,先将所述第一数据写入到分配的一个容错域,再通过数据复制使所述第一数据分布到N个容错域。

举例来说,对于上层应用系统的元数据,数据量不大,而要求可用性很高,在写入过程要求可以防御单个容错域故障。因此采用同时写入方式。对于可用性要求不高如备份数据,可以采用分时写入方式。

在数据分布完成后,可能因为容错域故障导致分布式存储系统的拓扑发生变化,系统通过安全检测可以发现第一数据的副本是否缺失,在检测到第一数据的副本缺失时,会发起数据复制以补充缺失的副本。不同层次的节点出现异常引起的危害是不同的,本实施例采用不同的处理方式:

因机器层的容错域故障导致所述第一数据的副本缺失时,立即发起数据复制以补充所述第一数据缺失的副本;

除机器层之外其他层的容错域故障导致所述第一数据的副本缺失时,先经过设定的故障等待时间,所述故障等待时间到时后,如所述故障还未排除,再发起数据复制以补充所述第

例如,机器层容错域出现异常时一般上面的数据会长时间不可用或者丢失,在故障处理的时候需要立即发起数据复制,紧急恢复存储的数据;交换机一般只会出现电力故障或者流量异常,一般都是短时间不可用,但是出现的频率相对较高,挂在交换机下面机器上的数据不会丢失,所以在相应容错域(Rack、Pod、Zone)出现异常的时候一般延迟启动数据复制;另外,因为骨干网异常例如由于施工导致骨干网被挖断或者某个地区异常断电等也可能导致Zone发生故障时,在故障的时候也可以延迟启动数据复制。

此外,本实施例在所述第一数据的副本缺失而发起的数据复制过程中,先确定数据复制的源位置和目标位置,在所述源位置到目标位置经过的每一层次的容错域上申请相应的流量额度,申请成功后再开始数据复制。以第一数据跨Zone分布为例,假定在ZoneA有2份副本、ZoneB有1份副本,如果ZoneA中有一份数据副本丢失,需要为第一数据补充一份副本。则优先以ZoneB中的副本为数据复制的源位置,为了节约流量,优先在ZoneB选择一个目标位置,假定源位置和目标位置在不同的Rack,则在启动数据复制之前,要在源位置到目标位置经过的每一层次的容错域上申请相应的流量额度,包括Machine、Rack和Pod(数据复制经过汇聚交换机)。申请流量额度可以有效控制网络的流量,避免因为网络拥塞而导致系统无法正常工作。

本实施例还提供了一种分布式存储系统中的分布控制系统,如图3所示,包括策略确定模块10和分配及写入模块20,其中:

所述策略确定模块10设置为:从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,所述多种分布策略包括跨容错域分布的策略和在一个容错域内分布的策略;

所述分配及写入模块20设置为:根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入。

可选地,

所述策略确定模块从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,包括:

根据所述第一数据的可用性要求,确定所述第一数据采用的分布策略;或者

将用户为所述第一数据指定的分布策略,确定为所述第一数据采用的分布策略;或者

根据用户为所述第一数据指定的一个或多个容错域,确定所述第一数据采用的分布策略。

可选地,

所述策略确定模块根据所述第一数据的可用性要求,确定所述第一数据采用的分布策略,包括:

如第一数据为要求在单个容错域故障时仍可访问的高可用数据,确定所述第一数据采用跨容错域分布的策略;

如第一数据为在容错域故障时可停止访问并重新生成的低可用数据,确定所述第一数据采用在一个容错域内分布的策略;

所述第一数据的可用性要求根据系统默认配置或用户定制或外部系统的指示确定。

可选地,

所述分布式存储系统划分有机器层、接入层、汇聚层、数据中心层和地域层中的一个或多个层次的容错域。

可选地,

所述策略确定模块确定第一数据采用的分布策略,包括:在确定所述第一数据采用跨容错域分布的策略时,还根据系统默认配置或用户定制确定所跨的容错域的层次。

可选地,

所述策略确定模块确定所述第一数据采用在一个容错域内分布的策略时,所述分配及写入模块为所述第一数据分配容错域并进行数据写入,包括:为所述第一数据分配所述第一数据的生成者所在的容错域,且优先将所述第一数据的多个副本写入所述分配的容错域内的同一存储节点。

可选地,

所述策略确定模块确定第一数据采用跨容错域分布的策略时,所述分配及写入模块根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入,包括:

采用同时写入方式,在分布式存储系统正常容错域的数量M大于或等于采用的所述分布策略要求的容错域数量N时,为所述第一数据分配N个容错域并同时写入;在M<N时,为所述第一数据分配M个容错域并同时写入,在正常容错域的数量达到N个后,再通过数据复制使所述第一数据分布到N个容错域,其中N,M为正整数,N≥2;或者

采用分时写入方式,先将所述第一数据写入到分配的一个容错域,再通过数据复制使所述第一数据分布到N个容错域。

可选地,

所述分布控制系统还包括安全检查模块和数据恢复模块,其中:

所述安全检查模块设置为:检查到容错域故障导致所述第一数据的副本缺失时,通知所述数据恢复模块并携带发生故障的容错域的层次信息;

所述数据恢复模块设置为:收到所述通知后,根据所述层次信息确定是否机器层故障,如是,立即发起数据复制以补充所述第一数据缺失的副本,如否,先经过设定的故障等待时间,所述故障等待时间到时后,如所述故障还未排除,再发起数据复制以补充所述第一数据缺失的副本。

可选地,

所述分布控制系统还包括安全检查模块和数据恢复模块,其中:

所述安全检查模块设置为:检查到容错域故障导致所述第一数据的副本缺失时,通知所述数据恢复模块;

所述数据恢复模块设置为:收到所述通知后发起数据复制,先确定数据复制的源位置和目标位置,在所述源位置到目标位置经过的每一层次的容错域上申请相应的流量额度,申请成功后再开始数据复制。

本实施例的分布控制系统的各个模块分别实现本实施例数据分布控制方法的部分处理,在数据分布控制方法中描述的其他内容,也可以由分布控制系统相应的模块来实现,这里不再一一赘述。

上述分布控制系统的各个模块的实际部署本发明不做限定,可以部署在某一实体如分布式存储系统的元数据服务器上,各模块也可以分开部署在多个实体上,可以与其他功能模块部署在同一实体,也可以独立部署。另外,上述模块划分可以有不同的方式,如将策略确定和写入功能作为数据写入模块的功能,将容错域的分配作为分布控制模块的功能等等。但只要分布控制系统实现的功能相同,这些模块的划分和模块名称的不同并没有实质的差异,均应在本发明的分布控制系统的保护范围之内。

本实施例还提供了一种分布式存储系统中的分布控制装置,包括处理器和存储器,其中:

所述存储器设置为:保存程序代码;

所述处理器设置为:读取所述程序代码以执行以下分布控制控制处理:

从分布式存储系统提供的多种分布策略中确定第一数据采用的分布策略,所述多种分布策略包括跨容错域分布的策略和在一个容错域内分布的策略;

根据采用的所述分布策略和分布式存储系统的拓扑关系,为所述第一数据分配容错域并进行数据写入。

所述处理器还可以执行本实施例分布控制方法中的其他处理,这里不再一一赘述。

实施例二

图4是本实施例分布式存储系统中存储节点的拓扑图,包括存储节点、接入交换机和核心交换机,请参照实施例一的图1。本实施例中,将容错域的层次划分为3层即Machine、Rack和Zone,该分布式存储系统包括多个Zone,图中示出了ZoneA和ZoneB,每个Zone中包括多个Rack。

基于上述拓扑,下面对本实施例数据分布控制方法的各个过程进行描述。

本实施例数据分布控制方法包括拓扑关系建立过程、数据写入过程和数据恢复过程。其中:

拓扑关系建立过程包括:

步骤一,存储节点生成拓扑信息,并在注册时携带的所述拓扑信息,所述拓扑信息除自身的标识信息,还包括所在容错域的标识信息,

本实施例每个存储节点在部署时,除生成自身的标识信息外,还生成所在Machine(如Machine为存储节点本身可略去)、Rack和Zone的标识信息,这些标识信息都可以编码在存储节点的名称里,注册时上报到分布控制系统,也方便用户根据存储节点名称而获知存储节点在拓扑中位置。

步骤二,分布控制系统接收到存储节点的注册信息后,对系统的拓扑关系进行更新,增加该节点并更新每个容错域中的内容。

容错域中的内容包括容错域中介质空间(存储容量)等信息。分布控制模块除了生成整个系统存储节点的拓扑关系并进行更新外,还可以接受管理命令输入,对自动生成的拓扑关系进行编辑。例如,若自动生成的拓扑关系图不符合实际要求的拓扑关系,可以通过运维工具来改变已有节点的位置信息来对拓扑关系进行调整;

数据写入过程包括:

步骤一,分布控制系统确定各种数据采用的分布策略;

本实施例根据数据的可用性要求,将数据分为高可用数据和低可用数据,高可用数据中又分为两种,第一种高可用数据要求在单个Zone故障时仍可访问,第二种高可用数据要求在单个Rack故障时仍可访问。低可用数据在任一层次的容错域故障时均可停止访问并重新生成。系统将上层应用系统的元数据或者配置信息等数据默认为第一种高可用数据,采用跨Zone分布的策略,这些数据要求有非常高的可用性,同时数据流量不大。将社交软件中的个人图片、各种交易日志、服务器访问日志、云存储中的个人照片和视频等数据默认为第二种高可用数据,采用跨Rack分布的策略,这些数据不允许数据丢失和长时间不可用。系统将大规模数据集并行运算过程中产生的中间文件等数据默认为低可用数据,这些数据通过重新计算的方法可以重新生成,但要求读写吞吐非常高,可以写在同一存储节点中。上述对数据可用性的默认,可以体现在系统配置的数据类型与分布策略的对应关系中。

本实施例允许用户定制数据的可用性要求,将某一类数据定制为第一种高可用数据或第二种高可用数据或低可用数据,如用户对于其非常重要的关键的数据如财务数据、业务数据等,可以定制为第一种高可用数据;对于一些不重要的临时存储文件,可以定制为低可用数据。对于用户定制的数据,其可用性要求以用户定制为准,对于用户没有定制的数据,按系统默认配置为准,对于系统不能识别或没有配置的数据,可以默认为第二种高可用数据,采用跨Rack分布的策略。

本实施例还允许用户直接为数据指定一个或多个容错域。例如,提供分布式存储服务时,通常将为用户存储数据的一组机器的集合称之为服务群集(Cluster),Cluster中的机器可以指定到某一层次的多个容错域中,也可以指定到同一个容错域中。系统根据用户配置好的Cluster后,可以实现写入数据跨域分布或域内分布。

步骤二,需要存储第一数据时,分布控制系统根据第一数据采用的分布策略和系统的拓扑关系,为第一数据分配容错域;

为第一数据分配容错域时,除了要考虑分布策略的要求外,还要根据拓扑关系确定是否存在足够数量的容错域可以分配,以及容错域中是否有足够的存储空间。另如前所述,本步骤需要为第一数据分配容错域中的存储节点,将其简述为分配容错域。

对于采用域内分布策略的低可用数据,分布控制系统优先为其分配数据产生者所在的容错域,或者称为本地容错域,保证写入数据有最高的带宽。

步骤三,分布控制系统将第一数据写入到分配的容错域中。

在写入过程中,可以不强制一定要按照分布策略的要求写入。因为在实际的系统中,某个层次的容错域出现异常时,若强制要求将多个副本写入到不同的容错域中,很可能由于正常容错域的个数不足导致写入失败,从而降低系统的可用性。但如果系统正常容错域的个数足够,则需要按照分布策略的要求写入。

例如,要写入的第一数据采用跨Zone分布的策略。将数据写入到多个Zone,实际上是为了防止单个Zone对应的交换机出问题时数据不可用。因而在数据写入时只要尽量分布到不同Zone中就可以。比如第一数据要写3个副本,有2个Zone正常时,则在一个Zone下写2个副本,在另一个Zone写一个副本。如果当前的系统中有一个Zone异常,可用的Zone只有一个,则可以先将第一数据的3副本都写到一个Zone。此时强制写入到2个Zone则会写数据失败,导致可用性下降。等到异常的Zone恢复后,可以通过后台处理,将第一数据再复制另一个Zone到满足分布要求。

数据恢复过程包括:

步骤一,分布控制系统检查到拓扑关系变化,及时更新每个层次容错域中存储节点的介质空间信息;

分布控制系统可以通过心跳机制检测到系统哪一个层次的哪些容错域出现故障。

步骤二,分布控制系统发现容错域故障导致第一数据的副本缺失时,发起数据复制过程;

不同容错域出现的错误类型不同、出现的概率不同、影响的范围不同、对数据可靠性和可用性影响也不一样。出现概率非常高有磁盘错误、ASW死机、PSW丢包等。本实施例对不同层次容错域出现错误时处理方法是不同的。如果是Machine故障导致所述第一数据的副本缺失时,立即发起数据复制以补充所述第一数据缺失的副本;如果是Rack、Zone故障导致所述第一数据的副本缺失(一般不会导致数据丢失)时,则先经过设定的故障等待时间,所述故障等待时间到时后如所述故障还未排除,再发起数据复制。

步骤三,分布控制系统查找第一数据的分布要求和正常副本的位置(源位置),并计算出需要补充的副本的新位置(目标位置);

副本的位置包括副本所在的各个层次的容错域及所在的存储节点,需要补充的副本可以重新分配一个位置,因此称为新位置,该新位置是数据复制的目标位置,正常副本的位置是数据复制的源位置。

本实施例在选取源位置和目标位置时,充分考虑两点间的网络传输代价,防止高损耗数据恢复。例如系统中有两个Zone即ZoneA和ZoneB,数据要求写入3个副本,假定原来在ZoneA中写入两个副本,在ZoneB中写入一个副本。若ZoneA中的一个Rack出现故障,导致一个副本缺失,而在恢复数据时选取了ZoneB中的副本作为复制源,则在选择目标位置时优先选择ZoneB中的存储节点,复制过程中Zone间流量0损耗,从而可以降低成本和提高恢复速度。

步骤四,分布控制系统在所述源位置到目标位置经过的每一层次的容错域上申请相应的流量额度,申请成功后再开始数据复制。

通过在容错域之间定义总体流量限制,在数据恢复的过程中先申请流量额度,可以有效抑制由于数据恢复带来的网络流量冲击,防止由于数据恢复引起更多的容错域进入网络异常状态,加剧故障的影响范围。

实施例三

本实施例涉及上层应用系统的数据分布控制。本实施例的上层应用系统以用户使用的云盘系统为例,说明存储数据时如何进行分布式控制。云盘系统将分布式存储系统作为底层的存储系统,如可以采用实施例一或实施例二的分布式存储系统。

在用户通过云盘存储数据的这一应用场景下,相应的数据分布控制方法包括:

步骤一,云盘系统为用户提供具有不同可用性的多种云盘:高可用云盘和低可用云盘;

高可用云盘可以是收费的,可以向用户承诺故障的恢复时间等可用性指标,低可用云盘是免费的,不向用户进行承诺。

步骤二,云盘系统根据用户选择的云盘类型,确定数据的可用性要求,即使用高可用云盘保存的数据确定为高可用数据,使用低可用云盘保存的数据确定为低可用数据;

用户在使用云盘保存数据时,根据对数据可用性要求,购买高可用的云盘来保存,或者选用免费的云盘来保存。例如,对于用户经常使用,不能容忍较长时间不可用的,用户可以购买高可用的云盘来保存。而对于用户不经常使用,可以容忍较长时间不可用的数据,则选用免费的云盘来保存。

步骤三,云盘系统向分布式存储系统写入数据时,将数据的可用性要求通知给分布式存储系统。

云盘系统对于要保存到高可用云盘的数据,指示为高可用数据,对于要保存到免费云盘的数据,指示为低可用数据。

步骤四,分布式存储系统对于高可用数据,采用跨域如跨分布的策略,对于低可用数据,采用在同一容错域内分布的策略。

通过本实施例的方法,可以满足用户对数据可用性的差异性要求而提供相应的服务。

虽然本实施例是以云盘系统为例,但对于其他数据存储服务的系统,也可以采用本实施例的方法。

实施例四

本实施例也涉及上层应用系统的数据分布控制。本实施例的上层应用系统以社交软件系统如丁丁为例,说明存储上层应用系统的数据时如何进行分布式控制。社交软件系统将分布式存储系统作为底层的存储系统,如可以采用实施例一或实施例二的分布式存储系统。

在社交软件数据存储的这一应用场景下,相应的数据分布控制方法包括:

步骤一,分布式存储系统根据社交软件系统的服务等级协议(SLA:Service-Level Agreement)要求,确定对应的分布策略和/或写入方式;

社交软件系统的SLA有对数据的可用性要求,例如为99.9%、99.99%等。SLA的等级越高则要求系统的可用性越高,故障时间及故障恢复时间越短。对于SLA在99.9%及以上时,数据要求在单个容错域故障时仍可访问,否则无法满足SLA的要求,因此采用跨域如跨Zone分布的策略。其中,当SLA为99.9%时,数据写入采用分时写入方式。当SLA要求为99.99%及以上时,数据写入采用同时写入方式。

社交软件系统SLA对应的分布策略和/或写入方式可以由分布式存储系统的维护人员根据该SLA来指定,或者配置好SLA与分布策略和/或写入式之间的对应关系,根据社交软件系统的SLA进行自动配置(这属于上文中默认配置的一种)。

步骤二,分布式存储系统接收到所述社交软件系统的数据时,查找为其指定的分布策略和写入方式,根据查找到的分布策略为所述第一数据分配容错域,并按照查找到的写入方式进行数据写入。

需要说明的是,对于其他的上层应用系统,也可以根据SLA等级的要求确定数据的可用性要求,并不限于社交软件系统。

实施例五

本实施例涉及大数据实时计算场景下分布式存储系统的数据分布控制。

在大数据计算这一应用场景下,相应的数据分布控制方法包括:

步骤一,分布式存储系统默认大数据计算产生的输入输出数据为高可用数据,采用跨域分布策略。而默认运算时产生的中间数据为低可用数据,采用在一个容错域内分布的策略;

本实施例中的跨域分布策略为跨Zone分布策略。因为中间数据可以重新生成,为了节约空间和网络流量,本实施例将其作为低可用数据,只在一个容错域内分布。以淘宝对网购进行计算为例,输入数据包括用户购买商品、评价的各种数据,物流公司提供的物流信息等等。输出数据包括基于输入数据统计得到的各种信息如交易总额、交易笔数、交易量最大的商铺等等。中间数据是根据输入数据计算输出数据时需要临时保存的数据,这些数据是可以重新生成的,因而可以作为低可用数据。

步骤二,分布式存储系统为大数据计算指定容错域来保存其数据;

指定容错域的方式是可选的,对于大数据实时运算的场景,例如双11对淘宝交易实况进行大屏幕直播时需要进行的实时计算的特定场景下,对数据计算的效率要求很高,此时可以采用为指定容错域的分布策略。例如,为所有的输入输出数据,不管数据源在什么地域,都保存到指定的2个Zone中,这2个Zone可以是。指定具体的容错域有利于将不同地区的数据源导入数据到相同的容错域集中进行数据处理,使带宽得到高效利用、提高执行效率如数据运算的效率。

步骤三,分布式存储系统对于大数据计算产生的不同数据,按照对应的分布策略选择容错域并进行数据写入。

在进行数据写入时,如果对数据的实时性要求很高,可以采用同时写入的方式。否则可以采用分时写入的方式。

实施例六

本实施例涉及云平台数据备份时的数据分布控制。数据备份是云平台的基本功能之一,对云平台每天产生的大量数据如业务数据、操作日志等都需要进行备份。

本实施例用于实现云平台数据备份的分布式存储系统可以采用如实施例一或二中的分层网络架构,其中的容错域划分为数据中心层的容错域Zone和接入层的容错域RACK。在保存云平台的备份数据例如数据库快照(Snapshot))时,需要依据分布策略和写入策略将备份数据写入分布式存储系统中相应的容错域中。

在云平台数据备份这一应用场景下,相应的数据分布控制方法包括:

步骤一,为数据库快照采用跨Zone分布的策略,所跨的容错域数量为2;

在本实施例涉及的数据备份场景中,由于数据导入流量非常大,所以采用分时写入方式,即将导入的数据就近写入到本地Zone,然后后台再异步复制到其他Zone中。

步骤二,在备份过程中,对备份操作产生的状态信息采用同时写入的方式进行跨域分布,对备份数据采用分时写入方式;

备份时会产生一类数据,即复制的状态信息,用于记录那些数据已经备份成功(备份完成后数据源数据可以立即做删除来容纳更多数据)、哪些数据正在备份等状态。这些状态信息是正常复制不可或缺的,需要有更高的可用性,因此本实施例对复制过程的状态信息采用同时写入的方式,即同时写到2个Zone中,以保证在单个Zone出现问题的时候,数据导入仍可以正常进行。具体地,对于复制过程产生的状态信息,在进行数据写入时,如果系统的两个Zone正常,应同时写入这2个Zone。如果这两个Zone只有一个正常,另一个Zone出现掉电或者断网的情况下,为了保证数据写入成功,先将元数据的多个副本写到数据产生者所在的Zone。待另一个Zone恢复正常后再向该另一个Zone复制一份元数据副本,完成分布。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1