CN103856511B - 数据包上传方法、客户端、节点、信息服务器及系统 - Google Patents

数据包上传方法、客户端、节点、信息服务器及系统 Download PDF

Info

Publication number
CN103856511B
CN103856511B CN201210505110.4A CN201210505110A CN103856511B CN 103856511 B CN103856511 B CN 103856511B CN 201210505110 A CN201210505110 A CN 201210505110A CN 103856511 B CN103856511 B CN 103856511B
Authority
CN
China
Prior art keywords
node
data packet
copy
assembly line
blocks
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.)
Active
Application number
CN201210505110.4A
Other languages
English (en)
Other versions
CN103856511A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201210505110.4A priority Critical patent/CN103856511B/zh
Publication of CN103856511A publication Critical patent/CN103856511A/zh
Application granted granted Critical
Publication of CN103856511B publication Critical patent/CN103856511B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种数据包上传方法,属于计算机领域。所述方法包括:将一数据包上传到存储流水线,所述存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;接收所述主节点返回的上传失败响应或上传成功响应;若接收到所述上传成功响应,则继续上传下一数据包,否则,重新建立存储流水线并将所述数据包上传到所述重新建立的存储流水线。本发明通过上传数据包后接收主节点返回的上传成功响应或上传失败响应,若接收到上传失败响应,则重新建立存储流水线,解决了现有技术中数据包上传过程中无法中止的问题,达到降低数据恢复过程复杂度的目的。

Description

数据包上传方法、客户端、节点、信息服务器及系统
技术领域
本发明涉及计算机领域,特别涉及一种数据包上传方法、客户端、节点、信息服务器及系统。
背景技术
分布式文件系统是指文件系统管理的物理存储资源存储在不同的节点上,各节点通过计算机网络相连,其在工业界的应用非常广泛。在分布式文件系统中,为了保证数据的安全性,往往在上传文件时,将文件分成一至多个文件块,并为每个文件块保存多个副本,每个副本保存在不同的节点上,上传文件时,可以将文件块分成一至多个数据包,并将数据包依次上传到各个节点。
以HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)为例,现有的数据包上传方法如下:首先,客户端获取节点列表,并根据该节点列表生成存储流水线,其中,存储流水线上的第一个节点为主节点,其他后续节点均为从节点;其次,客户端将数据包依次发送到建立的存储流水线上,对于同一个数据包,节点按照各自在流水线上的顺序依次存储该数据包的副本。请参见图1所示的数据包上传流程图,其展示了一个文件块的5个数据包在3个节点上的存储过程。其中粗斜线代表数据包,细斜线代表建立和关闭流水线的控制消息,虚斜线代表数据包的回应消息,垂直方向的粗箭头代表客户端以及三个节点。t0到t1是流水线建立阶段;t1到t2是数据包上传阶段,其中t1发送第一个数据包,t2收到最后一个数据包的响应,其中,发送数据包时,不需要等待上一个数据包的响应即可以发送下一个数据包,客户端可以配置已发送到流水线但是还没有收到回应的数据包总数;t2到t3是流水线关闭阶段。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有的数据包上传方法,当流水线上某一个从节点发生错误,比如某一从节点崩溃时,客户端上传数据包的过程不会中止,因而会造成存储流水线上各节点之间数据不一致的情况,此时,存储流水线重建过程较为复杂,系统复杂度较高。
发明内容
为了解决现有技术中数据恢复较为复杂的问题,本发明实施例提供了一种数据包上传方法、客户端、节点、信息服务器及系统。所述技术方案如下:
一方面,提供了一种数据包上传方法,所述方法包括:
将一数据包上传到存储流水线,以便所述存储流水线上的主节点和各从节点将所述数据包的副本轮流写入各自本地存储的所述数据包对应的文件块副本,所述存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
接收所述主节点返回的上传失败响应或上传成功响应;
若接收到所述上传成功响应,则继续上传下一数据包,否则,重新建立存储流水线并将所述数据包上传到所述重新建立的存储流水线。
另一方面,提供了一种数据包上传方法,所述方法包括:
接收客户端上传的数据包,将所述数据包的副本写入本地存储的所述数据包对应的文件块副本,并更新所述文件块副本的状态信息;
将所述数据包发送给存储流水线上的一至多个从节点,并接收所述一至多个从节点发送的对所述数据包的响应,所述对所述数据包的响应中携带有所述一至多个从节点本地存储的所述数据包对应的文件块副本的状态信息;
将所述更新的状态信息和所述接收到的状态信息发送给信息服务器,以便所述信息服务器根据所述更新的状态信息和所述接收到的状态信息判断所述存储流水线中是否有从节点发生错误;
接收所述信息服务器返回的写入成功响应或写入失败响应;
若接收到所述信息服务器返回的写入成功响应,则向所述客户端发送上传成功响应;若接收到所述信息服务器返回的写入失败响应,则向所述客户端发送上传失败响应。
另一方面,提供了一种数据包上传方法,所述方法包括:
接收存储流水线中上一节点发送的数据包,将所述数据包的副本写入本地存储的所述数据包对应的文件块副本,并更新所述文件块副本的状态信息;
向所述存储流水线中的主节点发送对所述数据包的响应,所述对所述数据包的响应中携带有更新的所述文件块副本的状态信息。
另一方面,提供了一种数据包上传方法,所述方法包括:
接收存储流水线中的主节点发送的所述存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息;
根据接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误;
若判断所述存储流水线中有从节点发生错误,则向所述主节点发送写入失败响应,否则,向所述主节点发送写入成功响应。
另一方面,提供了一种客户端,所述客户端包括:上传模块、响应接收模块和流水线建立模块;
所述上传模块,用于将一数据包上传到存储流水线,以便所述存储流水线上的主节点和各从节点将所述数据包的副本轮流写入各自本地存储的所述数据包对应的文件块副本,所述存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
所述响应接收模块,用于接收所述主节点返回的上传成功响应或上传失败响应;
若所述响应接收模块接收到所述上传成功响应,则所述上传模块,用于继续上传下一数据包;
若所述响应接收模块接收到所述上传失败响应,则所述流水线建立模块,用于重新建立存储流水线;
所述上传模块,还用于将所述数据包上传到所述重新建立的存储流水线。
另一方面,提供了一种主节点,所述主节点包括:数据包接收模块、写入模块、信息更新模块、数据包发送模块、第一响应接收模块、信息发送模块、第二响应接收模块和第一响应发送模块;
所述数据包接收模块,用于接收客户端上传的数据包;
所述写入模块,用于将所述数据包接收模块接收到的数据包的副本写入本地存储的所述数据包对应的文件块副本;
所述信息更新模块,用于更新所述文件块副本的状态信息;
所述数据包发送模块,用于将所述数据包发送给存储流水线上的一至多个从节点;
所述第一响应接收模块,用于接收所述一至多个从节点发送的对所述数据包的响应,所述对所述数据包的响应中携带有所述一至多个从节点本地存储的所述数据包对应的文件块副本的状态信息;
所述信息发送模块,用于将所述更新的状态信息和所述接收到的状态信息发送给信息服务器,以便所述信息服务器根据所述更新的状态信息和所述接收到的状态信息判断所述存储流水线中是否有从节点发生错误;
所述第二响应接收模块,用于接收所述信息服务器返回的写入成功响应或写入失败响应;
若所述第二响应接收模块接收到所述信息服务器返回的写入成功响应,则所述第一响应发送模块,用于向所述客户端发送上传成功响应;
若所述第二响应接收模块接收到所述信息服务器返回的写入失败响应,则所述第一响应发送模块,用于向所述客户端发送上传失败响应。
另一方面,提供了一种从节点,所述从节点包括:
数据包接收模块,用于接收存储流水线中上一节点发送的数据包;
写入模块,用于将所述数据包的副本写入本地存储的所述数据包对应的文件块副本;
信息更新模块,用于更新所述文件块副本的状态信息;
响应发送模块,用于向所述存储流水线中的主节点发送对所述数据包的响应,所述对所述数据包的响应中携带有更新的所述文件块副本的状态信息。
另一方面,提供了一种信息服务器,所述信息服务器包括:
信息接收模块、判断模块和响应发送模块;
所述信息接收模块,用于接收存储流水线中的主节点发送的所述存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息;
所述判断模块,用于根据接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误;
若所述判断模块判断所述存储流水线中有从节点发生错误,则所述响应发送模块,用于向所述主节点发送写入失败响应;
若所述判断模块判断所述存储流水线中没有从节点发生错误,则所述响应发送模块,用于向所述主节点发送写入成功响应。
再一方面,提供了一种分布式文件系统,该分布式文件系统包括上述客户端、主节点、一至多个从节点以及信息服务器。
本发明实施例提供的技术方案带来的有益效果是:
通过上传数据包后接收主节点返回的上传成功响应或上传失败响应,若接收到上传失败响应响应,则重新建立的存储流水线,解决了现有技术中数据包上传过程中无法中止的问题,达到降低数据恢复过程复杂度的目的。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明背景技术提供的数据包上传流程图;
图2是本发明实施例一提供的数据包上传方法的方法流程图;
图3是本发明实施例二提供的数据包上传方法的方法流程图;
图4是本发明实施例三提供的数据包上传方法的方法流程图;
图5是本发明实施例四提供的数据包上传方法的方法流程图;
图6是本发明实施例五提供的数据包上传方法的方法流程图;
图7是本发明实施例六提供的客户端的装置结构图;
图8是本发明实施例七提供的客户端的装置结构图;
图9是本发明实施例八提供的主节点的装置结构图;
图10是本发明实施例九提供的从节点的装置结构图;
图11是本发明实施例十提供的信息服务器的装置结构图;
图12是本发明实施例十一提供的分布式文件系统的系统构成图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
请参见图2,其示出了本发明实施例一提供的数据包上传方法的方法流程图,该方法可以用于将文件数据包上传至分布式文件系统。该数据包上传方法可以包括:
步骤101,将一数据包上传到存储流水线,以便存储流水线上的主节点和各从节点将数据包的副本轮流写入各自本地存储的数据包对应的文件块副本,存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
步骤102,接收主节点返回的上传成功响应或上传失败响应;
步骤103,若接收到上传成功响应,则继续上传下一数据包,否则,重新建立存储流水线并将数据包上传到重新建立的存储流水线。
综上所述,本发明实施例一提供的数据包上传方法,通过上传数据包后接收主节点返回的上传成功响应或上传失败响应,若接收到上传失败响应响应,则重新建立的存储流水线,解决了现有技术中数据包上传过程中无法中止的问题,达到降低数据恢复过程复杂度的目的。
实施例二
为了对上述实施例一提供的数据包上传方法做进一步描述,请参见图3,其示出了本发明实施例二提供的数据包上传方法的方法流程图,该方法可以应用于将文件数据包上传至分布式文件系统的客户端中。该数据包上传方法可以包括:
步骤201,客户端判断是否已经建立有待上传数据包对应的存储流水线,若是,进入步骤203,否则,进入步骤202;
当有数据包需要上传时,客户端首先判断上传该数据包的存储流水线是否已经建立,如果时,则复用该存储流水线,否则,新建立一条存储流水线。
步骤202,客户端从信息服务器获取待上传数据包对应的文件块副本所在的节点的列表,根据获取的节点的列表生成该存储流水线;
如果判断没有建立存储流水线,或者存储流水线中有节点出错,则客户端向信息服务器获取的待上传数据包对应的文件块副本所在的节点的列表,并根据获取的节点的列表生成存储流水线。
具体的,保存在分布式文件系统中的文件由一至多个文件块组成,每个文件块的数据量有限制(比如,文件块最大数据量为64M),分布式文件系统中的信息服务器保存有各文件的Meta信息,其中,文件的Meta信息包括:该文件ID(Identity,标识码)和总数据量,该文件各文件块的数据量、各文件块的副本所在节点的列表(比如节点IP地址列表),各文件块的标识,各文件块校验码等等。客户端将待上传的数据包对应文件的ID发送给信息服务器,信息服务器根据该文件ID,将该文件最后一个文件块的副本所在节点的列表发送给客户端,客户端根据信息服务器发送的节点的列表生成存储流水线。如果该数据包时某文件的第一个数据包,则信息服务器为该文件分配一个节点列表,并将新分配的节点列表发送给客户端。
其中,生成的存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点。
步骤203,客户端将一个待上传的数据包上传到该存储流水线;
具体的,客户端将一个待上传的数据包发送给存储流水线上的主节点,该数据包自主节点开始,按照该存储流水线上的节点排列顺序在各节点上依次传递,以便各节点将该数据包的副本写入各自本地存储的该数据包对应的文件块副本。对于该存储流水线上的任一节点,如果该数据包对应一个的已经存在但未写满的文件块副本,则该节点将该数据包的副本写入该未写满的文件块副本;如果该数据包对应一个新的文件块副本,则信息服务器会为该新文件块分配一个全局唯一的ID,该节点可以根据该新分配的文件块ID在本地建立该新文件块的副本,并将该数据包的副本写入新建立的文件块副本。
步骤204,客户端接收该存储流水线的主节点返回的上传失败响应或上传成功响应,若客户端接收到上传成功响应,进入步骤205,否则,返回步骤202;
数据包上传存储流水线之后,主节点可以收集各从节点各自存储的该数据包对应的文件块副本的状态信息,并将收集到的各从节点各自存储的该数据包对应的文件块副本的状态信息以及自身存储的该数据包对应的文件块副本的状态信息发送给信息服务器,由信息服务器据此判断该存储流水线上是否有从节点发生错误,如果信息服务器判断有从节点发生错误,则主节点向客户端发送上传失败响应,如果信息服务器判断没有从节点发生错误,则主节点向客户端发送上传成功响应。同时,当信息服务器判断有从节点发生错误时,存储流水线上的主节点以及未发生错误的从节点还可以将该数据包对应的文件块副本恢复到写入该数据包之前的状态。
如果客户端接收到主节点返回的上传成功响应,则进入步骤205,如果客户端接收到主节点返回的上传失败响应,则返回步骤202,重新从信息服务器获取节点列表并生成存储流水线。
优选的,如果客户端上传数据包时检测到主节点发生错误,则同样返回步骤202重新生成存储流水线。
步骤205,客户端判断数据包是否上传完毕,若是,返回步骤203,否则,流程结束。
如果客户端接收到主节点返回的上传成功响应,则客户端可以判断数据包是否上传完毕,如果是,流程结束,否则,返回步骤203继续上传下一数据包。
综上所述,本发明实施例二提供的数据包上传方法,通过在将一个数据包上传存储流水线之后,等待存储流水线上的主节点返回上传成功响应或上传失败响应,如接收到上传成功响应,则继续上传下一数据包,否则重新建立存储流水线,解决了现有技术中数据包上传过程中无法中止的问题,达到降低数据恢复过程复杂度的目的。
实施例三
对应于上述实施例二提供的数据包上传方法中信息服务器判断存储流水线中是否有从节点发生错误的步骤,请参见图4,其示出了本发明实施例三提供的一种数据包上传方法,该方法用于将客户端上传的数据包写入存储流水线上各节点本地存储的该数据包对应的文件块副本。该数据包上传方法可以包括:
步骤301,主节点接收客户端上传的数据包,并将数据包的副本写入本地存储的数据包对应的文件块副本;
如果该数据包对应一个的已经存在但未写满的文件块副本,则主节点将该数据包的副本写入该未写满的文件块副本;如果该数据包对应一个新的文件块副本,则信息服务器会为该新文件块分配一个全局唯一的ID,主节点可以根据该新分配的文件块ID在本地建立该新文件块的副本,并将该数据包的副本写入新建立的文件块副本。
步骤302,主节点更新该文件块副本的状态信息,其中,状态信息包括第一状态信息和第二状态信息;
具体的,主节点可以在每个文件块副本的文件头中保存该文件块的两个状态:第一状态信息new_state和第二状态信息old_state。其中,new_state为该文件块写入该数据包之后的状态信息,old_state为该文件块写入该数据包之前的状态信息。其中,文件块副本的状态信息具体可以包括:该文件块副本对应文件的ID、该文件块副本的ID、该文件块副本的数据量、该文件块副本所在节点的列表(比如节点IP地址列表),该文件块副本的校验码等等。
具体的,主节点将原有状态信息中的第一状态信息new_state更新为第二状态信息old_state;主节点根据更新后的old_state以及该数据包的数据量计算更新后的new_state。
步骤303,将数据包发送给存储流水线上的一至多个从节点;
主节点按照该存储流水线上的节点排列顺序,将该数据包发送给下一个从节点,以便该从节点将该数据包的副本写入自身本地存储的该数据包对应的文件块副本。
步骤304,接收该一至多个从节点发送的对数据包的响应,该对数据包的响应中携带有一至多个从节点本地存储的数据包对应的文件块副本的状态信息;
主节点向下一从节点发送数据包之后,等待接收该流水线上各从节点返回的对该数据包的响应,其中,对该数据包的响应中携带有更新后的各从节点本地存储的数据包对应的文件块副本的状态信息。
步骤305,将更新的状态信息和接收到的状态信息发送给信息服务器,以便信息服务器根据更新的状态信息和接收到的状态信息判断存储流水线中是否有从节点发生错误;
主节点可以在向下一从节点发送数据包后开始计时,并在预定时间之后,将自身更新的状态信息和接收到的对该数据包的响应中携带的状态信息发送给信息服务器。
步骤306,接收信息服务器返回的写入成功响应或写入失败响应;
如果信息服务器若判断存储流水线中有从节点发生错误,则可以向主节点返回写入失败响应,如果判断存储流水线中没有从节点发生错误,则可以向主节点返回写入成功响应。
步骤307,若接收到信息服务器返回的写入成功响应,则向客户端发送上传成功响应;
步骤308,若接收到信息服务器返回的写入失败响应,则向客户端发送上传失败响应;
步骤309,根据更新后的第二状态信息将文件块副本恢复至写入数据包之前的状态;
如果主节点接收到信息服务器返回的写入失败响应,则可以根据更新后该数据包对应的文件块副本的第二状态信息old_state将该文件块副本恢复到写入该数据包之前的状态。具体的,主节点可以根据old_state中的文件块副本数据量将该文件块副本恢复到写入该数据包之前的状态。
需要说明的是,主节点将该文件块副本恢复到写入该数据包之前的状态时,还需要重新将第二状态信息old_state恢复为第一状态信息new_state,此时,恢复后的文件块副本的状态信息中的第二状态信息old_state可以为空。
步骤310,向一至多个从节点发送状态恢复通知,以便一至多个从节点根据自身更新后的第二状态信息将各自存储的数据包对应的文件块副本恢复至写入数据包之前的状态。
在将该文件块副本恢复到写入该数据包之前的状态的同时,主节点还可以向存储流水线上的各从节点发送状态恢复通知。
综上所述,本发明实施例三提供的数据包上传方法,通过在写入数据包之后更新数据包对应的状态信息,并接收各从节点对数据包返回的响应,并将自身更新的状态信息和各从节点对数据包返回的响应中携带的状态信息发送给信息服务器,以便信息服务器根据主节点自身更新的状态信息和各从节点对数据包返回的响应中携带的状态信息判断存储流水线中是否有从节点发生错误,同时,在信息服务器判断存储流水线中有从节点发生错误时,将该数据包对应文件块副本恢复到写入该数据包之前的状态,达到了降低数据恢复过程复杂度的目的。
实施例四
为了对上述实施例二和三中的从节点做进一步描述,请参见图5,其示出了本发明实施例四提供的一种数据包上传方法的方法流程图,该数据包上传方法可以应用于将客户端上传的数据包写入存储流水线中的从节点。该数据包上传方法可以包括:
步骤401,从节点接收存储流水线中上一节点发送的数据包,将该数据包的副本写入本地存储的该数据包对应的文件块副本;
其中,上一节点可以是存储流水线的主节点,也可以是另一从节点。
步骤402,从节点更新该文件块副本的状态信息;
状态信息包括第一状态信息和第二状态信息,其中,第一状态信息为文件块写入数据包之后的状态信息,第二状态信息为文件块写入数据包之前的状态信息。从节点将原有状态信息中的第一状态信息更新为第二状态信息;并根据更新后的第二状态信息以及数据包的数据量计算更新后的第一状态信息。具体的更新方法请见上述实施例三中的步骤302,此处不再赘述。
步骤403,从节点向存储流水线中的主节点发送对该数据包的响应,对该数据包的响应中携带有更新后的文件块副本的状态信息。
为了便于信息服务器根据各从节点本地存储的文件块副本的状态信息判断存储流水线中是否有从节点发生错误,从节点在更新接收到的数据包对应的文件块副本的状态信息后,需要向存储流水线的主节点返回携带有自身本地存储的,该数据包对应的文件块副本的状态信息的响应。
步骤404,从节点接收主节点发送的状态恢复通知,根据更新后的第二状态信息将文件块副本恢复至写入数据包之前的状态;
当信息服务器判断存储流水线中有从节点发生错误时,主节点可以向从节点发送状态恢复通知,此时,从节点可以根据更新后的第二状态信息将对应的文件块副本恢复至写入数据包之前的状态。具体的文件块副本恢复方法请参见步骤308,此处不再赘述。
优选的,如果该从节点不是该存储流水线的最后一个节点,则该从节点将该数据包发送给存储流水线中的下一个从节点,否则不发送该数据包。
综上所述,本发明实施例四提供的数据包上传方法,通过向主节点返回携带有更新后的文件块副本的状态信息的响应,以便信息处理器判断存储流水线中是否有从节点发生错误,同时,在信息服务器判断存储流水线中有从节点发生错误时将数据包对应的文件块副本恢复至写入该数据包之前的状态,达到降低数据恢复过程复杂度的目的。
实施例五
为了从信息服务器的角度对上述实施例二和三提供的数据包上传方法做进一步描述,请参见图6,其示出了本发明实施例五提供的一种数据包上传方法的方法流程图。该方法可以包括:
步骤501,信息服务器接收存储流水线中的主节点发送的该存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息;
某一数据包上传到存储流水线之后,主节点可以接收各从节点返回的携带有各自本地存储的该数据包对应文件块副本的状态信息的响应,并将自身存储的该数据包对应的文件块副本的状态信息和接收到的该数据包对应的文件块副本的状态信息发送给信息处理器。
步骤502,信息服务器根据接收到的主节点和从节点各自存储的文件块副本的状态信息判断该存储流水线中是否有从节点发生错误;
信息服务器根据本地存储的文件块副本所在节点的列表以及接收到的主节点和从节点各自存储的文件块副本的状态信息判断存储流水线中是否有从节点发生错误。
具体的,为了便于对分布式文件系统中的各节点进行集中式诊断和管理,系统中还设置有独立的管理服务器,用于定期对各节点进行检测,当管理服务器检测到某节点发生错误时,可以将该节点上所有的文件块副本备份至另一节点,同时将检测与备份结果发送给信息服务器。
如果该存储流水线中有从节点发生错误(比如某一从节点崩溃),此时,流水线中的主节点无法接收到发生错误的从节点返回的对上传数据包的响应,从而,主节点发送给信息服务器的状态信息中就不会包含有发生错误的从节点所存储的文件块副本的状态信息。信息服务器可以根据本地存储的该文件块副本所在节点的列表以及接收到的主节点和从节点各自存储的文件块副本的状态信息判断是否有从节点没有向主节点返回响应,如果有从节点没有向主节点返回响应,则判断该存储流水线中有从节点发生错误。
步骤503,信息服务器若判断该存储流水线中有从节点发生错误,则向该主节点发送写入失败响应;
如果判断该存储流水线中有从节点发生错误,则信息服务器向主节点发送写入失败响应,以便存储流水线中的各节点将相应的文件块副本恢复至写入数据包之前的状态。
步骤504,信息服务器若判断该存储流水线中没有从节点发生错误,则向该主节点发送写入成功响应;
步骤505,信息服务器重新生成文件块副本所在节点的列表,并将重新生成的文件块副本所在节点的列表发送给客户端,以便客户端根据重新生成的文件块副本所在节点的列表生成新的存储流水线。
信息服务器判断存储流水线中有从节点发生错误时,可以根据管理服务器错误节点的检测和备份信息,重新生成该文件块副本所在节点的列表。
具体比如,该文件块副本所在节点列表原来为:a、b和c,管理服务器检测到其中的节点c发生错误,此时,管理服务器将节点c上存储的该文件块副本备份至节点d,并将检测与备份信息发送给信息服务器,信息服务器根据该检测与备份信息重新生成该文件块副本所在节点列表为:a、b和d。
综上所述,本发明实施例五提供的数据包上传方法,通过接收存储流水线中的主节点发送的该存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息,据此判断该存储流水线中是否有从节点发生错误,且在判断出该存储流水线中有从节点发生错误时,向主节点发送写入错误响应并向重新生成对应文件块副本所在节点的列表,以便于存储流水线中的各节点恢复文件块副本的状态,达到降低数据恢复过程复杂度的目的。
实施例六
对应于上述实施例一提供的数据包上传方法,请参见图7,其示出了本发明实施例六提供的一种客户端的装置结构图,还客户端可应用于在分布式文件系统中上传数据包,该客户端可以包括:上传模块601、响应接收模块602和流水线建立模块603;
上传模块601,用于将一数据包上传到存储流水线,以便存储流水线上的主节点和各从节点将数据包的副本轮流写入各自本地存储的数据包对应的文件块副本,存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
响应接收模块602,用于接收主节点返回的上传成功响应或上传失败响应;
若响应接收模块602接收到上传成功响应,则上传模块601,用于继续上传下一数据包;
若响应接收模块602接收到上传失败响应,则流水线建立模块603,用于重新建立存储流水线;
上传模块601,还用于将数据包上传到重新建立的存储流水线。
综上所述,本发明实施例六提供的客户端,通过上传数据包后接收主节点返回的上传成功响应或上传失败响应,若接收到上传失败响应响应,则重新建立的存储流水线,解决了现有技术中数据包上传过程中无法中止的问题,达到降低数据恢复过程复杂度的目的。
实施例七
为了对上述实施例六提供的客户端做进一步描述,对应参考上述实施例二提供的数据包上传方法,请参见图8,其示出了本发明实施例七提供的一种客户端的装置结构图,该客户端可以应用于在分布式文件系统中上传数据包,该客户端可以包括:上传模块701、响应接收模块702和流水线建立模块703;
上传模块701,用于将一数据包上传到存储流水线,以便存储流水线上的主节点和各从节点将数据包的副本轮流写入各自本地存储的数据包对应的文件块副本,存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
响应接收模块702,用于接收主节点返回的上传成功响应或上传失败响应;
若响应接收模块702接收到上传成功响应,则上传模块701,用于继续上传下一数据包;
若响应接收模块702接收到上传失败响应,则流水线建立模块703,用于重新建立存储流水线;
上传模块701,还用于将数据包上传到重新建立的存储流水线。
该客户端还包括:
判断模块704,用于在上传模块701将一数据包上传到存储流水线之前,判断存储流水线是否已建立;
若判断模块704判断存储流水线已建立,则上传模块701将数据包上传存储流水线;
若判断模块704判断存储流水线未建立,则流水线建立模块703建立存储流水线。
进一步的,流水线建立模块具体包括:
列表获取单元703a,用于从信息服务器获取数据包对应的文件块副本所在的节点的列表;
流水线生成单元703b,用于根据列表获取单元获取的节点的列表生成存储流水线。
综上所述,本发明实施例七提供的客户端,通过在将一个数据包上传存储流水线之后,等待存储流水线上的主节点返回上传成功响应或上传失败响应,如接收到上传成功响应,则继续上传下一数据包,否则重新建立存储流水线,解决了现有技术中数据包上传过程中无法中止的问题,达到降低数据恢复过程复杂度的目的。
实施例八
对应于上述实施例八提供的客户端中信息服务器判断存储流水线中是否有从节点发生错误的部分内容,参考上述实施例三提供的数据包上传方法,请参见图9,其示出了本发明实施例八提供的一种主节点的装置结构图,该主节点可以包括:数据包接收模块801、写入模块802、信息更新模块803、数据包发送模块804、第一响应接收模块805、信息发送模块806、第二响应接收模块807和第一响应发送模块808;
数据包接收模块801,用于接收客户端上传的数据包;
写入模块802,用于将数据包接收模块801接收到的数据包的副本写入本地存储的数据包对应的文件块副本;
信息更新模块803,用于更新文件块副本的状态信息;
数据包发送模块804,用于将数据包发送给存储流水线上的一至多个从节点;
第一响应接收模块805,用于接收一至多个从节点发送的对数据包的响应,对数据包的响应中携带有一至多个从节点本地存储的数据包对应的文件块副本的状态信息;
信息发送模块806,用于将更新的状态信息和接收到的状态信息发送给信息服务器,以便信息服务器根据更新的状态信息和接收到的状态信息判断存储流水线中是否有从节点发生错误;
第二响应接收模块807,用于接收信息服务器返回的写入成功响应或写入失败响应;
若第二响应接收模块807接收到信息服务器返回的写入成功响应,则第一响应发送模块808,用于向客户端发送上传成功响应;
若第二响应接收模块807接收到信息服务器返回的写入失败响应,则第一响应发送模块808,用于向客户端发送上传失败响应。
其中,状态信息包括第一状态信息和第二状态信息;
信息更新模块803,具体包括:
第一更新单元803a,用于将原有状态信息中的第一状态信息更新为第二状态信息;
第二更新单元803b,用于根据更新后的第二状态信息以及数据包的数据量计算更新后的第一状态信息;
其中,第一状态信息为文件块写入数据包之后的状态信息,第二状态信息为文件块写入数据包之前的状态信息。
该主节点还包括:状态恢复模块809;
状态恢复模块具体包括:状态恢复单元809a和通知发送单元809b;
第二响应接收模块807接收到信息服务器返回的写入错误响应之后,状态恢复单元809a,用于根据更新后的第二状态信息将文件块副本恢复至写入数据包之前的状态;
第二响应接收模块807接收到信息服务器返回的写入错误响应之后,通知发送单元809b,用于向一至多个从节点发送状态恢复通知,以便一至多个从节点根据自身更新后的第二状态信息将各自存储的数据包对应的文件块副本恢复至写入数据包之前的状态。
综上所述,本发明实施例八提供的主节点,通过在写入数据包之后更新数据包对应的状态信息,并接收各从节点对数据包返回的响应,并将自身更新的状态信息和各从节点对数据包返回的响应中携带的状态信息发送给信息服务器,以便信息服务器根据主节点自身更新的状态信息和各从节点对数据包返回的响应中携带的状态信息判断存储流水线中是否有从节点发生错误,同时,在信息服务器判断存储流水线中有从节点发生错误时,将该数据包对应文件块副本恢复到写入该数据包之前的状态,达到了降低数据恢复过程复杂度的目的。
实施例九
为了对上述实施例七和八中的从节点做进一步描述,参考实施例四提供的数据包上传方法,请参见图10,其示出了本发明实施例九提供的一种从节点的装置结构图,该从节点可以应用于在分布式文件系统中存储文件块副本。该从节点可以包括:
数据包接收模块901,用于接收存储流水线中上一节点发送的数据包;
写入模块902,用于将数据包的副本写入本地存储的数据包对应的文件块副本;
信息更新模块903,用于更新文件块副本的状态信息;
响应发送模块904,用于向存储流水线中的主节点发送对数据包的响应,对数据包的响应中携带有更新的文件块副本的状态信息。
其中,状态信息包括第一状态信息和第二状态信息;
信息更新模块903,具体包括:
第一更新单元903a,用于将原有状态信息中的第一状态信息更新为第二状态信息;
第二更新单元903b,用于根据更新后的第二状态信息以及数据包的数据量计算更新后的第一状态信息;
其中,第一状态信息为文件块写入数据包之后的状态信息,第二状态信息为文件块写入数据包之前的状态信息。
该从节点还包括:
通知接收模块905,用于接收主节点发送的状态恢复通知;
状态恢复模块906,用于根据更新后的第二状态信息将文件块副本恢复至写入数据包之前的状态。
进一步的,从节点还包括:
数据包发送模块907,用于当该从节点不是该存储流水线上的最后一个节点时,向该从节点的下一个节点发送该数据包。
实施例十
为了对上述实施例七和八所提及的信息服务器做进一步描述,参考实施例五提供的数据包上传方法,请参见图11,其示出了本发明实施例十提供的一种信息服务器的装置结构图,该信息服务器可以包括:信息接收模块1001、判断模块1002和响应发送模块1003;
信息接收模块1001,用于接收存储流水线中的主节点发送的存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息;
判断模块1002,用于根据接收到的主节点和从节点各自存储的文件块副本的状态信息判断存储流水线中是否有从节点发生错误;
若判断模块1002判断存储流水线中有从节点发生错误,则响应发送模块1003,用于向主节点发送写入失败响应;
若判断模块1002判断存储流水线中没有从节点发生错误,则响应发送模块1003,用于向主节点发送写入成功响应。
判断模块1002,具体用于根据本地存储的文件块副本所在节点的列表以及接收到的主节点和从节点各自存储的文件块副本的状态信息判断存储流水线中是否有从节点发生错误。
信息服务器还包括:列表生成模块1004和列表发送模块1005;
判断模块1002判断存储流水线中有从节点发生错误之后,列表生成模块1004,用于重新生成文件块副本所在节点的列表;
列表发送模块1005,用于将重新生成的文件块副本所在节点的列表发送给客户端,以便客户端根据重新生成的文件块副本所在节点的列表生成新的存储流水线。
综上所述,本发明实施例十提供的信息服务器,通过接收存储流水线中的主节点发送的该存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息,据此判断该存储流水线中是否有从节点发生错误,且在判断出该存储流水线中有从节点发生错误时,向主节点发送写入错误响应并向重新生成对应文件块副本所在节点的列表,以便于存储流水线中的各节点恢复文件块副本的状态,达到降低数据恢复过程复杂度的目的。
实施例十一
请参见图12,其示出了本发明实施例十一提供的一种分布式文件系统的系统构成图,该分布式文件系统可以包括:
如上述实施例六或七提供的客户端200、如上述实施例八提供的主节点400、一至多个如上述实施例九提供的从节点600以及如上述实施例十提供的信息服务器800。
综上所述,本发明实施例十一提供的分布式文件系统,通过主节点在写入数据包之后更新数据包对应的状态信息,并接收各从节点对数据包返回的响应,并将自身更新的状态信息和各从节点对数据包返回的响应中携带的状态信息发送给信息服务器,以便信息服务器根据主节点自身更新的状态信息和各从节点对数据包返回的响应中携带的状态信息判断存储流水线中是否有从节点发生错误,同时,在信息服务器判断存储流水线中有从节点发生错误时,将该数据包对应文件块副本恢复到写入该数据包之前的状态,达到了降低数据恢复过程复杂度的目的。
需要说明的是:上述实施例提供的客户端、主节点、从节点以及信息服务器在上传数据包时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式文件系统与数据包上传方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (18)

1.一种数据包上传方法,其特征在于,所述方法包括:
将一数据包上传到存储流水线,以便所述存储流水线上的主节点和各从节点将所述数据包的副本轮流写入各自本地存储的所述数据包对应的文件块副本,所述存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
接收所述主节点返回的上传失败响应或上传成功响应,所述主节点还用于在将所述数据包的副本写入所述主节点存储的所述数据包对应的文件块副本之后,更新所述文件块副本的状态信息,其中,更新的状态信息包括更新的第一状态信息和更新的第二状态信息,所述更新的第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量,所述更新的第一状态信息包括所述文件块副本写入所述数据包的副本之后的数据量;所述主节点还用于在确定所述数据包在任一所述从节点中写入失败时,根据所述更新的第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态,并向所述从节点发送状态恢复通知;
若接收到所述上传成功响应,则继续上传下一数据包,否则,重新建立存储流水线并将所述数据包上传到所述重新建立的存储流水线。
2.根据权利要求1所述的数据包上传方法,其特征在于,所述将一数据包上传到存储流水线之前,所述方法还包括:
判断所述存储流水线是否已建立;
若所述存储流水线已建立,则将所述数据包上传所述存储流水线;
若所述存储流水线未建立,则建立所述存储流水线。
3.根据权利要求2所述的数据包上传方法,其特征在于,所述建立所述存储流水线,具体包括:
从信息服务器获取所述数据包对应的文件块副本所在的节点的列表,根据所述节点的列表生成所述存储流水线。
4.一种数据包上传方法,其特征在于,所述方法包括:
接收客户端上传的数据包,将所述数据包的副本写入本地存储的所述数据包对应的文件块副本,并更新所述文件块副本的状态信息,其中,更新的状态信息包括更新后的第一状态信息和更新的第二状态信息,所述更新的第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量,所述更新的第一状态信息包括所述文件块副本写入所述数据包的副本之后的数据量;
将所述数据包发送给存储流水线上的一至多个从节点,并接收所述一至多个从节点发送的对所述数据包的响应,所述对所述数据包的响应中携带有所述一至多个从节点本地存储的所述数据包对应的文件块副本的状态信息;
将所述更新的状态信息和所述接收到的状态信息发送给信息服务器,以便所述信息服务器根据所述更新的状态信息和所述接收到的状态信息判断所述存储流水线中是否有从节点发生错误;
接收所述信息服务器返回的写入成功响应或写入失败响应;
若接收到所述信息服务器返回的写入成功响应,则向所述客户端发送上传成功响应,所述客户端用于在接收到所述上传成功响应之后,继续上传下一数据包;
若接收到所述信息服务器返回的写入失败响应,则向所述客户端发送上传失败响应;并根据所述更新的第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态,向所述一至多个从节点发送状态恢复通知。
5.一种数据包上传方法,其特征在于,所述方法包括:
接收存储流水线中上一节点发送的数据包,将所述数据包的副本写入本地存储的所述数据包对应的文件块副本,并更新所述文件块副本的状态信息,其中,更新的状态信息包括更新的第一状态信息和更新的第二状态信息,所述更新的第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量,所述更新的第一状态信息包括所述文件块副本写入所述数据包的副本之后的数据量;
向所述存储流水线中的主节点发送对所述数据包的响应,所述对所述数据包的响应中携带有所述更新的状态信息,所述主节点用于在所述存储流水线中没有从节点发生错误时,向客户端发送上传成功响应,所述客户端用于在接收到所述上传成功响应之后,继续上传下一数据包,所述主节点还用于在所述存储流水线中有从节点发生错误时,向所述客户端发送上传失败响应,并向所述存储流水线中的从节点发送状态恢复通知;
若接收到所述主节点发送的所述状态恢复通知,则根据所述更新的第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态。
6.一种数据包上传方法,其特征在于,所述方法包括:
接收存储流水线中的主节点发送的所述存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息,所述状态信息包括第一状态信息和第二状态信息,所述第一状态信息包括所述文件块副本写入数据包的副本之后的数据量,所述第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量;
根据接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误;
若判断所述存储流水线中有从节点发生错误,则向所述主节点发送写入失败响应,否则,向所述主节点发送写入成功响应,所述主节点用于在接收到所述写入成功响应之后,向客户端发送上传成功响应,所述客户端用于在接收到所述上传成功响应之后,继续上传下一数据包,所述主节点还用于在接收到所述写入失败响应之后,根据所述第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态,并向所述从节点发送状态恢复通知。
7.根据权利要求6所述的数据包上传方法,其特征在于,所述根据接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误,具体包括:
根据本地存储的所述文件块副本所在节点的列表以及接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误。
8.根据权利要求6所述的数据包上传方法,其特征在于,所述判断所述存储流水线中有从节点发生错误之后,所述方法还包括:
重新生成所述文件块副本所在节点的列表;
将重新生成的所述文件块副本所在节点的列表发送给客户端,以便所述客户端根据重新生成的所述文件块副本所在节点的列表生成新的存储流水线。
9.一种客户端,其特征在于,所述客户端包括:上传模块、响应接收模块和流水线建立模块;
所述上传模块,用于将一数据包上传到存储流水线,以便所述存储流水线上的主节点和各从节点将所述数据包的副本轮流写入各自本地存储的所述数据包对应的文件块副本,所述存储流水线包含有至少两个节点,其中第一个节点为主节点,其余节点为从节点;
所述响应接收模块,用于接收所述主节点返回的上传成功响应或上传失败响应,所述主节点还用于在将所述数据包的副本写入所述主节点存储的所述数据包对应的文件块副本之后,更新所述文件块副本的状态信息,其中,更新的状态信息包括更新的第一状态信息和更新的第二状态信息,所述更新的第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量,所述更新的第一状态信息包括所述文件块副本写入所述数据包的副本之后的数据量;所述主节点还用于在确定所述数据包在任一所述从节点中写入失败时,根据所述更新的第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态,并向所述从节点发送状态恢复通知;
若所述响应接收模块接收到所述上传成功响应,则所述上传模块,用于继续上传下一数据包;
若所述响应接收模块接收到所述上传失败响应,则所述流水线建立模块,用于重新建立存储流水线;
所述上传模块,还用于将所述数据包上传到所述重新建立的存储流水线。
10.根据权利要求9所述的客户端,其特征在于,所述客户端还包括:
判断模块,用于在所述上传模块将一数据包上传到存储流水线之前,判断所述存储流水线是否已建立;
若所述判断模块判断所述存储流水线已建立,则所述上传模块将所述数据包上传所述存储流水线;
若所述判断模块判断所述存储流水线未建立,则所述流水线建立模块建立所述存储流水线。
11.根据权利要求10所述的客户端,其特征在于,所述流水线建立模块具体包括:
列表获取单元,用于从信息服务器获取所述数据包对应的文件块副本所在的节点的列表;
流水线生成单元,用于根据所述列表获取单元获取的所述节点的列表生成所述存储流水线。
12.一种主节点,其特征在于,所述主节点包括:数据包接收模块、写入模块、信息更新模块、数据包发送模块、第一响应接收模块、信息发送模块、第二响应接收模块、第一响应发送模块和状态恢复模块;
所述数据包接收模块,用于接收客户端上传的数据包;
所述写入模块,用于将所述数据包接收模块接收到的数据包的副本写入本地存储的所述数据包对应的文件块副本;
所述信息更新模块,用于更新所述文件块副本的状态信息,其中,更新的状态信息包括更新的第一状态信息和更新的第二状态信息,所述更新的第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量,所述更新的第一状态信息包括所述文件块副本写入所述数据包的副本之后的数据量;
所述数据包发送模块,用于将所述数据包发送给存储流水线上的一至多个从节点;
所述第一响应接收模块,用于接收所述一至多个从节点发送的对所述数据包的响应,所述对所述数据包的响应中携带有所述一至多个从节点本地存储的所述数据包对应的文件块副本的状态信息;
所述信息发送模块,用于将所述更新的状态信息和所述接收到的状态信息发送给信息服务器,以便所述信息服务器根据所述更新的状态信息和所述接收到的状态信息判断所述存储流水线中是否有从节点发生错误;
所述第二响应接收模块,用于接收所述信息服务器返回的写入成功响应或写入失败响应;
若所述第二响应接收模块接收到所述信息服务器返回的写入成功响应,则所述第一响应发送模块,用于向所述客户端发送上传成功响应,所述客户端用于在接收到所述上传成功响应之后,继续上传下一数据包;
若所述第二响应接收模块接收到所述信息服务器返回的写入失败响应,则所述第一响应发送模块,用于向所述客户端发送上传失败响应;
所述状态恢复模块,用于根据所述更新后的第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态,向所述一至多个从节点发送状态恢复通知。
13.一种从节点,其特征在于,所述从节点包括:
数据包接收模块,用于接收存储流水线中上一节点发送的数据包;
写入模块,用于将所述数据包的副本写入本地存储的所述数据包对应的文件块副本;
信息更新模块,用于更新所述文件块副本的状态信息,其中,更新的状态信息包括更新的第一状态信息和更新的第二状态信息,所述更新的第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量,所述更新的第一状态信息包括所述文件块副本写入所述数据包的副本之后的数据量;
响应发送模块,用于向所述存储流水线中的主节点发送对所述数据包的响应,所述对所述数据包的响应中携带有所述更新的状态信息,所述主节点用于在所述存储流水线中没有从节点发生错误时,向客户端发送上传成功响应,所述客户端用于在接收到所述上传成功响应之后,继续上传下一数据包,所述主节点还用于在所述存储流水线中有从节点发生错误时,向所述客户端发送上传失败响应,并向所述存储流水线中的从节点发送状态恢复通知;
通知接收模块,用于接收所述主节点发送的所述状态恢复通知;
状态恢复模块,用于根据所述更新的第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态。
14.一种信息服务器,其特征在于,所述信息服务器包括:信息接收模块、判断模块和响应发送模块;
所述信息接收模块,用于接收存储流水线中的主节点发送的所述存储流水线中的主节点和一至多个从节点各自存储的文件块副本的状态信息,所述状态信息包括第一状态信息和第二状态信息,所述第一状态信息包括所述文件块副本写入数据包的副本之后的数据量,所述第二状态信息包括所述文件块副本写入所述数据包的副本之前的数据量;
所述判断模块,用于根据接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误;
若所述判断模块判断所述存储流水线中有从节点发生错误,则所述响应发送模块,用于向所述主节点发送写入失败响应;
若所述判断模块判断所述存储流水线中没有从节点发生错误,则所述响应发送模块,用于向所述主节点发送写入成功响应,所述主节点用于在接收到所述写入成功响应之后,向客户端发送上传成功响应,所述客户端用于在接收到所述上传成功响应之后,继续上传下一数据包,所述主节点还用于在接收到所述写入失败响应之后,根据所述第二状态信息将所述文件块副本恢复至写入所述数据包的副本之前的状态,并向所述从节点发送状态恢复通知。
15.根据权利要求14所述的信息服务器,其特征在于,
所述判断模块,具体用于根据本地存储的所述文件块副本所在节点的列表以及接收到的所述主节点和从节点各自存储的文件块副本的状态信息判断所述存储流水线中是否有从节点发生错误。
16.根据权利要求14所述的信息服务器,其特征在于,所述信息服务器还包括:列表生成模块和列表发送模块;
所述判断模块判断所述存储流水线中有从节点发生错误之后,所述列表生成模块,用于重新生成所述文件块副本所在节点的列表;
所述列表发送模块,用于将重新生成的所述文件块副本所在节点的列表发送给客户端,以便所述客户端根据重新生成的所述文件块副本所在节点的列表生成新的存储流水线。
17.一种分布式文件系统,其特征在于,所述系统包括:
权利要求9至11任一所述的客户端、如权利要求12所述的主节点、一至多个如权利要求13所述的从节点以及如权利要求14至16任一所述的信息服务器。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序,所述程序用于实现如权利要求1至3任一项所述的方法,或者用于实现如权利要求4所述的方法,或者用于实现如权利要求5所述的方法,或者用于实现如权利要求6至8任一项所述的方法。
CN201210505110.4A 2012-11-30 2012-11-30 数据包上传方法、客户端、节点、信息服务器及系统 Active CN103856511B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210505110.4A CN103856511B (zh) 2012-11-30 2012-11-30 数据包上传方法、客户端、节点、信息服务器及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210505110.4A CN103856511B (zh) 2012-11-30 2012-11-30 数据包上传方法、客户端、节点、信息服务器及系统

Publications (2)

Publication Number Publication Date
CN103856511A CN103856511A (zh) 2014-06-11
CN103856511B true CN103856511B (zh) 2018-07-17

Family

ID=50863721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210505110.4A Active CN103856511B (zh) 2012-11-30 2012-11-30 数据包上传方法、客户端、节点、信息服务器及系统

Country Status (1)

Country Link
CN (1) CN103856511B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104980956B (zh) * 2015-06-29 2019-02-22 迈锐数据(北京)有限公司 远程批量更新节点固件的方法
CN106484311B (zh) * 2015-08-31 2019-07-19 华为数字技术(成都)有限公司 一种数据处理方法及装置
CN106855865B (zh) * 2015-12-09 2021-01-22 郑州双杰科技有限公司 水利水电大数据架构建设方法
CN106372868B (zh) * 2016-09-06 2020-02-18 联动优势科技有限公司 一种对写入区块链的交易数据的验证方法和装置
CN106878388B (zh) * 2017-01-04 2019-12-03 北京百度网讯科技有限公司 对分布式存储系统中慢节点的检测
CN110069494A (zh) * 2019-03-12 2019-07-30 北京字节跳动网络技术有限公司 数据存储方法、装置、电子设备、和计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102316003A (zh) * 2010-06-30 2012-01-11 鸿富锦精密工业(深圳)有限公司 路由器及利用该路由器实现远程启动操作系统的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4696089B2 (ja) * 2007-03-30 2011-06-08 三菱電機インフォメーションシステムズ株式会社 分散ストレージシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102316003A (zh) * 2010-06-30 2012-01-11 鸿富锦精密工业(深圳)有限公司 路由器及利用该路由器实现远程启动操作系统的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"基于HDFS的云存储服务系统研究";黄晓云;《中国优秀硕士学位论文全文数据库信息科技辑》;20100915(第9期);正文3.1-3.5节 *
"基于云计算数据存储技术的研究";杨丽婷;《中国优秀硕士学位论文全文数据库信息科技辑》;20111015;正文3.2.3、3.2.5小节 *

Also Published As

Publication number Publication date
CN103856511A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
CN103856511B (zh) 数据包上传方法、客户端、节点、信息服务器及系统
WO2019072294A3 (en) Achieving consensus among network nodes in a distributed system
CN106775959B (zh) 分布式事务处理方法和系统
CN104092718B (zh) 分布式系统及分布式系统中配置信息的更新方法
CN111182067B (zh) 一种基于星际文件系统ipfs的数据写入方法及设备
CN104378423B (zh) 元数据集群分布式存储系统及读取、写入存储数据的方法
CN105426439A (zh) 一种元数据的处理方法和装置
CN108040034A (zh) 分布式实时通信中间件
CN103870362B (zh) 一种数据恢复方法、装置及备份系统
CN101426025B (zh) 远程复制网络
CN101414949A (zh) 一种链式数据传输方法、节点及系统
CN104268001B (zh) 一种创建虚拟机的方法和创建虚拟机的装置
CN104750738B (zh) 一种更新数据信息的方法、数据节点、管理节点及系统
CN110750379B (zh) 一种etcd集群恢复方法、系统、设备及计算机介质
CN106777164A (zh) 一种数据迁移集群及数据迁移方法
CN102438042B (zh) 一种多点接入设备的动态参数同步方法及系统
JP2000307624A (ja) 送信情報中継システム及びその中継装置
CN106874142A (zh) 一种实时数据容错处理方法及系统
CN108023968A (zh) 一种会话信息同步方法、装置及设备
CN106210123A (zh) 一个多节点的软件定义网络控制器系统
CN108206839B (zh) 一种基于多数派数据存储方法、装置及系统
CN104243473B (zh) 一种数据传输的方法以及装置
CN105224550A (zh) 分布式流计算系统和方法
CN110244904A (zh) 一种数据存储系统、方法及装置
CN106339176A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20190729

Address after: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403

Co-patentee after: Tencent cloud computing (Beijing) limited liability company

Patentee after: Tencent Technology (Shenzhen) Co., Ltd.

Address before: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.

TR01 Transfer of patent right