CN106569729A - 用于分布式系统中数据写入的方法和设备 - Google Patents

用于分布式系统中数据写入的方法和设备 Download PDF

Info

Publication number
CN106569729A
CN106569729A CN201510649833.5A CN201510649833A CN106569729A CN 106569729 A CN106569729 A CN 106569729A CN 201510649833 A CN201510649833 A CN 201510649833A CN 106569729 A CN106569729 A CN 106569729A
Authority
CN
China
Prior art keywords
node device
write
data
node
current
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.)
Pending
Application number
CN201510649833.5A
Other languages
English (en)
Inventor
吴洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510649833.5A priority Critical patent/CN106569729A/zh
Publication of CN106569729A publication Critical patent/CN106569729A/zh
Pending legal-status Critical Current

Links

Abstract

本申请的目的是提供用于分布式系统中数据写入的方法和设备,通过在客户节点设备端向主节点设备请求分配用于数据写入的若干从节点设备;接着,将当前数据并发写入每个当前分配的从节点设备;然后获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若否,则循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备;从而有效的减少了数据写入时设备间的通信次数,同时,通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备,大大降低了写入的延迟,进而提高了分布式系统的吞吐效率。

Description

用于分布式系统中数据写入的方法和设备
技术领域
本申请涉及计算机领域,尤其涉及一种用于分布式系统中数据写入的技术。
背景技术
目前分布式存储系统采用大批PC(个人计算机)集群来进行海量数据的存储,为了保证数据安全性,一般采取在不同的PC上进行三副本的存储,当一台机器故障后,机器上的一份副本丢失也不会导致用户数据的丢失。而随着互联网技术的发展,海量的文件存储对存储技术和系统的要求越来越高,例如,存储日志,写数据时必须持久化且日志的读写延迟制约着整个系统的吞吐,所以一般日志系统都要求极低的延迟,不但要求平均延迟低,也会要求延迟的毛刺率较低。
现有技术中,常见的分布式存储系统写数据的方式通常是采用的是链式写入,一次成功的写入,至少需要六次串行的机器间的通信,延迟较高。
发明内容
本申请的目的是提供一种能够在分布式系统中数据写入时,降低日志写流程的延迟的方法和设备。
根据本申请的一个方面,提供了一种在客户节点设备端用于分布式系统中数据写入的方法,包括:
向主节点设备请求分配用于数据写入的若干从节点设备;
将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备。
进一步地,所述方法还包括:获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
进一步地,将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备还包括:当至少有一个所述从节点设备写入失败,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
其中,将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备还包括:当所述当前分配的从节点设备中已写入数据超过阈值容量时,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
进一步地,将当前数据并发写入每个所述当前分配的从节点设备包括:
从所述主节点设备获取若干所述从节点设备的节点信息;
基于所述节点信息,将当前数据并发写入每个当前分配的从节点设备。
更进一步地,将当前数据并发写入每个所述从节点设备包括:通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备。
进一步地,所述当前数据为日志数据。
根据本申请的另一个方面,提供了一种在主节点设备端用于分布式系统中数据写入的方法,其中,所述方法包括:
根据客户节点设备的请求,分配用于数据写入的若干从节点设备;
基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息;
向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。
根据本申请的再一个方面,提供了一种在从节点设备端用于分布式系统中数据写入的方法,其中,所述方法包括:
获取并存储客户节点设备要写入的当前数据;
向所述客户节点设备反馈当前数据的写入结果,其中,所述写入结果包括所述当前数据全部成功写入和所述当前数据未全部成功写入。
根据本申请的另一方面,还提供了一种用于分布式系统中数据写入的客户节点设备,其中,所述客户节点设备包括:
请求装置,用于向主节点设备请求分配用于数据写入的若干从节点设备;
写入装置,用于将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备。
进一步地,所述客户节点设备还包括:
判断装置,用于获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
进一步地,所述写入装置还用于:当至少有一个所述从节点设备写入失败,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
其中,所述写入装置还用于:当所述当前分配的从节点设备中已写入数据超过阈值容量时,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
进一步地,所述写入装置用于:
从所述主节点设备获取若干所述从节点设备的节点信息;
基于所述节点信息,将当前数据并发写入每个当前分配的从节点设备。
更进一步地,所述写入装置用于:通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备。
进一步地,所述当前数据为日志数据。
根据本申请的另一个方面,还提供了一种用于分布式系统中数据写入的主节点设备,其中,所述主节点设备包括:
分配装置,用于根据所述客户节点设备的请求,分配用于数据写入的若干从节点设备;
生成装置,用于基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息;
发送装置,用于向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。
根据本申请的再一个方面,还提供了一种用于分布式系统中数据写入的从节点设备,其中,所述从节点设备包括:
获取装置,用于获取并存储客户节点设备要写入的当前数据;
反馈装置,用于向所述客户节点设备反馈当前数据的写入结果,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
与现有技术相比,根据本申请实施例,通过在客户节点设备端向主节点设备请求分配用于数据写入的若干从节点设备;接着,将当前数据并发写入每个当前分配的从节点设备;然后,获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若否,则循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备;从而有效的减少了数据写入时设备间的通信次数,同时,通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备,大大降低了写入的延迟,进而提高了分布式系统的吞吐效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个优选实施例的一种用于分布式系统中数据写入的客户节点设备、主节点设备和从节点设备的配合示意图;
图2示出根据本申请一实施例提供的一种用于分布式系统中数据写入的客户节点设备、主节点设备和从节点设备的配合示意图;
图3示出根据本申请一个优选实施例的一方面的客户节点设备、主节点设备和从节点设备的配合示意图;
图4示出根据本申请另一个方面的一个优选实施例的一种用于分布式系统中数据写入的方法流程示意图;
图5示出根据本申请一实施例提供的一种用于分布式系统中数据写入的客户节点设备、主节点设备和从节点设备的交互方法流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
根据本申请一个方面提供的一种用于分布式系统中数据写入的系统设备,所述系统设备包括客户节点设备、主节点设备和从节点设备;其中,客户节点设备包括请求装置、写入装置和判断装置;主节点设备包括分配装置、生成装置和发送装置;从节点设备包括获取装置和反馈装置。
本申请通过在客户节点设备端向主节点设备请求分配用于数据写入的若干从节点设备;接着,将当前数据并发写入每个当前分配的从节点设备;然后客户节点设备获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若否,则循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备;从而有效的减少了数据写入时设备间的通信次数,同时,通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备,大大降低了写入的延迟,进而提高了分布式系统的吞吐效率。
在此,所述当前数据可以是请求写入的文件数据,优选地,所述当前数据为日志数据。日志是计算机系统中很重要的组成部分,每一次写的数据量比较小,但是写数据都必须持久化,日志系统要求极低的延迟及较低的延迟的毛刺,在故障恢复的时候,会进行日志的读取和重放,进行故障恢复。本申请实施例所述的方法能够实现极低的延迟,满足日志系统的写流程的低延迟的要求。
本领域技术人员应能理解,在具体的方案实施中,所述客户节点设备用于切分数据文件,访问或通过命令行管理分布式文件系统,负责与主节点交互获取文件位置信息,与从节点交互进行数据读和写操作;所述主节点设备负责管理分布式文件系统的名称空间和数据块映射信息,配置副本策略,同时负责协调各个节点间的管理,如节点的有效性检查、文件块的冗余复制,文件的创建、删除等行为并处理客户节点设备请求;所述从节点设备用于存储实际数据,执行数据块的读写操作,并周期性地将存储的数据块信息汇报给主节点设备。
图1示出根据本申请一个优选实施例的一种用于分布式系统中数据写入的客户节点设备、主节点设备和从节点设备的配合示意图。
其中,为保持数据可靠性,通常客户节点设备会将数据写入多个从节点设备,例如两个、三个、四个甚至更多,以最小化开销和最大化数据可靠性、可用性以及总体读取带宽为优化,每次进行写数据时设置三个从节点设备与客户节点设备进行交互,下面实施例中以三个为例,客户节点设备向主节点设备提出请求,要求主节点设备分配三个从节点设备供数据写入;主节点设备应答,将三台写数据的从节点设备的信息发送给客户节点设备;随后,客户节点设备并发的向三台从节点设备请求写入,每台从节点设备完成数据写入后向客户节点设备应答;接着,客户节点设备确认三份数据都写成功并收到应答,至此数据写入成功。此时,三个从节点设备所写入的数据的内容完全相同。
图2示出根据本申请一实施例提供的一种用于分布式系统中数据写入的客户节点设备、主节点设备和从节点设备的配合示意图。
具体地,客户节点设备包括请求装置11、写入装置12和判断装置13;主节点设备包括分配装置21、生成装置22和发送装置23;从节点设备包括获取装置31和反馈装置32。
在数据写入过程中,客户节点设备中的请求装置11向主节点设备请求分配用于数据写入的若干从节点设备;主节点设备中的分配装置21根据所述客户节点设备的请求,分配用于数据写入的若干从节点设备;生成装置22基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息;接着,发送装置23向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。客户节点设备中的写入装置12将当前数据并发写入每个当前分配的从节点设备,从节点设备中的获取装置31获取并存储客户节点设备要写入的当前数据;然后,反馈装置32向所述客户节点设备反馈当前数据的写入结果,客户节点设备中的判断装置13获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若否,则循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备。
在此,所述当前数据为客户节点设备中需要写入从节点设备的数据,数据通常以一个文件为单位,文件大小不被限制,并且所述当前数据即为当前正要写入的数据,若当前数据写入完成后,后续新的数据进入写入过程,则新的数据成当前数据;所述当前分配的从节点设备为客户节点设备最后一次向主节点请求分配的从节点设备,以供当前数据的写入,若当前从节点设备写入失败后,客户节点设备会重新申请从节点设备,重新申请后,重新申请的从节点设备成为当前从节点设备。
所述客户节点设备包括请求装置11、写入装置12和判断装置13。
具体地,请求装置11向主节点设备请求分配用于数据写入的若干从节点设备。
在一具体实施例中,数据的写流程首先需要客户节点设备调用文件系统类(FileSystem)的创建方法(create()方法),开始创建一新文件:文件系统类创建一输出流(OutputStream),产生一个RPC调用,让主节点设备在文件系统的命名空间中创建这一新文件,主节点设备根据客户节点设备的请求分配三个从节点设备,供文件数据的写入。
在此,所述文件系统类是分布式文件系统,使用户更加容易访问和管理物理上跨网络分布的文件;所述RPC是指远程过程调用协议(RemoteProcedure Call Protocol),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
本领域技术人员还应能理解,上述的客户节点设备请求调用主节点设备的方法仅为举例,其他现有的或今后可能出现的客户节点设备请求调用主节点设备的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
具体地,写入装置12将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备。
接前例,客户节点设备接到主节点设备的应答获取每个当前需要写入的从节点设备信息,通过输出流将文件数据并发的写入到每个当前需要写入的从节点设备中。当输出流内的当前数据全部成功写入到从节点设备1、从节点设备2和从节点设备3中,客户节点设备接收到三个从节点设备的确认数据写成功信息后,当前数据写入完成。
优选地,所述写入装置12还用于:当至少有一个所述从节点设备写入失败,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
例如,结合图1,在数据的写入从节点设备过程中,写入从节点设备1的数据发生错误,从节点设备1写入数据失败,此时,客户节点设备只收到从节点设备2和从节点设备3的确认数据写成功应答,如图3所示,客户节点设备需要向主节点设备发送重新分配三个从节点设备的请求,获取新的从节点设备的信息后,从节点设备4、从节点设备5和从节点设备6的位置信息被告知,客户节点设备将输出流内的当前数据全部重新写入到从节点设备4、从节点设备5和从节点设备6中,直到当前数据全部成功写入新分配的三个从节点设备中。再例如,写文件数据时,已成功写入到从节点设备1、从节点设备2和从节点设备3中五个文件,第六个文件写入时发生错误,则客户节点设备重新将第六个文件数据写入到重新分配的从节点设备4、从节点设备5和从节点设备6中,而从节点设备1、从节点设备2和从节点设备3需要保留。依此类推,若新分配的从节点设备4、从节点设备5和从节点设备6写数据未全部成功,则客户节点设备需要再次请求分配一组新的从节点设备,将当前数据重新写入,直至数据全部成功写入到每个当前分配的从节点设备。
优选地,所述写入装置12还用于:当所述当前分配的从节点设备中已写入数据超过阈值容量时,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
例如,分布式文件系统是以基于数据块(chunk)组织其文件内容的,所述数据块大小为64MB,在数据的写入从节点设备过程中,若第n个文件的大小为12k(n为随机的自然数),而数据块剩余的容量为9k,则客户节点设备需要向主节点设备再次发送请求,要求重新分配新的三个从节点设备,将第n个文件数据并发的重新写入到新分配的三个从节点设备中,直至第n个文件数据全部成功写入到每个当前分配的从节点设备中。
优选地,所述写入装置12从所述主节点设备获取若干所述从节点设备的节点信息;基于所述节点信息,将当前数据并发写入每个当前分配的从节点设备。
例如,主节点设备应答客户节点设备的请求,客户节点设备获取从节点设备的位置、信息端口、容量、对应的当前存储的数据块等节点信息;基于获取的节点信息,将输出流内的当前的一个文件数据并发写入每个当前分配的从节点设备中。当写数据未全部写成功时根据从节点设备的节点信息及反馈信息可知哪个节点写入失败。
更优选地,所述写入装置12通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备。在此,客户节点设备根据从节点设备发送的异步请求,通过异步线程将一个文件数据顺序的写入到每个从节点设备中,本申请采用异步请求方式能够不阻塞当前线程,减少了完成一次数据写入需要的通信次数,极大地降低了写入的延迟。
优选地,所述客户节点设备还包括:判断装置13获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
继续接前例,客户节点设备获取从节点设备1、从节点设备2和从节点设备3反馈的写入结果,即是否收到三个从节点设备的确认数据写成功的信息,如图4示出的流程图,若三个从节点设备都返回一个确认数据写成功的信息,则当前数据全部成功写入每个当前分配的从节点设备中,写流程结束;若至少一个从节点设备没返回确认数据写成功的信息,则当前数据未全部成功写入,此时需要循环执行以下过程:向主节点设备请求分配用于数据写入的若干从节点设备;将当前数据并发写入每个当前分配的从节点设备;获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若是,则循环结束,数据写入成功,若否,则继续循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备。例如,当从节点设备1写数据失败或写入数据超过阈值容量时,客户节点设备需要向主节点设备再次发送请求,要求重新分配三个从节点设备,将当前文件数据并发的重新写入到新分配的三个从节点设备中,基于当前写入结果判断当前数据是否全部成功写入到新分配的三个从节点设备中,若是,则写流程结束,若否,则继续循环执行上述步骤,直至当前数据全部成功写入分配的三个从节点设备中。
所述主节点设备包括:分配装置21、生成装置22和发送装置23。
具体地,分配装置21根据所述客户节点设备的请求,分配用于数据写入的若干从节点设备。在此,主节点设备接收到用户的写文件的RPC请求后,检查要创建的文件是否已存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户节点设备抛出异常。主节点设备应答客户节点设备,告知分配的用于当前数据写入的从节点设备1、从节点设备2和从节点设备3的相应的节点信息。
具体地,生成装置22基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息。
在此,主节点设备维护文件到块的对应关系和块到节点的对应的关系,维护文件的操作信息,主节点设备根据文件数据写入到当前分配的每个从节点设备中的操作生成数据写入信息和当前写入的从节点设备的信息的数据写入列表,便于主节点设备对长期没有结束的数据块做查询和标记及查询当前数据写入情况和从节点设备的节点信息。例如,写文件数据时,已成功写入到从节点设备1、从节点设备2和从节点设备3中四个文件,第五个文件写入时发生错误,此时从节点设备1、从节点设备2和从节点设备3的写入信息已被记录在主节点设备内的数据列表中,则根据客户节点设备的再次请求分配新的从节点设备,主节点设备应答客户节点设备告知从节点设备4、从节点设备5和从节点设备6的节点信息同时客户节点设备会根据主节点设备记录的从节点设备1、从节点设备2和从节点设备3的数据写入信息将第五个文件重新并发的写入到从节点设备4、从节点设备5和从节点设备6中。
具体地,发送装置23向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。例如,主节点设备应答客户节点设备的请求,发送从节点设备的分配个数、分配的每个从节点设备位置、信息端口、容量、对应的当前存储的数据块等节点信息。
所述从节点设备包括:获取装置31和反馈装置32。
具体地,获取装置31获取并存储客户节点设备要写入的当前数据。例如,从节点设备获取输出流内的当前文件数据,同时将写入的数据保存在本地磁盘的数据块文件中,并进行写入数据的持久化,从节点设备节点接收到并成功持久化一个数据块的数据后,从节点设备通知主节点设备已经接收到数据块。
具体地,反馈装置32向所述客户节点设备反馈当前数据的写入结果,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。例如,每个从节点设备将当前数据的写入结果向客户节点设备进行反馈,若当前数据都成功写入到每个从节点设备,则客户节点设备接收到每个从节点设备的确认数据写成功信息;若当前数据未全部成功写入,则客户节点设备根据反馈的数据写入失败的写入结果进行下一步操作。
图5示出根据本申请一实施例提供的一种用于分布式系统中数据写入的客户节点设备、主节点设备和从节点设备的交互方法流程示意图。
具体地,在客户节点设备中包括步骤S11、步骤S12和步骤S13;在主节点设备中包括步骤S21、步骤S22和步骤S23;在从节点设备中包括步骤S31和步骤S32。
在数据写入过程中,在步骤S11中,客户节点设备向主节点设备请求分配用于数据写入的若干从节点设备;在步骤S21中,主节点设备根据所述客户节点设备的请求,分配用于数据写入的若干从节点设备;在步骤S22中,基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息;接着,在步骤S23中,向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。在步骤S12中,客户节点设备将当前数据并发写入每个当前分配的从节点设备,在步骤S31中,从节点设备获取并存储客户节点设备要写入的当前数据;然后,在步骤S32中,从节点设备向所述客户节点设备反馈当前数据的写入结果,在步骤S13中,客户节点设备获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若否,则循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备。
在此,所述当前数据为客户节点设备中需要写入从节点设备的数据,数据通常以一个文件为单位,文件大小不被限制,并且所述当前数据即为当前正要写入的数据,若当前数据写入完成后,后续新的数据进入写入过程,则新的数据成当前数据;所述当前分配的从节点设备为客户节点设备最后一次向主节点请求分配的从节点设备,以供当前数据的写入,若当前从节点设备写入失败后,客户节点设备会重新申请从节点设备,重新申请后,重新申请的从节点设备成为当前从节点设备。
所述在客户节点设备中,包括步骤S11、步骤S12和步骤S13。
具体地,在步骤S11中,向主节点设备请求分配用于数据写入的若干从节点设备。
在一具体实施例中,数据的写流程首先需要客户节点设备调用文件系统类(FileSystem)的创建方法(create()方法),开始创建一新文件:文件系统类创建输出流(文件输出流),产生一个RPC调用,让主节点设备在文件系统的命名空间中创建这一新文件,主节点设备根据客户节点设备的请求分配三个从节点设备,供文件数据的写入。
在此,所述文件系统类是分布式文件系统,使用户更加容易访问和管理物理上跨网络分布的文件;所述RPC是指远程过程调用协议(RemoteProcedure Call Protocol),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
本领域技术人员还应能理解,上述的客户节点设备请求调用主节点设备的方法仅为举例,其他现有的或今后可能出现的客户节点设备请求调用主节点设备的方法如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
具体地,在步骤S12中,将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备。
接前例,客户节点设备接到主节点设备的应答获取每个当前需要写入的从节点设备信息,通过输出流将文件数据并发的写入到每个当前需要写入的从节点设备中。当输出流内的当前数据全部成功写入到从节点设备1、从节点设备2和从节点设备3中,客户节点设备接收到三个从节点设备的确认数据写成功信息后,当前数据写入完成。
优选地,步骤S12还包括:当至少有一个所述从节点设备写入失败,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
例如,结合图1,在数据的写入从节点设备过程中,写入从节点设备1的数据发生错误,从节点设备1写入数据失败,此时,客户节点设备只收到从节点设备2和从节点设备3的确认数据写成功应答,如图3所示,客户节点设备需要向主节点设备发送重新分配三个从节点设备的请求,获取新的从节点设备的信息后,从节点设备4、从节点设备5和从节点设备6的位置信息被告知,客户节点设备将输出流内的当前数据全部重新写入到从节点设备4、从节点设备5和从节点设备6中,直到当前数据全部成功写入新分配的三个从节点设备中。再例如,写文件数据时,已成功写入到从节点设备1、从节点设备2和从节点设备3中五个文件,第六个文件写入时发生错误,则客户节点设备重新将第六个文件数据写入到重新分配的从节点设备4、从节点设备5和从节点设备6中,而从节点设备1、从节点设备2和从节点设备3需要保留。依此类推,若新分配的从节点设备4、从节点设备5和从节点设备6写数据未全部成功,则客户节点设备需要再次请求分配一组新的从节点设备,将当前数据重新写入,直至数据全部成功写入到每个当前分配的从节点设备。
优选地,步骤S12还包括:当所述当前分配的从节点设备中已写入数据超过阈值容量时,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
例如,分布式文件系统是以基于数据块(chunk)组织其文件内容的,数据块大小为64MB,在数据的写入从节点设备过程中,若第n个文件的大小为12k(n为随机的自然数),而数据块剩余的容量为9k,则客户节点设备需要向主节点设备再次发送请求,要求重新分配新的三个从节点设备,将第n个文件数据并发的重新写入到新分配的三个从节点设备中,直至第n个文件数据全部成功写入到每个当前分配的从节点设备中。
优选地,步骤S12还包括:从所述主节点设备获取若干所述从节点设备的节点信息;基于所述节点信息,将当前数据并发写入每个当前分配的从节点设备。
例如,主节点设备应答客户节点设备的请求,客户节点设备获取从节点设备的位置、信息端口、容量、对应的当前存储的数据块等节点信息;基于获取的节点信息,将输出流内的当前的一个文件数据并发写入每个当前分配的从节点设备中。当写数据未全部写成功时根据从节点设备的节点信息及反馈信息可知哪个节点写入失败。
更优选地,步骤S12还包括:通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备。在此,客户节点设备根据从节点设备发送的异步请求,通过异步线程将一个文件数据顺序的写入到每个从节点设备中,本申请采用异步请求方式能够不阻塞当前线程,减少了完成一次数据写入需要的通信次数,极大地降低了写入的延迟。
优选地,在步骤S13中,获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
继续接前例,客户节点设备获取从节点设备1、从节点设备2和从节点设备3反馈的写入结果,即是否收到三个从节点设备的确认数据写成功的信息,如图4示出的流程图,若三个从节点设备都返回一个确认数据写成功的信息,则当前数据全部成功写入每个当前分配的从节点设备中,写流程结束;若至少一个从节点设备没返回确认数据写成功的信息,则当前数据未全部成功写入,此时需要循环执行以下过程:向主节点设备请求分配用于数据写入的若干从节点设备;将当前数据并发写入每个当前分配的从节点设备;获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,若是,则循环结束,数据写入成功,若否,则继续循环执行上述过程,直至所述当前数据全部成功写入每个当前分配的从节点设备。例如,当从节点设备1写数据失败或写入数据超过阈值容量时,客户节点设备需要向主节点设备再次发送请求,要求重新分配三个从节点设备,将当前文件数据并发的重新写入到新分配的三个从节点设备中,基于当前写入结果判断当前数据是否全部成功写入到新分配的三个从节点设备中,若是,则写流程结束,若否,则继续循环执行上述步骤,直至当前数据全部成功写入分配的三个从节点设备中。
所述在主节点设备中包括:步骤S21、步骤S22和步骤S23。
具体地,在步骤S21中,根据所述客户节点设备的请求,分配用于数据写入的若干从节点设备。在此,主节点设备接收到用户的写文件的RPC请求后,检查要创建的文件是否已存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户节点设备抛出异常。主节点设备应答客户节点设备,告知分配的用于当前数据写入的从节点设备1、从节点设备2和从节点设备3的相应的节点信息。
具体地,在步骤S22中,基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息。
在此,主节点设备维护文件到块的对应关系和块到节点的对应的关系,维护文件的操作信息,主节点设备根据文件数据写入到当前分配的每个从节点设备中的操作生成数据写入信息和当前写入的从节点设备的信息的数据写入列表,便于主节点设备对长期没有结束的数据块做查询和标记及查询当前数据写入情况和从节点设备的节点信息。例如,写文件数据时,已成功写入到从节点设备1、从节点设备2和从节点设备3中四个文件,第五个文件写入时发生错误,此时从节点设备1、从节点设备2和从节点设备3的写入信息已被记录在主节点设备内的数据列表中,则根据客户节点设备的再次请求分配新的从节点设备,主节点设备应答客户节点设备告知从节点设备4、从节点设备5和从节点设备6的节点信息同时客户节点设备会根据主节点设备记录的从节点设备1、从节点设备2和从节点设备3的数据写入信息将第五个文件重新并发的写入到从节点设备4、从节点设备5和从节点设备6中。
具体地,在步骤S23中,向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。例如,主节点设备应答客户节点设备的请求,发送从节点设备的分配个数、分配的每个从节点设备位置、信息端口、容量、对应的当前存储的数据块等节点信息。
所述在从节点设备中包括:步骤S31和步骤S32。
具体地,在步骤S31中,获取并存储客户节点设备要写入的当前数据。例如,从节点设备获取输出流内的当前文件数据,同时将写入的数据保存在本地磁盘的数据块文件中,并进行写入数据的持久化,从节点设备节点接收到并成功持久化一个数据块的数据后,从节点设备通知主节点设备已经接收到数据块。
具体地,在步骤S32中,向所述客户节点设备反馈当前数据的写入结果,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。例如,每个从节点设备将当前数据的写入结果向客户节点设备进行反馈,若当前数据都成功写入到每个从节点设备,则客户节点设备接收到每个从节点设备的确认数据写成功信息;若当前数据未全部成功写入,则客户节点设备根据反馈的数据写入失败的写入结果进行下一步操作。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (18)

1.一种在客户节点设备端用于分布式系统中数据写入的方法,其中,所述方法包括:
向主节点设备请求分配用于数据写入的若干从节点设备;
将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备。
2.根据权利要求1所述的方法,其中,所述方法还包括:
获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
3.根据权利要求1所述的方法,其中,将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备还包括:
当至少有一个所述从节点设备写入失败,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
4.根据权利要求1或3所述的方法,其中,将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备还包括:
当所述当前分配的从节点设备中已写入数据超过阈值容量时,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
5.根据权利要求1至4中任一项所述的方法,其中,将当前数据并发写入每个所述当前分配的从节点设备包括:
从所述主节点设备获取若干所述从节点设备的节点信息;
基于所述节点信息,将当前数据并发写入每个当前分配的从节点设备。
6.根据权利要求5所述的方法,其中,将当前数据并发写入每个所述从节点设备包括:
通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备。
7.根据权利要求1至6中任一项所述的方法,所述当前数据为日志数据。
8.一种在主节点设备端用于分布式系统中数据写入的方法,其中,所述方法包括:
根据客户节点设备的请求,分配用于数据写入的若干从节点设备;
基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息;
向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。
9.一种在从节点设备端用于分布式系统中数据写入的方法,其中,所述方法包括:
获取并存储客户节点设备要写入的当前数据;
向所述客户节点设备反馈当前数据的写入结果,其中,所述写入结果包括所述当前数据全部成功写入和所述当前数据未全部成功写入。
10.一种用于分布式系统中数据写入的客户节点设备,其中,所述客户节点设备包括:
请求装置,用于向主节点设备请求分配用于数据写入的若干从节点设备;
写入装置,用于将当前数据并发写入每个当前分配的从节点设备,直至所述当前数据全部成功写入每个所述从节点设备。
11.根据权利要求10所述的客户节点设备,其中,所述客户节点设备还包括:
判断装置,用于获取每个当前分配的从节点设备反馈的写入结果,并基于所述写入结果判断当前数据是否全部成功写入每个所述从节点设备,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
12.根据权利要求10所述的客户节点设备,其中,所述写入装置还用于:
当至少有一个所述从节点设备写入失败,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
13.根据权利要求10或12所述的客户节点设备,其中,所述写入装置还用于:
当所述当前分配的从节点设备中已写入数据超过阈值容量时,则向所述主节点设备请求重新分配若干从节点设备,并将所述当前数据并发写入每个当前分配的从节点设备中,直至所述当前数据全部成功写入每个当前分配的从节点设备。
14.根据权利要求10至13中任一项所述的客户节点设备,其中,所述写入装置用于:
从所述主节点设备获取若干所述从节点设备的节点信息;
基于所述节点信息,将当前数据并发写入每个当前分配的从节点设备。
15.根据权利要求14所述的客户节点设备,其中,所述写入装置用于:
通过异步请求方式将所述数据块并发写入到每个当前分配的从节点设备。
16.根据权利要求10至15中任一项所述的设备,所述当前数据为日志数据。
17.一种用于分布式系统中数据写入的主节点设备,其中,所述主节点设备包括:
分配装置,用于根据所述客户节点设备的请求,分配用于数据写入的若干从节点设备;
生成装置,用于基于当前分配的若干从节点设备,生成数据写入列表,其中,所述数据写入列表包括数据写入信息和所述从节点设备的节点信息;
发送装置,用于向所述客户节点设备发送若干所述当前分配的从节点设备的节点信息。
18.一种用于分布式系统中数据写入的从节点设备,其中,所述从节点设备包括:
获取装置,用于获取并存储客户节点设备要写入的当前数据;
反馈装置,用于向所述客户节点设备反馈当前数据的写入结果,其中,所述写入结果包括所述当前数据全部成功写入或所述当前数据未全部成功写入。
CN201510649833.5A 2015-10-09 2015-10-09 用于分布式系统中数据写入的方法和设备 Pending CN106569729A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510649833.5A CN106569729A (zh) 2015-10-09 2015-10-09 用于分布式系统中数据写入的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510649833.5A CN106569729A (zh) 2015-10-09 2015-10-09 用于分布式系统中数据写入的方法和设备

Publications (1)

Publication Number Publication Date
CN106569729A true CN106569729A (zh) 2017-04-19

Family

ID=58507782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510649833.5A Pending CN106569729A (zh) 2015-10-09 2015-10-09 用于分布式系统中数据写入的方法和设备

Country Status (1)

Country Link
CN (1) CN106569729A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168649A (zh) * 2017-05-05 2017-09-15 南京城市职业学院 一种分布式存储系统中数据分布的方法及装置
WO2019000423A1 (zh) * 2017-06-30 2019-01-03 华为技术有限公司 一种数据存储方法及设备
CN110019093A (zh) * 2017-12-28 2019-07-16 中国移动通信集团安徽有限公司 数据写入方法、装置、设备及介质
CN111597026A (zh) * 2020-05-15 2020-08-28 北京百度网讯科技有限公司 用于获取信息的方法及装置
CN113778331A (zh) * 2021-08-12 2021-12-10 联想凌拓科技有限公司 一种数据处理方法、主节点及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741911A (zh) * 2009-12-18 2010-06-16 中兴通讯股份有限公司 基于多副本协同的写操作方法、系统及节点
CN102456045A (zh) * 2010-11-01 2012-05-16 北京中博软创科技有限公司 数据库集群加密方法和系统
CN102867035A (zh) * 2012-08-28 2013-01-09 浪潮(北京)电子信息产业有限公司 一种分布式文件系统集群高可用方法和装置
CN103744745A (zh) * 2013-12-13 2014-04-23 北京奇虎科技有限公司 一种数据存储的检测方法、设备及分布式存储系统
CN104125303A (zh) * 2014-08-12 2014-10-29 北京奇虎科技有限公司 数据读写请求方法、客户端及系统
CN104715044A (zh) * 2011-12-28 2015-06-17 北京奇虎科技有限公司 一种分布式系统及其数据操作方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741911A (zh) * 2009-12-18 2010-06-16 中兴通讯股份有限公司 基于多副本协同的写操作方法、系统及节点
CN102456045A (zh) * 2010-11-01 2012-05-16 北京中博软创科技有限公司 数据库集群加密方法和系统
CN104715044A (zh) * 2011-12-28 2015-06-17 北京奇虎科技有限公司 一种分布式系统及其数据操作方法
CN102867035A (zh) * 2012-08-28 2013-01-09 浪潮(北京)电子信息产业有限公司 一种分布式文件系统集群高可用方法和装置
CN103744745A (zh) * 2013-12-13 2014-04-23 北京奇虎科技有限公司 一种数据存储的检测方法、设备及分布式存储系统
CN104125303A (zh) * 2014-08-12 2014-10-29 北京奇虎科技有限公司 数据读写请求方法、客户端及系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168649A (zh) * 2017-05-05 2017-09-15 南京城市职业学院 一种分布式存储系统中数据分布的方法及装置
CN107168649B (zh) * 2017-05-05 2019-12-17 南京城市职业学院 一种分布式存储系统中数据分布的方法及装置
WO2019000423A1 (zh) * 2017-06-30 2019-01-03 华为技术有限公司 一种数据存储方法及设备
CN110019093A (zh) * 2017-12-28 2019-07-16 中国移动通信集团安徽有限公司 数据写入方法、装置、设备及介质
CN111597026A (zh) * 2020-05-15 2020-08-28 北京百度网讯科技有限公司 用于获取信息的方法及装置
CN111597026B (zh) * 2020-05-15 2023-06-30 北京百度网讯科技有限公司 用于获取信息的方法及装置
CN113778331A (zh) * 2021-08-12 2021-12-10 联想凌拓科技有限公司 一种数据处理方法、主节点及存储介质

Similar Documents

Publication Publication Date Title
CN106569729A (zh) 用于分布式系统中数据写入的方法和设备
CN101061467B (zh) 远程存储数据副本
EP3101530B1 (en) Data distribution method, data storage method, related apparatus, and system
CN102142006B (zh) 分布式文件系统的文件处理方法及装置
CN103136074B (zh) 多个磁盘阵列系统的数据储存方法及数据储存系统
CN102693168B (zh) 一种数据备份恢复的方法、系统和服务节点
US7844775B2 (en) Distribution of data in a distributed shared storage system
CN104461768B (zh) 副本存储装置及副本存储方法
CN102413156B (zh) 一种分布式数据存储系统和方法
CN102282544A (zh) 存储系统
CN102523290B (zh) 数据的处理方法、设备和系统
CN102567215A (zh) 精简供应的空间分配
CN103761190A (zh) 数据处理方法及装置
CN106776146A (zh) 一种数据校验方法、装置及系统
CN101834904A (zh) 一种数据备份方法和设备
CN107544869A (zh) 一种数据恢复方法和装置
US7849355B2 (en) Distributed object sharing system and method thereof
CN102023816A (zh) 一种对象存储系统的对象存放策略和访问方法
CN107729536A (zh) 一种数据存储方法和装置
CN106126374A (zh) 数据写入方法、数据读取方法及装置
CN102833273B (zh) 临时故障时的数据修复方法及分布式缓存系统
CN104715044B (zh) 一种分布式系统及其数据操作方法
US20050154786A1 (en) Ordering updates in remote copying of data
US8015375B1 (en) Methods, systems, and computer program products for parallel processing and saving tracking information for multiple write requests in a data replication environment including multiple storage devices
CN103856511A (zh) 数据包上传方法、客户端、节点、信息服务器及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170419

RJ01 Rejection of invention patent application after publication