CN102413156A - 一种分布式数据存储***和方法 - Google Patents
一种分布式数据存储***和方法 Download PDFInfo
- Publication number
- CN102413156A CN102413156A CN2010102915666A CN201010291566A CN102413156A CN 102413156 A CN102413156 A CN 102413156A CN 2010102915666 A CN2010102915666 A CN 2010102915666A CN 201010291566 A CN201010291566 A CN 201010291566A CN 102413156 A CN102413156 A CN 102413156A
- Authority
- CN
- China
- Prior art keywords
- module
- storage
- request
- data
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种分布式数据存储***和方法。该分布式数据存储***包括:接口机进程模块,用于从存储请求方接收存储请求并分发所述存储请求,所述存储请求包含待存储的数据;至少一个服务进程模块,用于分配存储标识并提供数据存储服务,所述至少一个服务进程模块之一从所述接口机进程模块接收所述存储请求,并为所述存储请求中包含的所述数据分配存储标识;和至少一个存储模块,用于根据所述至少一个服务进程模块之一分配的所述存储标识存储所述数据。本发明的分布式存储方法和***可以为用户提供稳定、高并发的海量数据存储、读写服务。
Description
技术领域
本发明一般涉及计算机软件及互联网技术领域,尤其是涉及一种分布式数据存储***和方法。
背景技术
UGC(用户生成内容,Users Generate Content)是一种用户使用互联网的新方式,即由原来的以下载为主变成下载和上传并重。例如,社区网络、视频分享和博客等都是UGC的主要应用形式。随着全球互联网业务的不断发展,UGC业务正在日渐崛起,引起了业界的广泛关注。
由于数据是用户产生的,海量的用户催生出海量的数据,同时又会带来海量的读写量。如何存储这些数据,如何提供高并发的读写服务,是技术领域必然面临的问题。
图1示出了现有的分布式数据存储***的***架构100,包括存储标识(ID)分配***(或者说ID放号***)120和数据存储***130。
存储标识分配***120***负责在存储请求方请求存储数据时为待存储的数据分配存储标识。存储标识分配***120保证存储标识的全局唯一性,并让存储标识在某个或某些存储标识段(在某些号段范围)内有一定的随机性,一定程度上保证了数据存储***130的负载均衡。
数据存储***130负责数据的存储并提供读写服务,其包括接口机进程模块131、多个服务进程模块132和多个存储模块133。接口机进程模块用于接收存储请求方110发送的包含存储标识的读写、存储请求,并把读写、存储请求分发到对应的服务进程模块132上,同时把服务进程模块132的部署细节对外屏蔽掉;每个服务进程模块132负责某个或某些存储标识段内的数这些数据的读写服务,并在将数据成功存储后向存储请求110响应成功应答;存储模块133,用于根据服务进程模块132的指示存储、读写数据。
图2是现有技术的分布式数据存储方法200的示意性流程图。
参见图2,当增加一条新数据时,上述分布式数据存储方法包括如下步骤:
步骤210:存储标识分配***为待存储的数据分配唯一的存储标识;
步骤220:存储请求方根据分配的存储标识提交包含数据的请求至接口机进程模块;
步骤230:接口机进程模块根据存储标识所属的存储标识段转发存储请求至对应的服务进程模块;
步骤240:服务进程模块根据存储标识指示存储模块存储数据,并向存储请求方响应成功应答。
另外,当读取一条数据时,上述分布式数据存储方法还可以包括如下步骤:存储请求方提交包含存储标识的读取请求至接口机进程模块,接口机进程模块根据存储标识所属的存储标识段分发写入请求至对应的服务进程模块,服务进程模块根据存储标识指示存储模块向存储请求方返回该数据。
进一步,当写入一条数据时,上述分布式数据存储方法还可以包括如下步骤:存储请求方提交包含存储标识和待修改内容的写入请求至接口机进程模块,接口机进程模块根据存储标识所属的存储标识段分发写入请求至对应的服务进程模块,服务进程模块指示存储模块写入修改的内容。
以上分布式数据存储***具有如下不足之处:
1.耦合性高。数据存储***对存储标识分配***有依赖关系。首先,存储标识分配***需要保证存储标识的均匀性和随机性,一旦存储标识分配***的随机性被打破,可能导致某个服务进程模块所执行的进程因写请求量突增而被压垮;而且当存储标识分配***出现单点故障时,整个分布式数据存储***的存储请求都无法完成。
2.设计复杂。两个***同等重要,为了保证对外的正常服务,两者都需要进行各种容灾设计。
3.耦合性和设计的复杂度直接导致运维成本增加。
4.针对新增请求,存在单点故障。当某个服务进程模块所执行的进程挂掉时,其针对所负责的存储标识段的新增请求会失败。
5.增加了带宽成本。每次新增数据时,都要先获取存储标识后才能进行实际存储,比直接存储多了一次交互,带宽成本倍增。
可见,需要有一种简单、高效、低成本的存储服务模型来解决上述技术问题,以便为用户提供稳定、高并发的海量数据存储、读写服务。而这样的存储服务模型也将为该技术领域带来意义深远的变革。
发明内容
有鉴于此,本发明提供了一种新分布式数据存储***和方法,可以为用户提供稳定、高并发的海量数据存储、读写服务。
本发明的技术方案具体是这样实现的:
根据本发明的实施例的一种分布式数据存储***,包括:接口机进程模块,用于从存储请求方接收存储请求并分发所述存储请求,所述存储请求包含待存储的数据;至少一个服务进程模块,用于分配存储标识并提供数据存储服务,所述至少一个服务进程模块之一从所述接口机进程模块接收所述存储请求,并为所述存储请求中包含的所述数据分配存储标识;和至少一个存储模块,用于根据所述至少一个服务进程模块之一分配的所述存储标识存储所述数据。
所述接口机进程模块可以进一步维护可用服务进程模块列表,并且所述接口机进程模块从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一,并将所述存储请求转发给所述至少一个服务进程模块之一。
所述接口机进程模块可以通过确定并删除所述可用服务进程模块列表中不能够提供新增存储服务的服务进程模块来维护可用服务进程模块列表。
所述接口机进程模块可以进一步记录上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,并基于所述上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
所述接口机进程模块可以进一步随机从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
所述至少一个服务进程模块之一可以进一步在将所述数据存储在所述至少一个存储模块之后,向所述存储请求方响应成功应答,并且所述成功应答包括所述存储标识。
所述接口机进程模块可以进一步从所述存储请求方接收包含所述存储标识的读取请求,并根据包含在所述存储请求中的所述存储标识将所述读取请求转发给所述至少一个服务进程模块之一,所述至少一个服务进程模块之一根据包含在所述读取请求中的所述存储标识指示所述至少一个存储模块将存储在所述至少一个存储模块中的所述数据返回给所述存储请求方。
所述接口机进程模块可以进一步从所述存储请求方接收包含所述存储标识和待修改的内容的写入请求,并根据包含在所述写入请求中的所述存储标识将所述写入请求转发给所述至少一个服务进程模块之一,所述至少一个服务进程模块之一根据包含在所述写入请求中的所述存储标识和待修改的内容指示所述至少一个存储模块修改存储在所述至少一个存储模块中的所述数据。
所述至少一个服务进程模块之一可以在至少一段连续标识内按照存储标识的顺序或随机为所述存储请求中包含的所述数据分配所述存储标识。
所述分布式数据存储***可以进一步包括:另一接口机进程模块,用于与所述接口机进程模块协同接收和分发所述存储请求。
根据本发明的另一实施例的一种分布式数据存储方法,包括:接口机进程模块从存储请求方接收存储请求,并分发所述存储请求,所述存储请求包含待存储的数据;至少一个服务进程模块之一从所述接口机进程模块接收所述存储请求,并为所述存储请求中包含的所述数据分配存储标识;并且至少一个存储模块根据所述至少一个服务进程模块之一分配的所述存储标识存储所述数据。
所述分布式数据存储方法可以进一步包括:所述接口机进程模块维护可用服务进程模块列表,其中分发所述存储请求包括:从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一,并将所述存储请求转发给所述至少一个服务进程模块之一。
维护可用服务模块列表可以包括:确定并删除所述可用服务进程模块列表中不能提供新增存储服务的服务进程模块。
所述分布式数据存储方法可以进一步包括:所述接口机进程模块记录上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,其中从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一包括:基于上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一包括:随机从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
所述分布式数据存储方法可以进一步包括:所述至少一个服务进程模块之一在将所述数据存储在所述至少一个存储模块之后,向所述存储请求方响应成功应答,并且所述成功应答包含所述存储标识。
所述分布式数据存储方法可以进一步包括:所述接口机进程模块从所述存储请求方接收包含所述存储标识的读取请求,并根据包含在所述读取请求中的所述存储标识将所述读取请求转发给所述至少一个服务进程模块之一;并且所述至少一个服务进程模块之一根据包含在所述读取请求中的所述存储标识指示所述至少一个存储模块将存储在所述至少一个存储模块中的所述数据返回给所述存储请求方。
所述分布式数据存储方法可以进一步包括:所述至少一个接口机进程模块之一从所述存储请求方接收包含所述存储标识和待修改的内容的写入请求,并根据包含在所述写入请求中的所述存储标识将所述写入请求转发给所述至少一个服务进程模块之一;并且所述至少一个服务进程模块之一根据包含在所述写入请求中的所述存储标识和待修改的内容指示所述存储至少一个存储模块对存储在所述至少一个存储模块中的所述数据进行修改。
为所述存储请求中包含的所述数据分配存储标识可以包括:在至少一段标识内,按照存储标识的顺序或随机为所述存储请求中包含的所述数据分配所述存储标识。
所述分布式数据存储方法可以进一步包括:所述接口机进程模块与另一接口机进程模块协同接收和分发所述存储请求。
从上述方案可以看出,本发明通过在各个服务进程模块中分配存储标识避免了使用专门的存储标识分配***,从而因为存储标识分配***的故障而使整个分布式存储***无法正常工作,并且为用户提供了简单、高效、低成本的存储服务。
附图说明
附图与说明书一起示出本发明的示例性实施例,并且与描述一起用于解释本发明的原理;
图1示出了现有的分布式数据存储***的***架构;
图2是现有的分布式数据存储方法的示意性流程图;
图3示出了根据本发明实施例的分布式数据存储***的***架构;
图4是示出根据本发明另一实施例的分布式数据存储方法的示意性流程图;
图5是示出根据本发明另一实施例的分布式数据存储方法的示例性流程图;
图6是示出根据本发明另一实施例的选择可用服务进程模块的方法的示例性流程图;和
图7是示出根据本发明另一实施例的选择可用服务进程模块的方法的示例性流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
在本发明的分布式数据存储方案中,提出了一种新的分配存储标识的方法,并设计了一种分布式的后台服务架构模型。在本发明的分配存储标识方案中,不再使用存储标识分配***,改由各个服务进程模块直接负责存储标识的分配,在这种方案下,服务性能没有丝毫降低,但***的整体复杂度、耦合性、带宽成本都大幅降低。
以上是本发明的总体构思,下面将详细给出示例性的实施方案,以便于本领域人员理解本发明。
图3示出了根据本发明实施例的分布式数据存储***的***架构300。
下面将参见图3描述根据本发明的实施例的分布式数据存储***330的结构。分布式数据存储***330包括:接口机进程模块331、至少一个服务进程模块332和至少一个存储模块333。接口机进程模块331用于从存储请求方310接收包含待存储的数据的存储请求,并向服务进程模块332分发存储请求。服务进程模块332用于分配存储标识并提供数据存储服务,其从接口机进程模块331接收存储请求,并为存储请求中包含的数据分配存储标识。存储模块333用于根据服务进程模块332分配的存储标识存储数据。
下面详细说明根据本发明的示例性实施例的接口机进程模块331、服务进程模块332和存储模块333的功能。
为了使得分布式数据存储***330在增加新数据时不会因为服务进程模块332不能接收新数据而存储失败,可以在接口机进程模块331中维护可用服务进程模块列表。例如,接口机进程模块331通过确定并删除可用服务进程模块列表中不能够提供新增存储服务的服务进程模块332来维护可用服务进程模块列表。实际上,接口机进程模块331可以通过多种方法判断服务进程模块332是否可用并更新可用服务进程模块列表。例如,接口机进程模块331可以维护一个状态为“可追加”的服务进程模块的列表,在该列表里列出的每个服务进程模块的“可追加”状态都是有效的。可以在接口机进程模块332中采用轮循方式周期性地向各服务进程模块确认其“可追加″状态是否是有效的。可替代地,可以从服务进程模块332周期性地向接口机进程模块报331告其“可追加”状态是否是有效的。当然,可替代地,也可以不删除该列表中不能提供新增储服务的服务进程模块332,而是根据该列表中记录的服务进程模块332的状态来确定该模块是否可用。本发明并不限于上述维护可用服务进程模块列表的方式。
接口机进程模块331在接收到存储请求时,可以从上述可用服务进程模块列表中选择一个可用的服务进程模块332,并将存储请求转发给该可用的服务进程模块332。例如,当某个服务进程模块332执行的服务进程挂掉时,该服务进程模块的“可追加”状态不再有效,接口机进程模块331便不再分发新增请求至该服务进程模块,并把存储请求均摊到其余可用的服务进程模块332上,以保证新增服务的可用性。再例如,当某个服务进程模块332分配完毕其所负责的所有存储标识时,接口机进程模块认为该服务进程模块不再可用,并且不再向其分发存储请求。另外,当某个服务进程模块332分配完其所负责的存储标识时,其“可追加”状态也不再有效。
进一步,接口机进程模块331可以采用多种方式从“可追加”服务进程模块列表中选择可用服务进程模块。
例如,为了使得各服务进程模块332的负载均衡,根据本发明的示例性实施例可以进一步记录上一次存储数据时从可用服务进程列表中选择的服务进程模块的标识,并基于上一次存储数据时从可用服务进程列表中选择的服务进程模块的标识,从可用服务进程模块列表中选择可用的服务进程模块。例如,记录上次被分发存储请求的服务进程模块的下标(即上一次存储请求分发给了哪个服务进程模块),从而实现在所有“可追加”状态有效的服务进程模块中逐次分发新增存储请求,以保证各服务进程模块的负载均衡。另外,接口机进程模块331还可以随机从可用服务进程模块列表中选择可用的服务进程模块。本发明并不限于上述选择可用服务进程模块的方式。
每个服务进程模块332可以各自负责某个或某些存储标识段(或号段)的存储标识的分配和数据服务,各个服务进程模块之间相互独立。例如,规定十万个连续存储标识为一个存储标识段,则存储标识段和存储标识的计算公式可以表示为:UnitID=[ID/100000]+1,例如1至99999的存储标识属于存储标识段1。可以为每个服务进程模块定义三种子状态:可读、可写、可追加。“可读”表明该服务进程模块可以提供数据读取服务,“可写”表明该服务进程模块可以提供数据修改服务,“可追加”表名该服务进程模块可以提供新增数据服务。服务进程模块的状态可以由这三种子状态任意组合而成(“和/或”的关系)。
具体来说,服务进程模块332除了提供正常的读写功能外,还在至少一段连续存储标识内按照存储标识的顺序或随机地为存储请求中包含的数据分配存储标识。例如,服务进程模块332在自己负责的存储标识段内为数据分配存储标识。具体分配规则可以采用从小到大逐次分配存储标识的方式。假设十万的连续存储标识为一个存储标识段,具体存储标识分配举例如下:假设服务进程模块i负责的存储标识段为6和8,则该进程放出的第一个存储标识为500000,第二个存储标识为500001,依次类推,当放到599999时,存储标识段6内的存储标识分配完毕,下一个存储标识为800000,依次类推,当所有的存储标识段都分配完毕时,该服务进程模块不能再新增数据,或者说其“可追加”状态失效。
存储模块333可以是各种计算机存储介质,例如固态硬盘(SSD,SolidState Disk)和硬盘驱动器(Hard Disk Drive,HDD)等等。本领域技术人员知道存储模块333是如何根据存储标识存储数据的,因此这里不再详细描述其具体的技术细节。
进一步,根据本发明的另一示例性实施例,服务进程模块332进一步用于在将数据存储在存储模块333之后,向存储请求方310响应成功应答消息,并且该成功应答消息包含为该数据分配的存储标识。
根据本发明的另一实施例,接口机进程模块331可以进一步从存储请求方310接收包含存储标识的读取请求,并根据包含在存储请求中的存储标识将读取请求转发给之前分配该存储标识的服务进程模块332,服务进程模块332根据包含在读取请求中的存储标识指示存储模块333将存储在存储模块333中的数据返回给数据存储请求方。
根据本发明的另一实施例,接口机进程模块331进一步从存储请求方310接收包含存储标识及待修改的内容的写入请求,并根据包含在写入请求中的存储标识将写入请求转发给之前分配该存储标识的服务进程模块332,服务进程模块332根据包含在写入请求中的存储标识指示存储模块333对存储在存储模块333中的数据进行修改。
在上述方案中,虽然图3仅仅示出了一个接口机进程模块331,但本发明并不限于此。根据本发明的另一实施例,分布式数据存储***还可以包括多个接口机进程模块。多个接口机进程模块可以协同工作,以完成存储请求的接收和分发。例如,多个接口机进程模块可以采用容灾设计,也可以分别负责向一部分可用服务进程模块分发存储请求,或者协同起来向所有可用服务进程模块分发存储请求,以增加***的可靠性和灵活性。
另外,图3仅仅示意性地示出了根据本发明的分布式存储***的上述各个模块在逻辑上的连接关系,实际上,上述模块可以位于在物理上相同或不同的计算机或网络***中。一个服务进程模块可以将数据存储在一个或多个存储模块上,一个存储模块也可以接收多个服务进程模块分配的数据。
还需要说明的是,存储请求方可以是各种形式的需要数据服务的一方,例如可以是网络、服务器或客户端等等发出数据服务请求的设备或***。在读取数据时,存储请求方也可以称为读取请求方,而在写入数据时,存储请求方也可以称为写入请求方。
图4是示出根据本发明另一实施例的分布式数据存储方法400的示意性流程图。
参见图4,根据本发明的实施例的分布式数据存储方法400包括如下步骤:
S410:接口机进程模块从存储请求方接收存储请求,并向至少一个服务进程模块中的一个服务进程模块分发存储请求,其中在存储请求中包含待存储的数据。
S420:该服务进程模块从接口机进程模块接收存储请求,并为存储请求中包含的数据分配存储标识。
S430:至少一个存储模块根据该服务进程模块分配的存储标识存储数据。
在本发明的实施例中,接口机进程模块可以采用多种方式向服务进程模块分发存储请求,而服务进程模块也可以采用多种方式分配存储标识。下文中将结合具体的示例性实施例进行详细的说明。
图5是示出根据本发明另一实施例的分布式数据存储方法500的示例性流程图。
参见图5,根据本发明的示例性实施例的分布式数据存储方法500包括如下步骤:
S510:接口机进程模块从存储请求方接收包含待存储的数据的存储请求。该存储请求的实现类似于图2中的存储请求,所不同的是该存储请求中不包含存储标识。
S520:接口机进程模块从可用服务进程模块列表中选择一个可用服务进程模块。如上述在根据本发明的分布式数据存储***的实施例中描述的那样,接口机进程模块可以通过多种方式维护可用服务进程模块列表,例如,可以确定并删除所述可用服务进程模块列表中不能提供新增存储服务的服务进程模块来维护可用服务进程查模块列表。进一步,接口机进程模块可以记录上一次存储数据时从可用服务进程列表中选择的服务进程模块的标识,并且基于上一次存储数据时从可用服务进程列表中选择的服务进程模块的标识,从可用服务进程模块列表中选择可用于分发当前存储请求的服务进程模块。另外,接口机进程模块也可以随机地从可用服务进程模块列表中选择可用的服务进程模块。根据本发明的实施例的选择可用服务进程模块的具体方法流程图详见对图6和图7的描述。
S530:接口机进程模块将存储请求转发给选中的该可用服务进程模块。
S540:被选中的可用服务进程模块为该存储请求中包含的数据分配存储标识。服务进程模块可以在至少一段连续存储标识内按照存储标识的顺序或随机地为存储请求中包含的数据分配存储标识。具体的分配方法详见根据本发明的***实施例中关于存储标识的分配的描述。
S550:存储模块根据该服务进程模块分配的存储标识存储数据。本领域技术人员可以知道如何根据存储标识存储数据,这里不再详细描述。
以上是实现根据本发明实施例的分布式存储方法的基本流程。为了完善数据的存储、读写服务,根据本发明的另一实施例可以进一步包括如下步骤:
S560:服务进程模块在将数据存储在存储模块之后,向存储请求方响应成功应答消息。该成功应答消息包含可以告诉存储请求方已经成功存储数据的信息,并且可以包括存储标识,以供将来读取和写入数据使用。
当读取数据时,根据本发明的示例性实施例进一步包括如下步骤:
S570:接口机进程模块从存储请求方接收包含存储标识的读取请求。
S572:接口机进程模块根据包含在存储请求中的存储标识将读取请求转发给之前分配该存储标识的服务进程模块。
S574:接口机进程模块根据包含在读取请求中的存储标识向存储模块读取数据。
S576:存储模块根据存储标识将数据返回给存储请求方。
当写入数据时,根据本发明的示例性实施例进一步包括如下步骤:
S580:接口机进程模块从存储请求方接收包含存储标识和待修改的数据的写入请求。
S582:接口机进程模块根据包含在存储请求中的存储标识将写入请求转发给之前分配该存储标识的服务进程模块。
S584:该服务进程模块根据包含在读取请求中的存储标识和待修改的内容向存储模块写入数据,以使得存储模块可以修改存储在其上的数据。
图6是示出根据本发明另一实施例的选择可用服务进程模块的方法600的示例性流程图。
参见图6,图5中的选择可用服务进程模块的方法520可以包括如下步骤:
S610:接口机进程模块获取下一服务进程模块的状态。接口机进程模块可以按照服务进程模块的标识的顺序,以一定的周期,循环地查询各个服务进程模块的状态。也可以由各个服务进程模块向接口机进程模块报告其当前的状态。
S620:接口机进程模块确定服务器进程模块是否可用?例如,是否可追加新数据?如果是,则执行步骤S610,继续查询下一个服务进程模块是否可用。如果否,则执行步骤S630。
S630:从可用服务进程列表中删除不可用的服务进程模块。
步骤S610至步骤630可以周期性地执行,以维护可用服务进程模块列表,保证可用服务进程列表中的服务进程模块是可用的,或者说是可追加新数据的。
根据本发明的实施例,当存储请求方发出存储请求时,接口进程模块可以执行下列步骤:
S640:接口机进程模块从数据请求方接收存储请求。
S650:接口机进程模块给变量ID赋值,使它等于上一次提供存储数据服务的服务进程模块的标识(ID)。例如,可以为服务进程模块分配连续的ID,例如可以是1到n的自然数,在这种情况下,当第一次执行数据存储时,上一次存储数据的服务进程模块的ID是0。
S660:使得ID=ID+1。执行这一步的目的是为了能够按照顺序依次选择可用服务进程模块。
S670:如果ID>IDmax,则执行步骤S695,否则继续执行步骤680。在这里,IDmax表示服务进程模块中ID值最大的服务进程模块的ID。
S680:接口机进程模块确认标识为ID的服务进程模块是否在列表中?如果不在,则执行步骤660,继续查看下一个(标识为ID+1)的服务进程模块是否在列表中。如果在,则继续执行步骤690。
S690:选择标识为ID的服务进程模块作为接收存储请求的服务进程模块。
S695:使得ID=0并执行步骤660。如果标识变量ID>IDmax,说明接口机进程模块已经完成一轮向标识为从1至n的服务进程模块分发存储请求,因此,可以开始下一轮向标识为从1至n的服务进程模块分发存储请求。
上述选择可用服务进程模块的方法可以保证各服务进程模块的负载均衡,但本发明选择可用服务进程模块的方法并不限于此。
图7是示出根据本发明另一实施例的选择可用服务进程模块的方法700的示例性流程图。
参见图7,在图5中描述的选择可用服务进程模块的方法520可以具体包括如下步骤:
S710:接口机进程模块获取下一服务进程模块的状态。
S720:接口机进程模块确定服务器进程模块是否可用?例如,是否可追加新数据?如果是,则执行步骤S710,继续查询下一个服务进程模块是否可用。如果否,则执行步骤S730。
S730:从可用服务进程列表中删除不可用的服务进程模块。
步骤S710至步骤730与步骤S610至步骤630类似,可以周期性地执行,以维护可用服务进程模块列表,保证可用服务进程列表中的服务进程模块是可用的,或者说是可追加新数据的。
根据本发明的实施例,当存储请求方发出存储请求时,接口进程模块可以执行下列步骤:
S740:接口模块从数据请求方接收存储请求。
S750:接口模块随机地从可用服务进程模块列表中选择可用的服务进程模块。
另外,根据本发明的另一实施例,在存在多个接口机进程模块时,各个接口机进程模块可以与其它接口机进程模块协同接收和分发存储请求。多个接口机进程模块可以采用容灾设计,可以分别负责维护一部分可用服务进程模块的列表,还可以共同维护同一可用服务进程模块列表,以增加***的可靠性和灵活性。
本发明的上述实施例采用的这种分存式数据存储方案不再使用专门的存储标识分配***,这样分布式数据存储***不再有外部依赖模块,彻底解耦合,从而不会因为存储标识分配***故障而使整个分布式存储***无法正常工作。
另外,运用本发明提出的这种分存式数据存储***或方法的方案还具有如下优点:1)因为不再使用专门的存储标识分配***,进而也不再需要为其进行容灾设计,所以设计简单;2)由于不存在与专门的存储标识分配***的耦合性并且设计简单,因此运行维护成本降低;3)由于可以仅将新增存储请求分发给可用的服务进程模块,因此不存在服务进程模块单点故障的问题;以及4)由于不再进行与存储标识分配***的交互,所以带宽成本减降低。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (20)
1.一种分布式数据存储***,包括:
接口机进程模块,用于从存储请求方接收存储请求并分发所述存储请求,所述存储请求包含待存储的数据;
至少一个服务进程模块,用于分配存储标识并提供数据存储服务,所述至少一个服务进程模块之一从所述接口机进程模块接收所述存储请求,并为所述存储请求中包含的所述数据分配存储标识;和
至少一个存储模块,用于根据所述至少一个服务进程模块之一分配的所述存储标识存储所述数据。
2.根据权利要求1所述的分布式数据存储***,其中所述接口机进程模块进一步维护可用服务进程模块列表,并且所述接口机进程模块从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一,并将所述存储请求转发给所述至少一个服务进程模块之一。
3.根据权利要求2所述的分布式数据存储***,其中所述接口机进程模块通过确定并删除所述可用服务进程模块列表中不能够提供新增存储服务的服务进程模块来维护可用服务进程模块列表。
4.根据权利要求3所述的分布式数据存储***,其中所述接口机进程模块进一步记录上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,并基于所述上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
5.根据权利要求2所述的分布式数据存储***,其中所述接口机进程模块进一步随机从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
6.根据权利要求1所述的分布式数据存储***,其中所述至少一个服务进程模块之一进一步在将所述数据存储在所述至少一个存储模块之后,向所述存储请求方响应成功应答,并且所述成功应答包括所述存储标识。
7.根据权利要求6所述的分布式数据存储***,其中所述接口机进程模块进一步从所述存储请求方接收包含所述存储标识的读取请求,并根据包含在所述存储请求中的所述存储标识将所述读取请求转发给所述至少一个服务进程模块之一,所述至少一个服务进程模块之一根据包含在所述读取请求中的所述存储标识指示所述至少一个存储模块将存储在所述至少一个存储模块中的所述数据返回给所述存储请求方。
8.根据权利要求6所述的分布式数据存储***,其中所述接口机进程模块进一步从所述存储请求方接收包含所述存储标识和待修改的内容的写入请求,并根据包含在所述写入请求中的所述存储标识将所述写入请求转发给所述至少一个服务进程模块之一,所述至少一个服务进程模块之一根据包含在所述写入请求中的所述存储标识和待改的内容指示所述至少一个存储模块修改存储在所述至少一个存储模块中的所述数据。
9.根据权利要求1所述的分布式数据存储***,其中所述至少一个服务进程模块之一在至少一段连续标识内按照存储标识的顺序或随机为所述存储请求中包含的所述数据分配所述存储标识。
10.根据权利要求1所述的分布式数据存储***,进一步包括:另一接口机进程模块,用于与所述接口机进程模块协同接收和分发所述存储请求。
11.一种分布式数据存储方法,包括:
接口机进程模块从存储请求方接收存储请求,并分发所述存储请求,所述存储请求包含待存储的数据;
至少一个服务进程模块之一从所述接口机进程模块接收所述存储请求,并为所述存储请求中包含的所述数据分配存储标识;并且
至少一个存储模块根据所述至少一个服务进程模块之一分配的所述存储标识存储所述数据。
12.根据权利要求11所述的分布式数据存储方法,进一步包括:
所述接口机进程模块维护可用服务进程模块列表,其中分发所述存储请求包括:
从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一,并将所述存储请求转发给所述至少一个服务进程模块之一。
13.根据权利要求12所述的分布式数据存储方法,其中维护可用服务模块列表包括:
确定并删除所述可用服务进程模块列表中不能提供新增存储服务的服务进程模块。
14.根据权利要求13所述的分布式数据存储方法,进一步包括:
所述接口机进程模块记录上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,其中从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一包括:
基于上一次存储数据时从所述可用服务进程列表中选择的服务进程模块的标识,从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
15.根据权利要求12所述的分布式数据存储方法,其中从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一包括:
随机从所述可用服务进程模块列表中选择所述至少一个服务进程模块之一。
16.根据权利要求11所述的分布式数据存储方法,进一步包括:
所述至少一个服务进程模块之一在将所述数据存储在所述至少一个存储模块之后,向所述存储请求方响应成功应答,并且所述成功应答包含所述存储标识。
17.根据权利要求16所述的分布式数据存储方法,进一步包括:
所述接口机进程模块从所述存储请求方接收包含所述存储标识的读取请求,并根据包含在所述读取请求中的所述存储标识将所述读取请求转发给所述至少一个服务进程模块之一;并且
所述至少一个服务进程模块之一根据包含在所述读取请求中的所述存储标识指示所述至少一个存储模块将存储在所述至少一个存储模块中的所述数据返回给所述存储请求方。
18.根据权利要求16所述的分布式数据存储方法,进一步包括:
所述至少一个接口机进程模块之一从所述存储请求方接收包含所述存储标识和待修改的内容的写入请求,并根据包含在所述写入请求中的所述存储标识将所述写入请求转发给所述至少一个服务进程模块之一;并且
所述至少一个服务进程模块之一根据包含在所述写入请求中的所述存储标识和待修改的内容指示所述存储至少一个存储模块对存储在所述至少一个存储模块中的所述数据进行修改。
19.根据权利要求11所述的分布式数据存储方法,其中为所述存储请求中包含的所述数据分配存储标识包括:
在至少一段标识内,按照存储标识的顺序或随机为所述存储请求中包含的所述数据分配所述存储标识。
20.根据权利要求11所述的分布式数据存储方法,进一步包括:
所述接口机进程模块与另一接口机进程模块协同接收和分发所述存储请求。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010291566.6A CN102413156B (zh) | 2010-09-21 | 2010-09-21 | 一种分布式数据存储***和方法 |
PCT/CN2011/079879 WO2012037873A1 (zh) | 2010-09-21 | 2011-09-20 | 一种分布式数据存储***和方法 |
US13/632,427 US8930501B2 (en) | 2010-09-21 | 2012-10-01 | Distributed data storage system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010291566.6A CN102413156B (zh) | 2010-09-21 | 2010-09-21 | 一种分布式数据存储***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102413156A true CN102413156A (zh) | 2012-04-11 |
CN102413156B CN102413156B (zh) | 2014-04-16 |
Family
ID=45873438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010291566.6A Active CN102413156B (zh) | 2010-09-21 | 2010-09-21 | 一种分布式数据存储***和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8930501B2 (zh) |
CN (1) | CN102413156B (zh) |
WO (1) | WO2012037873A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034698A (zh) * | 2012-12-05 | 2013-04-10 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN103257930A (zh) * | 2013-05-14 | 2013-08-21 | 北京经纬恒润科技有限公司 | 一种基于dds的数据读、写方法及*** |
CN103617007A (zh) * | 2013-12-04 | 2014-03-05 | 深圳市华成峰实业有限公司 | 多级智能存储实现方法和*** |
CN103634350A (zh) * | 2012-08-24 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 一种存储***及其实现方法 |
CN103678008A (zh) * | 2012-09-24 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 数据读取方法及相应的数据读取装置 |
CN109327550A (zh) * | 2018-11-30 | 2019-02-12 | 网宿科技股份有限公司 | 一种访问请求的分配方法、装置、存储介质和计算机设备 |
CN111258560A (zh) * | 2018-11-30 | 2020-06-09 | 顺丰科技有限公司 | 数据存储装置、***及方法 |
CN111277634A (zh) * | 2020-01-14 | 2020-06-12 | 北京金山云网络技术有限公司 | 一种数据id分配方法、装置、***以及服务器 |
CN114281578A (zh) * | 2021-11-13 | 2022-04-05 | 苏州浪潮智能科技有限公司 | 分布式文件存储***交互方法、装置、计算机设备及介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177080B (zh) * | 2013-02-07 | 2016-03-30 | 华为技术有限公司 | 文件预读的方法和装置 |
KR102507837B1 (ko) * | 2017-11-14 | 2023-03-07 | 주식회사 케이티 | 데이터의 품질 관리 방법 및 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050027718A1 (en) * | 2003-07-29 | 2005-02-03 | Akihiko Sakaguchi | File management method in a distributed storage system |
CN101047610A (zh) * | 2007-04-30 | 2007-10-03 | 华为技术有限公司 | 数据存储、读取、传输方法和管理服务器及网络节点 |
CN101075864A (zh) * | 2007-07-16 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 数据同步方法及处理方法、客户端设备、服务器 |
CN101340327A (zh) * | 2008-08-21 | 2009-01-07 | 腾讯科技(深圳)有限公司 | 实现网络服务器负载均衡的方法、***和域名解析服务器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7239581B2 (en) * | 2004-08-24 | 2007-07-03 | Symantec Operating Corporation | Systems and methods for synchronizing the internal clocks of a plurality of processor modules |
US7287133B2 (en) * | 2004-08-24 | 2007-10-23 | Symantec Operating Corporation | Systems and methods for providing a modification history for a location within a data store |
US7577806B2 (en) * | 2003-09-23 | 2009-08-18 | Symantec Operating Corporation | Systems and methods for time dependent data storage and recovery |
TWI244081B (en) * | 2003-09-24 | 2005-11-21 | Mediatek Inc | Error compensation method and apparatus for optical disk drive |
US7421549B2 (en) * | 2004-03-02 | 2008-09-02 | Hitachi, Ltd. | Method and apparatus of remote copy for multiple storage subsystems |
JP4446839B2 (ja) * | 2004-08-30 | 2010-04-07 | 株式会社日立製作所 | ストレージ装置及びストレージ管理装置 |
US8086562B2 (en) * | 2008-06-30 | 2011-12-27 | Microsoft Corporation | Arrangement for anonymous API downloaded resources for advanced content |
US8341140B2 (en) * | 2009-07-03 | 2012-12-25 | Hitachi, Ltd. | Configuration management system and configuration management method for storage system |
-
2010
- 2010-09-21 CN CN201010291566.6A patent/CN102413156B/zh active Active
-
2011
- 2011-09-20 WO PCT/CN2011/079879 patent/WO2012037873A1/zh active Application Filing
-
2012
- 2012-10-01 US US13/632,427 patent/US8930501B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050027718A1 (en) * | 2003-07-29 | 2005-02-03 | Akihiko Sakaguchi | File management method in a distributed storage system |
CN101047610A (zh) * | 2007-04-30 | 2007-10-03 | 华为技术有限公司 | 数据存储、读取、传输方法和管理服务器及网络节点 |
CN101075864A (zh) * | 2007-07-16 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 数据同步方法及处理方法、客户端设备、服务器 |
CN101340327A (zh) * | 2008-08-21 | 2009-01-07 | 腾讯科技(深圳)有限公司 | 实现网络服务器负载均衡的方法、***和域名解析服务器 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634350A (zh) * | 2012-08-24 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 一种存储***及其实现方法 |
CN103634350B (zh) * | 2012-08-24 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 一种存储***及其实现方法 |
CN103678008B (zh) * | 2012-09-24 | 2017-12-22 | 腾讯科技(深圳)有限公司 | 数据读取方法及相应的数据读取装置 |
CN103678008A (zh) * | 2012-09-24 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 数据读取方法及相应的数据读取装置 |
CN103034698A (zh) * | 2012-12-05 | 2013-04-10 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN103034698B (zh) * | 2012-12-05 | 2016-03-30 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN103257930A (zh) * | 2013-05-14 | 2013-08-21 | 北京经纬恒润科技有限公司 | 一种基于dds的数据读、写方法及*** |
CN103257930B (zh) * | 2013-05-14 | 2016-04-06 | 北京经纬恒润科技有限公司 | 一种基于dds的数据读、写方法及*** |
CN103617007B (zh) * | 2013-12-04 | 2017-06-23 | 深圳市华云中盛科技有限公司 | 多级智能存储实现方法和*** |
CN103617007A (zh) * | 2013-12-04 | 2014-03-05 | 深圳市华成峰实业有限公司 | 多级智能存储实现方法和*** |
CN109327550A (zh) * | 2018-11-30 | 2019-02-12 | 网宿科技股份有限公司 | 一种访问请求的分配方法、装置、存储介质和计算机设备 |
CN111258560A (zh) * | 2018-11-30 | 2020-06-09 | 顺丰科技有限公司 | 数据存储装置、***及方法 |
CN109327550B (zh) * | 2018-11-30 | 2022-02-18 | 网宿科技股份有限公司 | 一种访问请求的分配方法、装置、存储介质和计算机设备 |
CN111258560B (zh) * | 2018-11-30 | 2024-04-16 | 顺丰科技有限公司 | 数据存储装置、***及方法 |
CN111277634A (zh) * | 2020-01-14 | 2020-06-12 | 北京金山云网络技术有限公司 | 一种数据id分配方法、装置、***以及服务器 |
CN111277634B (zh) * | 2020-01-14 | 2021-12-21 | 北京金山云网络技术有限公司 | 一种数据id分配方法、装置、***以及服务器 |
CN114281578A (zh) * | 2021-11-13 | 2022-04-05 | 苏州浪潮智能科技有限公司 | 分布式文件存储***交互方法、装置、计算机设备及介质 |
CN114281578B (zh) * | 2021-11-13 | 2024-01-16 | 苏州浪潮智能科技有限公司 | 分布式文件存储***交互方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2012037873A1 (zh) | 2012-03-29 |
US8930501B2 (en) | 2015-01-06 |
CN102413156B (zh) | 2014-04-16 |
US20130031221A1 (en) | 2013-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102413156B (zh) | 一种分布式数据存储***和方法 | |
CN109949111B (zh) | 电子票据标识分配方法、电子票据生成方法、装置及*** | |
JP4560115B2 (ja) | 配布管理方法、配布管理システム、および配布管理サーバ | |
US8069224B2 (en) | Method, equipment and system for resource acquisition | |
CN101841520B (zh) | 域名***以及域名***的信息处理方法、装置 | |
CN108287669A (zh) | 数据存储方法、装置及存储介质 | |
CN103078965B (zh) | 虚拟机的ip地址管理方法 | |
CN106446159B (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
CN107656695B (zh) | 一种数据存储、删除方法、装置及分布式存储*** | |
CN103116552A (zh) | 用于在分布式存储***中分配存储空间的方法和装置 | |
CN110134338B (zh) | 一种分布式存储***及其数据冗余保护方法和相关设备 | |
CN103152390A (zh) | 分布式存储***的节点配置方法、装置、节点及*** | |
CN103888424B (zh) | 集群式数据加密***及其数据处理方法 | |
CN111163186B (zh) | 一种id生成方法、装置、设备和存储介质 | |
CN106940712B (zh) | 序列生成方法与设备 | |
CN105978744B (zh) | 一种资源分配方法、装置及*** | |
JP2011166626A (ja) | 遠隔制御システム、ポーリング制御方法、及びプログラム | |
CN105450733A (zh) | 一种业务数据分发处理方法及*** | |
US20090138532A1 (en) | Method of file allocating and file accessing in distributed storage, and device and program therefor | |
JP2005099971A (ja) | 仮想テープ装置の入出力制御方法 | |
CN107493181B (zh) | 虚拟扩展端口的指示方法和装置 | |
JP2004126642A (ja) | ソフトウェアライセンス管理装置、ソフトウェアライセンス管理プログラム、ソフトウェアライセンス管理方法およびソフトウェアライセンス管理システム | |
CN107168645B (zh) | 一种分布式***的存储控制方法及*** | |
CN107066206B (zh) | 一种分布式物理磁盘的存储控制方法及*** | |
CN113672161A (zh) | 一种存储***及其建立方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151230 Address after: The South Road in Guangdong province Shenzhen city Fiyta building 518057 floor 5-10 Nanshan District high tech Zone Patentee after: Shenzhen Tencent Computer System Co., Ltd. Address before: Shenzhen Futian District City, Guangdong province 518044 Zhenxing Road, SEG Science Park 2 East Room 403 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |