一种分布式存储的方法和系统与流程

文档序号:11843387阅读:191来源:国知局
本发明涉及通信
技术领域
:,特别涉及一种分布式存储的方法和系统。
背景技术
::分布式存储系统是由多台具有有存储能力的服务器组成。其中,各服务器通过网络互联,对外作为一个整体提供存储服务。通常情况下,分布式存储系统有两种设计,一种是中心化设计,此设计采用集中部署的中心服务器进行数据分布的分配和管理,客户端访问数据之前向中心服务器询问数据位置,确定数据位置后再向数据归属的服务器发起读取数据的请求。另一种是去中心化设计,此设计是采用分布式算法,如,分布式哈希(DistributedHashTable,DHT)算法,计算数据位置的方式进行数据分布的管理,客户端请求数据时,根据请求的数据的信息计算出数据归属的服务器,直接向数据归属的服务器发起请求。然而,中心化设计所有数据管理都在中心节点进行,性能受中心节点的能力限制,存在性能瓶颈。而采用分布式设计,虽然解决了中心化设计中的性能瓶颈问题,但是去中心化设计的数据路由采用计算方式,对于异构的分布式存储系统,由于各服务器的存储介质多样化,例如,SATA盘、SAS盘、SSD盘、内存等,不同存储介质间的存储能力和岀流能力差异非常大。而且岀流能力越强价格越高,所能配置的容量越小。也就是说存储能力和岀流能力存在非常大的矛盾,采用单一的算法无法兼顾这种差异性和矛盾性,往往出现容量越大的服务器存储的数据很少的情况,导致资源的浪费。技术实现要素:本发明实施例提供了一种实现分布式存储的方法和系统,以解决现有技术中存储资源浪费的问题。为达到上述目的,本发明采用如下技术方案:一方面,本发明实施例提供了一种分布式存储方法,该方法中,分布式存储系统的第一存储节点在接收到来自应用服务器的写入内容数据的请求时,第一存储节点可以根据分布式存储系统中各存储节点的容量负载和流量负载来确定用于写入该内容数据的第二存储节点,然后通知应用服务器将内容数据写入确定出的第二存储节点,并在本地创建该内容数据的管理数据。管理数据中记录该内容数据的存储位置,即该内容数据所位于的存储节点。在充分考虑各存储节点各自的容量情况和岀流情况的基础上来分布内容数据,避免了采用统一算法进行内容数据分布所导致的资源浪费问题。而且,本发明实施例中,将应用服务器101通过分布式算法计算得到的存储节点,作为该应用服务器101的接入节点。然后,再由作为接入节点的存储节点根据各存储节点的容量负载和流量负载来确定存储内容数据的存储节点。这样,就可以避免中心化设计的瓶颈问题。在一种可能的设计中,各存储节点的容量负载是根据各存储节点各自支持的存储容量以及各自的已用存储容量计算得到。各存储节点的流量负载是根据所述各存储节点各自支持的岀流能力以及各自的平均岀流量计算得到的。在一种可能的设计中,可以采用求交集的方式来综合考虑容量负载以及流量负载。具体的,第一存储节点找出容量负载在预设容量范围内的存储节点,形成第一节点集合。第一存储节点还找出流量负载在预设流量范围内的存储节点,形成第二节点集合。然后,再从第一节点集合和第二节点集合的交集中选择用于写入所述数据的第二存储节点。其中,在选择的时候,可以随机选择,也可以考虑其它因素进行优选。下面分别以考虑减少跨节点访问以及考虑访问性能为例进行说明。在一种可能的设计中,提高访问性能,从第一节点集合和第二节点集合的交集中选择用于写入所述数据的第二存储节点具体包括:第一存储节点判断要写入的所述数据是热数据还是冷数据;若为热数据,所述第一存储节点从所述第一节点集合和第二节点集合的交集中选择流量负载最小的存储节点作为写入所述数据的第二存储节点;若为冷数据,所述第一存储节点从所述第一节点集合和第二节点集合的交集中选择容量负载最小的存储节点作为写入所述数据的第二存储节点。在一种可能的设计中,为了减少跨节点访问,在从交集中选择用于写入内容数据的第二存储节点时,可进一步判断交集中是否存在第一存储节点,如果存在第一存储节点,则优选第一存储节点作为用于写入内容数据的第二存储节点。在一种可能的设计中,该方法还包括对内容数据的访问过程。其中,第一存储节点接收访问内容数据的请求,从所述管理数据中确定出所述内容数据存储于所述第二存储节点,并将所述访问所述内容数据的请求转发给所述第二存储节点。为了提高系统的性能,本发明实施例可以将热内容数据存储到岀流能力强的存储节点,将冷内容数据存储到存储容量大的存储节点,下面对该过程进行具体说明。在一种可能的设计中,各存储节点可以根据内容数据被访问的次数确定该内容数据的访问热度,并在该内容数据的管理数据中记录所述内容数据的访问热度,以便后续根据该访问热度进行内容数据的迁移。在一种可能的设计中,第一存储节点根据自身存储的内容数据的访问热度,识别出热内容数据,第一存储节点将所述热内容数据迁移到流量负载比所述第一存储节点的流量负载小的一个存储节点,并通知存储所述热内容数据的管理数据的存储节点更新所述热内容数据的存储位置。在一种可能的设计中,所述第一存储节点将所述热内容数据迁移到流量负载比所述第一存储节点的流量负载小的一个存储节点,具体包括:将所述分布式存储系统的各存储节点按流量负载排序,并按照流量负载大的存储节点向流量负载小的存储节点迁移热内容数据的原则,确定各存储节点间的第一迁移关系,所述第一迁移关系中包括结成迁移对的迁入存储节点和迁出存储节点。所述第一存储节点将所述热数据迁移到在所述第一迁移关系中与所述第一存储节点结成迁移对的迁入存储节点中。在一种可能的设计中,第一存储节点还根据自身存储的内容数据的访问热度,识别出的冷内容数据。第一存储节点将冷内容数据迁移到容量负载比所述第一存储节点的容量负载小的一个存储节点,并通知存储所述冷内容数据的管理数据的存储节点更新所述冷内容数据的存储位置。在一种可能的设计中,所述第一存储节点将冷内容数据迁移到容量负载比所述第一存储节点的容量负载小的一个存储节点,具体包括:将所述分布式存储系统的各存储节点按容量负载排序,并按照容量负载大的存储节点向容量负载小的存储节点迁移冷内容数据的原则,确定各存储节点间的第二迁移关系,所述第二迁移关系中包括结成迁移对的迁入存储节点和迁出存储节点。所述第一存储节点将所述冷内容数据迁移在所述第二迁移关系中与所述第一存储节点结成迁移对的迁入存储节点。通过上述迁移过程,能够释放高岀流能力的存储节点的存储资源,并且可以将热内容数据存储到岀流能力强的存储节点,从而提升整个分布式存储系统的性能。又一方面,本发明实施例提供了一种分布式存储方法,该方法可以应用于分布式存储系统扩容的场景下。其中,分布式系统中存储有内容数据以及各内容数据的管理数据,每个管理数据中包括与所述管理数据对应的内容数据的存储位置;所述管理数据通过分布式算法分布在所述分布式存储系统的各存储节点中,所述内容数据按照各存储节点的容量负载和流量负载进行分布。在分布式存储系统扩容时,分布式存储系统通过分布式算法对各内容数据的分布进行重新计算。将计算出的应归属于扩容存储节点的内容数据保留在存储所述内容数据的原存储节点,将计算出的所述内容数据的管理数据迁移到所述扩容存储节点。在本发明实施例中,通过为每个内容数据创建管理数据,在扩容时,仅对管理数据进行迁移,而不真正迁移内容数据本身。由于管理数据远小于内容数据本身,因此迁移量非常小,大大缩短了迁移时长,使得分布式存储系统在扩容后可以快速的提供服务。此外,由于不同存储介质的存储能力和岀流能力不同,势必存在存储能力相对更强或者岀流能力相对更强的节点。因此,为了提高对内容数据的操作效率,本发明实施例还对内容数据的分布进行了进一步的优化:将热内容数据迁移到岀流能力强的存储节点,将冷内容数据迁移到存储能力强的存储节点。下面对该迁移过程在进行说明。在一种可能的设计中,分布式存储系统将各存储节点按流量负载排序,并按照流量负载大的存储节点向流量负载小的存储节点迁移热内容数据的原则,确定各存储节点间的第一迁移关系,所述第一迁移关系中包括结成迁移对的迁入存储节点和迁出存储节点。所述分布式存储系统的各存储节点按照所述第一迁移关系进行热内容数据的迁移,并在所述热内容数据的管理数据中将所述热内容数据的存储位置更新为迁移后的存储位置。在一种可能的设计中,分布式存储系统还将所述分布式存储系统的各存储节点按容量负载排序,并按照容量负载大的存储节点向容量负载小的存储节点迁移冷内容数据的原则,确定各存储节点间的第二迁移关系,所述第二迁移关系中包括结成迁移对的迁入存储节点和迁出存储节点。分布式存储系统的各存储节点按照所述第二迁移关系进行冷内容数据的迁移,并在所述冷内容数据的管理数据中将所述冷内容数据的存储位置更新为迁移后的存储位置。在一种可能的设计中,所述分布式存储系统的各存储节点按照所述第一迁移关系进行热内容数据的迁移具体包括:第一迁移关系中的迁出存储节点识别出本节点存储的内容数据中的热内容数据。将识别出的热内容数据迁移到在所述第一迁移关系中与所述迁出存储节点结成迁移对的迁入存储节点中。在一种可能的设计中,所述分布式存储系统的各存储节点按照所述第二迁移关系进行冷内容数据的迁移具体包括:第二迁移关系中的迁出存储节点识别出自身存储的内容数据中的冷内容数据。将识别出的冷数据迁移到在所述第二迁移关系中与所述迁出存储节点结成迁移对的迁入存储节点中。又一方面,本发明实施例提供了一种存储节点,该存储节点具有实现上述方法实施例中第一存储节点行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的部件(比如,基于分布式存储系统的各存储节点的容量负载和流量负载确定内容数据的分布)。又一方面,本发明实施例提供了一种分布式存储系统,该分布式存储系统具有实现上述方法实施例中分布式存储系统行为的功能(包括分布式存储系统中各存储节点的行为的功能)。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的部件(比如,扩容迁移,冷热数据迁移等)。再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述第一存储节点所用的计算机软件指令,其包含用于执行上述方面为第一存储节点所设计的程序。再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述分布式存储系统所用的计算机软件指令,其包含用于执行上述方面为分布式存储系统所设计的程序。本发明实施例通过将页面组件设计成包括数据服务和配置的方式,从而可以通过配置的方式来进行页面的修改,将现有技术中的需要硬代码写JS代码部分的工作完全变成了配置,大大缩短交付时间。在上述实施例中,通过采用分布式算法计算得到的存储节点来创建内容数据的管理数据,这样就可以将对内容数据的管理分布到分布式存储系统的各存储节点上,避免了采用中心节点进行管理的造成的性能瓶颈问题。而对内容数据的分布则根据各存储节点各自的硬件能力(如,存储能力、岀流能力)进行分布,则避免了在异构环境下,采用单一的分布式算法所造成的资源浪费问题。附图说明图1为本发明实施例提供的一种实现分布式存储的网络架构图;图2为本发明实施例提供的一种的计算机设备示意图;图3为本发明实施例提供的一种实现分布式存储的方法流程图。图3-1为本发明实施例提供的一种数字空间的示意图;图3-2为本发明实施例提供的一种内容数据映射的示意图;图3-3为本发明实施例提供的一种存储节点映射的示意图;图4为本发明实施例提供的一种对内容数据的访问流程图;图5为本发明实施例提供的一种分布式存储系统进行扩容的示意图;图6为本发明实施例提供的一种扩容后的迁移示意图;图7为本发明实施例提供的一种存储节点的结构图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本发明实施例描述的网络架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。参见图1为本发明实施例提供的实现分布式存储的网络架构图,该网络架构中包括分布式存储系统102和至少一个应用服务器101。分布式存储系统102中包括两个或两个以上存储节点(图1中仅示出三个作为举例)。其中,存储节点可以是具有存储能力的服务器。各存储节点通过网络互联,对外作为一个整体提供存储服务。在图1所示的实施例中,应用服务器101和分布式存储系统102的存储节点均可以连接到网络中,通过网络进行通信。该网络可以是互联网(Internet)或局域网或无线网络等其他类型的网络。应用服务器101可以访问分布式存储系统102中的存储节点,进行数据的写入或读取等操作。在具体实现时,应用服务器101可以采用分布式算法,例如,分布式哈希表(distributedhashtable,DHT)算法,计算需要写入或读取的内容数据应归属的存储节点,并通过访问该存储节点进行内容数据的写入或读取操作。其中,可在应用服务器101上部署与存储节点进行交互的客户端。由该客户端进行计算处理,从而向应用服务器101中的应用屏蔽分布式存储系统102内部的组网结构。分布式存储系统102的存储节点在接收到来自应用服务器101的写入内容数据的请求时,存储节点可以根据分布式存储系统102中各存储节点的容量负载和流量负载来确定用于写入该内容数据的存储节点,然后通知应用服务器101将内容数据写入确定出的存储节点,并在本地创建该内容数据的管理数据。管理数据中记录该内容数据的存储位置,即该内容数据所位于的存储节点。应用服务器101在访问该内容数据时,采用写入该内容数据时所使用的分布式算法计算该内容数据应归属的存储节点,并向计算出的存储节点发送访问该内容数据的请求。接收到该请求的存储节点通过查找该内容数据的管理数据,获知该内容数据的所位于的存储节点,然后将该请求转发到存储该内容数据的存储节点,由存储该内容数据的存储节点向应用服务器101提供该内容数据。本发明实施例可以应用于异构的分布式存储系统。在异构的分布式系统中,不同存储节点可以采用不同的存储介质,例如,SATA盘、SAS盘、SSD盘、内存等。不同存储介质的存储能力(如,容量大小)和岀流能力不同。其中,岀流能力依赖于存储介质的硬件能力,如,存储介质的硬件所能支持的单位时间的岀流量。本发明实施例在分布内容数据的过程中,可以基于各存储节点各自支持的存储容量以及各自的已用存储容量来计算得到各存储节点的容量负载,以及可以基于各存储节点各自支持的岀流能力以及各自的平均岀流量来计算得到各存储节点的流量负载,从而在充分考虑各存储节点各自的容量情况和岀流情况的基础上来分布内容数据,避免了采用统一算法进行内容数据分布所导致的资源浪费问题。而且,本发明实施例中,将应用服务器101通过分布式算法计算得到的存储节点,作为该应用服务器101的接入节点。然后,再由作为接入节点的存储节点根据各存储节点的容量负载和流量负载来确定存储内容数据的存储节点。这样,就可以避免中心化设计的瓶颈问题。需要说明的是,图1中所示的各存储节点可以采用图2中的计算机设备来实现。图2为所示为本发明实施例提供的计算机设备示意图。计算机设备200包括至少一个处理器201,通信总线202,存储器203以及至少一个通信接口204。处理器201可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specificintegratedcircuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。通信总线202可包括一通路,在上述组件之间传送信息。所述通信接口204,适用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WirelessLocalAreaNetworks,WLAN)等,在本发明实施例中,通信接口204可用于与应用服务器以及与分布式存储系统中的其它存储节点进行通信。存储器203可以是只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasableProgrammableRead-OnlyMemory,EEPROM)、只读光盘(CompactDiscRead-OnlyMemory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。其中,所述存储器203用于存储执行本发明方案的应用程序代码,并由处理器201来控制执行。所述处理器201用于执行所述存储器203中存储的应用程序代码(比如实现数据管理器的程序代码,实现迁移管理器的程序代码等)。本发明实施例中,存储器还用于存储内容数据以及内容数据的管理数据。在具体实现中,作为一种实施例,处理器201可以包括一个或多个CPU,例如图2中的CPU0和CPU1。在具体实现中,作为一种实施例,计算机设备200可以包括多个处理器,例如图2中示出两个处理器201。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。上述的计算机设备200可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备200可以是网络服务器、通信设备、嵌入式设备或有图2中类似结构的设备。本发明实施例不限定计算机设备200的类型。图3为本发明实施例提供的实现分布式存储的方法流程图。如图2所示,本实施例为内容数据的写入过程,该过程包括:S301,应用服务器向分布式系统中的第一存储节点发送写入内容数据的请求。该请求消息中可携带该内容数据的描述信息,例如,内容数据的标识、大小或者类型等。分布式系统中包括有至少两个存储节点。应用服务器要写入内容数据时,可在分布式系统中确定一个用于写入该内容数据的存储节点。其中,应用服务器可以采用分布式算法(如,DHT算法)来计算用于写入该内容数据的存储节点。本实施例将应用服务器确定出的存储节点称为第一存储节点。下面以DHT算法为例,对利用分布式算法计算内容数据的分布的原理进行详细介绍。分布式存储系统按照常用的哈希(hash)算法来将对应的关键字(key)哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。这些数字可以头尾相连形成成一个闭合的环形。如下图3-1所示。分布式存储系统可以将内容数据通过一定的hash算法处理后映射到图5所示的环上。现在以object1、object2、object3、object4四个内容数据为例对该映射过程进行说明。首先,通过特定的Hash函数计算出object1、object2、object3、object4四个内容数据对应的key值,其key值如下:Hash(object1)=key1;Hash(object2)=key2;Hash(object3)=key3;Hash(object4)=key4;然后将计算出的key值散列到Hash环上。如下图3-2所示。分布式存储系统再将存储节点通过hash算法映射到环上。具体的,分布式存储系统通过使用与映射内容数据一样的Hash算法将存储节点也映射到环中(一般情况下。对存储节点的hash计算可采用存储节点的IP或者存储节点的唯一的别名作为输入值),然后以顺时针的方向转动,将所有内容数据存储到离自己最近的存储节点中。假设现在有NODE1,NODE2,NODE3三个存储节点,通过Hash算法得到对应的KEY值,如下:Hash(NODE1)=KEY1;Hash(NODE2)=KEY2;Hash(NODE3)=KEY3;将得到的KEY值映射到环中,其示意图如图3-3所示。通过图3-3可以看出内容数据与存储节点处于同一哈希空间中,这样按顺时针转动object1存储到了NODE1中,object3存储到了NODE2中,object2、object4存储到了NODE3中。因此,通过算出内容数据的hash值就能快速的定位到该内容数据应该归属的存储节点了。S302,第一存储节点获取分布式系统中的各存储节点的容量负载以及流量负载。分布式系统中的各存储节点可定期或实时的计算自身的容量负载和流量负载。分布式系统中的各存储节点可以定期将各自的容量负载以及流量负载同步到其它存储节点。或者,也可以采用实时请求的方式,即,在每次接收到写入内容数据的请求时,由接收到该请求的存储节点向其它各存储节点查询。如果采用定期同步的方式,第一存储节点则从已同步数据中获取各存储节点的容量负载和流量负载。如果采用实时请求的方式,第一存储节点则通过向各存储节点发送查询请求来获取各存储节点的容量负载和流量负载。其中,各存储节点的容量负载可以根据各存储节点各自支持的存储容量以及各自的已用存储容量计算得到。例如,可以采用已用存储容量除以支持的存储容量得到已用容量占比,以该已用容量占比来表示容量负载。也可以先计算得到剩余存储容量,由剩余存储容量除以支持的存储容量得到剩余容量占比,以该剩余容量占比来表示容量负载。不同的是,采用已用容量占比来表示时,已用容量占比越大,表示容量负载越大。采用剩余容量占比来表示时,剩余容量占比越大,表示容量负载越小。各存储节点的流量负载可以根据所述各存储节点各自支持的岀流能力以及各自的平均岀流量计算得到的。其中,岀流能力可以是存储节点的硬件能力所能支持的单位时间内的出流量。平均岀流量可以是最近统计周期内的单位时间的平均岀流量。统计周期的时长可以预先配置。在计算流量负载时,可用平均岀流量除以存储节点的岀流能力得到岀流占比,以该岀流占比来表示流量负载。岀流占比越大,表示流量负载越大。当然,也可以以岀流能力减去平均岀流量得到剩余岀流量,再以剩余出流量除以存储节点的岀流能力得到剩余流量占比,以该剩余流量占比来表示流量负载。剩余流量占比越大,表示流量负载越小。需要说明的是,上述容量负载以及流量负载的计算算法只是举例,也可以采用其它算法进行计算,这里不做限制。后续在本发明实施例中,以已用容量占比来表示容量负载,以及以岀流占比来表示流量负载为例进行说明。S303,第一存储节点基于获取到的容量负载以及流量负载确定用于写入内容数据的第二存储节点。本发明实施例中,将基于容量负载以及流量负载确定出的用于写入内容数据的存储节点称为第二存储节点。下面对如何确定出第二存储节点进行说明。假设分布式存储系统中的存储节点的集合为Set1。第一存储节点从Set1中找出容量负载在预设容量范围内的存储节点(例如,选择出容量占比低于70%的存储节点,其中,容量占比表示容量负载,低于70%为预设容量范围,该范围可配置),形成第一节点集合Set2。需要说明的是,预设容量范围也可以不是固定值,而是一个表达式。例如,预设容量范围可表示为:容量占比<(1-内容数据大小/容量大小),其中,容量占比表示当前的容量负载,内容数据大小为本次要写入的内容数据的大小。这样,对于每次写入的内容数据的大小的不同,符合条件的存储节点也不同。第一存储节点从Set1中找出流量负载在预设流量范围内的存储节点(例如,选择出岀流占比低于80%的存储节点,其中,岀流占比表示流量负载,低于80%为预设流量范围,该范围可配置),形成第二节点集合Set3。对Set2和Set3的求交集,得到集合set4。第一存储节点从交集set4中选择用于写入内容数据的第二存储节点。其中,在选择的时候,可以随机选择,也可以考虑其它因素进行优选。下面分别以考虑减少跨节点访问以及考虑访问性能为例进行说明。为了减少跨节点访问,在从交集中选择用于写入内容数据的第二存储节点时,可进一步判断交集中是否存在第一存储节点,如果存在第一存储节点,则优选第一存储节点作为用于写入内容数据的第二存储节点。为了提高访问性能,可以预先判断要写入的内容数据是热内容数据还是冷内容数据。若为要写入的内容数据热内容数据,则从交集中选择流量负载最小的存储节点作为写入所述内容数据的第二存储节点。若要写入的内容数据为冷内容数据,则从交集中选择容量负载最小的存储节点作为写入所述内容数据的第二存储节点。在判断内容数据是热内容数据还是冷内容数据时,可以根据要写入的内容数据的类型来判断。各存储节点中可预先配置哪些类型的内容数据为热内容数据,哪些类型的内容数据为冷内容数据。需要说明的是,基于各节点的容量负载以及流量负载动态计算内容数据应该写入的存储节点的算法可以有多种,上述求交集的选择方式只是一种举例。S304,第一存储节点通知应用服务器将内容数据写入到第二存储节点。S305,应用服务器将内容数据写入到第二存储节点。内容数据的写入过程可采用现有技术,这里不再赘述。S306,第二存储节点在内容数据写入完成后,通知第一存储节点创建该内容数据的管理数据。在一个实施例中,第二存储节点可以采用与应用服务器一致的分布式算法来计算得到用于存储该内容数据的管理数据的第一存储节点。在另一个实施例中,也可以在步骤305中,由应用服务器将第一存储节点的标识发送给第二存储节点,从而使第二存储节点获知用于存储该内容数据的管理数据的第一存储节点。S307,第一存储节点创建该内容数据的管理数据,在管理数据中记录该内容数据的存储位置(即记录该内容数据的存储于第二存储节点)。需要说明的是,步骤S306可以是可选的,第一存储节点可以在步骤304的通知应用服务器将内容数据写入到第二存储节点后,直接创建该内容数据的管理数据。在上述实施例中,通过采用分布式算法计算得到的存储节点来创建内容数据的管理数据,这样就可以将对内容数据的管理分布到分布式存储系统的各存储节点上,避免了采用中心节点进行管理的造成的性能瓶颈问题。而对内容数据的分布则根据各存储节点各自的硬件能力(如,存储能力、岀流能力)进行分布,则避免了在异构环境下,采用单一的分布式算法所造成的资源浪费问题。下面对图3中写入的内容数据的访问过程进行详细介绍。图4为本发明实施例提供的对内容数据的访问流程图。如图4所示,该访问过程包括:S401,应用服务器向第一存储节点发起访问内容数据的请求。应用服务器可采用与写入该内容数据时一致的分布式算法计算出存储有该内容数据的管理数据的第一存储节点,并向计算出的第一存储节点发起访问请求,该访问请求中携带该内容数据的标识、访问操作类型以及应用服务器标识。其中,访问操作类型包括读取内容数据等。S402,第一存储节点确定被访问的内容数据的存储位置。第一存储节点根据内容数据的标识查找该内容数据的管理数据,从管理数据中获得该内容数据的存储位置。S403,第一存储节点将访问该内容数据的请求转发给存储有该内容数据的第二存储节点。S404,第二存储节点将请求访问的内容数据发送给应用服务器。其中,第二存储节点可以访问请求中携带的内容数据的标识在本地提取出该内容数据,并根据访问请求中携带的应用服务器的标识将提取出的内容数据发送给应用服务器。需要说明的是,上述步骤S404中,第二存储节点也可以将内容数据返回给第一存储节点,由第一存储节点将内容数据转发给应用服务器。在图4所示的访问过程中,应用服务器可以通过分布式算法找到内容数据的管理数据,从而通过管理数据找到内容数据。也就是说,在本发明实施例中,内容数据的存取可以脱离分布式算法的限制,而依据各存储节点各自的能力进行分布,提高了资源的可用性。此外,采用本发明实施例的方案,还可以进一步对分布式存储系统的扩容进行优化。根据上述实施例可知,分布式系统中存储有内容数据以及各内容数据的管理数据。每个管理数据中包括与该管理数据对应的内容数据的存储位置。管理数据通过分布式算法分布在所述分布式存储系统的各存储节点中。内容数据按照各存储节点的容量负载和流量负载进行分布。在所述分布式存储系统扩容时,本发明实施例可以只对管理数据进行迁移,而不迁移内容数据。具体的,分布式存储系统可以通过分布式算法对各内容数据的分布进行重新计算。扩容时采用的分布式算法可与写入内容数据时采用的分布式算法一致。在计算出的应归属于扩容存储节点的内容数据后,分布式系统将计算出的应归属于扩容存储节点的内容数据保留在存储该内容数据的原存储节点,而将计算出的该内容数据的管理数据迁移到扩容存储节点。图5为本发明实施例提供的分布式存储系统进行扩容的示意图。如图5所示,扩容前,分布式存储系统中包括标识为node1的存储节点和标识为node2的存储节点。其中,node1中存储了内容数据C1、C3、Cn、Cn+3、Cm,node2存储了C2、Cn+1、Cm+1。扩容时,增加了标识为node3的存储节点。扩容后,根据分布式算法,内容数据C2、Cn+2、Cn+3、Cm应归属node3。因此,分布式存储系统将内容数据C2、Cn+2、Cn+3、Cm的管理数据迁移至node3中。下面以DHT算法为例,对扩容后,内容数据的分布如何变化进行详细说明。例如,在图2-3所示的实施例中,添加一个新的存储节点NODE4,通过对应的哈希算法得到KEY4,并映射到环中,如图6所示。通过按顺时针转动的规则,那么object2应该归属到NODE4中,其它内容数据则还保持原有的存储位置。由上述实施例可知,分布式算法的核心价值是可以根据内容数据的信息和分布式存储系统中的存储节点的信息计算出内容数据归属的存储节点。当新增一个存储节点时,分布式算法所计算的结果将会发生变化。所以新增一个存储节点后,需要将原存储节点中的部分内容数据迁移到新存储节点后,才能让新增的存储节点上线提供服务。但是,由于存储节点的存储空间非常大,通常计算出的要迁移的内容数据的量也非常大,这就导致迁移耗时长,严重超出扩容操作的时间窗。而在本发明实施例中,通过为每个内容数据创建管理数据,在扩容时,仅对管理数据进行迁移,而不真正迁移内容数据本身。由于管理数据远小于内容数据本身,因此迁移量非常小,大大缩短了迁移时长,使得分布式存储系统在扩容后可以快速的提供服务。此外,由于不同存储介质的存储能力和岀流能力不同,势必存在存储能力相对更强或者岀流能力相对更强的节点。因此,为了提高对内容数据的操作效率,本发明另一个实施例中,对内容数据的分布进行了进一步的优化。具体的,可以将热内容数据迁移到岀流能力强的存储节点,将冷内容数据迁移到存储能力强的存储节点。下面该迁移过程在进行详细介绍。A,分布式存储系统分析各存储节点的迁移关系。分布式存储系统中的各存储节点可采用选举算法从各存储节点中选择出一个决策节点,由该决策节点来分析各存储节点的迁移关系。选举的过程可采用现有的选举算法来实现,这里不再赘述。决策节点可以将各存储节点按流量负载排序,并按照流量负载大的存储节点向流量负载小的存储节点迁移热内容数据的原则,确定出各存储节点间的第一迁移关系。该第一迁移关系中包括结成迁移对的迁入存储节点和迁出存储节点。该第一迁移关系可以以迁移对集合来表示。假设分布式存储系统中有Node1-Node5五个存储节点,按照容量负载从小到大的排序序列为{Node1>Node2>Node3>Node4>Node5},本实施例中将该序列记为O-Hot。根据序列O-Hot,可将Node1与Node5结成迁移对,Node2与Node4结成迁移对。Node1与Node5结成的迁移对可表示为Pair1{Node1-->Node5},Node2与Node4结成的迁移对可表示为Pair2{Node2-->Node4}。其中,箭头符号代表的是迁移方向。第一迁移关系可表示为Set{Pair1,Pair2}。决策节点也可以进一步将各存储节点按容量负载排序,并按照容量负载大的存储节点向容量负载小的存储节点迁移冷内容数据的原则,确定各存储节点间的第二迁移关系。该第二迁移关系中包括结成迁移对的迁入存储节点和迁出存储节点。同样的,第二迁移关系也可以以迁移对集合来表示。假设上述Node1-Node5五个存储节点,按照容量负载从小到大的排序序列为{Node5>Node4>Node3>Node2>Node1},本实施例中将该序列记为O-Space。根据序列O-Space,可将Node1与Node5结成迁移对,Node2与Node4结成迁移对。Node1与Node5结成的迁移对可表示为Pair1’{Node1-->Node5},Node2与Node4结成的迁移对可表示为Pair2’{Node2-->Node4}。其中,箭头符号代表的是迁移方向。第二迁移关系可表示为Set{Pair1’,Pair2’}。B、分布式存储系统将迁移关系发送给迁移关系中的迁出节点。分布式存储系统中的决策节点可以将迁移关系中的迁移对分别发送给各迁移对中的迁出节点。C、迁出节点根据迁移关系识别出要迁移的内容数据。迁出节点在接收到决策节点发送的迁移对后,对本节点存储的内容数据按照访问热度进行排序。第一迁移关系中的迁出节点在对本节点的内容数据排序后,选择出访问热度最高的n(n值可配置)个内容数据作为要迁移的热内容数据,要迁移的热内容数据的集合,记为Setn-H。第二迁移关系中的迁出节点在对本节点的内容数据排序后,选择出访问热度最低的m(m值可配置)个内容数据要迁移的冷内容数据,要迁移的冷内容数据的集合,记为Setn-C。D、迁出节点将要迁移的内容数据通知与该迁出节点结对的迁入节点。E、迁入节点根据迁出节点通知的内容数据生成迁入列表。迁入列表可以由多条记录组成,记录格式为{NodeN,Cn}。其中,NodeN表示迁出节点,Cn表示迁移的内容数据。在另一实施例中,迁入节点还可以根据自身剩余的容量大小来确定迁出节点要迁移的内容数据中哪些可以接受,根据可接受的内容数据生成迁入列表。F、迁入节点根据迁入列表进行内容数据的搬迁。假设迁移对Pair2{Node2-->Node4}中,Node4生成的迁入列表为{Node2,C1}。Node4根据DHT计算C1的管理数据归属的存储节点为Node3,则C1的搬迁流程如下:1、Node4向Node2请求C1的数据内容。2、Node4请求到C1的内容数据后,向本节点写入C1的内容数据。3、Node4完成C1的内容数据的写入后,通知Node3修改C1的管理数据,将C1的存储位置修改为Node4。例如:{C1,热度,Node2}---->{C1,热度,Node4}4、Node4通知Node2的删除C1的内容数据。需要说明的是,热内容数据的迁移和冷内容数据的迁移可以根据需要择一进行,也可以两者都进行,这里不做限制。通过上述迁移过程,可以将热内容数据迁移到出流能力强的存储节点上,提高访问性能。另外,对于冷内容数据,则可以迁移到容量大的存储节点上,从而将出流能力强的存储节点的容量空间释放给热内容数据,提高整个分布式存储系统的性能和利用率。图7示出了上述实施例中涉及的存储节点的一种可能的结构示意图。如图7所示,本实施例以接收应用服务器的写入内容数据的请求的存储节点为例进行说明,本实施例中将该存储节点称为第一存储节点。具体的,该第一存储节点包括:通信接口701,数据管理器702、迁移管理器703以及存储器704。其中,通信接口701用于和应用服务器和/或其它存储节点交互。例如,通信接口701可以接收应用服务器发送的写入内容数据的请求,通知应用服务器将该内容数据写入到数据管理器702确定出的第二存储节点以及接收应用服务器对内容数据的访问请求。数据管理器702用于对要写入的内容数据进行分布管理,并对要访问的内容数据进行调度管理。对内容数据进行分布管理过程可参见方法实施例中基于存储节点的容量负载以及流量负载确定用于写入内容数据的第二存储节点以及创建该内容数据的管理数据部分,这里不再赘述。存储器704用于存储内容数据以及管理数据。迁移管理器703用于管理热内容数据和冷内容数据的迁移,也用于管理在分布式系统扩容时,对管理数据的迁移。具体的实现可参考方式实施例中迁移过程部分以及图5所示的扩容实施例部分,这里不再赘述。在本申请所提供的几个实施例中,应该理解到,所公开的系统和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、随机存取存储器(英文全称:RandomAccessMemory,简称:RAM)、磁碟或者光盘等各种可以存储数据的介质。本发明实施例还提供了另一种计算机存储介质,用于储存为上述存储节点所用的计算机软件指令,其包含用于执行上述图3所示方法实施例所设计的程序。本发明实施例还提供了另一种计算机存储介质,用于储存为上述分布式存储系统所用的计算机软件指令,其包含用于执行上述图5以及迁移方法实施例所设计的程序。通过执行存储的程序,可以实现扩容迁移和冷热内容数据的迁移。本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过Internet或其它有线或无线电信系统。本发明是参照本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1