CN102170466A - 一种数据处理方法及系统 - Google Patents
一种数据处理方法及系统 Download PDFInfo
- Publication number
- CN102170466A CN102170466A CN2011100773190A CN201110077319A CN102170466A CN 102170466 A CN102170466 A CN 102170466A CN 2011100773190 A CN2011100773190 A CN 2011100773190A CN 201110077319 A CN201110077319 A CN 201110077319A CN 102170466 A CN102170466 A CN 102170466A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- write
- data block
- operation status
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法及系统。一种数据处理方法,包括:发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。由以上技术方案可知,本发明提供的一种数据处理方法及系统,在文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据,即能够对同一文件同时进行写入数据和读取数据的操作,进而保证数据的完整性,提高系统的实时性和处理效率。
Description
技术领域
本发明涉及分布式系统技术领域,更具体地,特别是涉及一种数据处理方法及系统。
背景技术
日志类型文件是按照日期生成的独立日志文件,存储于分布式系统。分布式系统的体系架构普遍采用带外模式,即将文件元数据信息和文件内容数据分开存储以提升性能。
文件一般被划分成若干数据块,数据块存储在数据服务器上,用于存储文件内容数据。分布式系统中的并行处理程序可以对当前日期之前生成的日志类型文件中的文件内容数据进行并行处理。而所谓并行处理就是将对一个文件的任务拆分为多个子任务,由多个数据服务器同时执行,每个数据服务器在执行各自子任务时,只处理与自身子任务相对应的数据块,这样可以提升处理速度。
然而,发明人经过长时间实践发现,对同一个文件的操作,现有的共享锁/排它锁机制只能支持多个客户端同时读取一个文件中的数据,或者一个客户端写入数据至文件,对于同一个文件不同性质的操作,比如读取数据和写入数据,不允许同时存在。如:当一个客户端读取一个文件的数据时,而其他客户端要写入数据至该文件,此时进行读取数据操作的客户端需要终止对该文件的操作,进行写入数据操作的客户端将数据写入文件中。当写入数据完成后,之前对该文件进行读取数据操作的客户端才能再次进行读取数据。
综上所述,现有的共享锁/排它锁机制不允许客户端对文件同时进行写入数据和读取数据,进而造成数据丢失,降低系统的实时性和处理效率。
发明内容
为解决上述技术问题,本发明实施例提供一种数据处理方法及系统,允许客户端对文件同时进行写操作和读操作,保证数据的完整性,提高系统的实时性和处理效率。技术方案如下:
基于本发明实施例的一方面,提供一种数据处理方法,包括:
发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;
当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
基于本发明实施例的另一方面,提供一种客户端,包括:
请求发送模块,用于发送文件操作请求,所述文件包括至少一个数据块;
状态获取模块,用于获取文件的当前操作状态;
第一操作模块,在所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态情况下,第一操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
基于本发明实施例的再一方面,提供一种名字服务器,包括:
状态请求接收模块,用于接收客户端发送的获取文件当前操作状态请求;
状态确定模块,用于确定文件的当前操作状态;
状态请求响应模块,用于将所述状态确定模块确定的当前操作状态发送给客户端。
基于本发明实施例的再一方面,提供一种分布式系统,包括:客户端、名字服务器和数据服务器;
所述名字服务器,用于接收客户端发送的获取文件当前操作状态请求,确定文件的当前操作状态,并将所述当前操作状态发送给客户端;
所述客户端,用于发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
由以上技术方案可知,本发明提供的一种数据处理方法及系统,在文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据,即能够对同一文件同时进行写入数据和读取数据的操作,进而保证数据的完整性,提高系统的实时性和处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例的数据处理方法的一种流程图;
图2为本发明实施例的数据处理方法的另一种流程图;
图3为本发明实施例的数据处理方法的再一种流程图;
图4为本发明实施例的数据处理方法的再一种流程图;
图5为本发明实施例提供的客户端的一种结构示意图;
图6为本发明实施例提供的客户端的另一种结构示意图;
图7为本发明实施例提供的客户端的再一种结构示意图;
图8为本发明实施例提供的客户端的再一种结构示意图;
图9为本发明实施例提供的名字服务器的一种结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
发明人经过研究发现,现有的共享锁/排它锁机制都是基于文件的,进而只能支持多个客户端同时读取一个文件中的数据,或者一个客户端写入数据至文件。而对于同一文件的不同性质的操作,如读取数据和写入数据,是不允许同时存在的。因此,现有的共享锁/排它锁机制容易造成数据丢失,降低系统的实时性和处理效率。
为了解决上述问题,本发明实施例提供一种数据处理方法,该方法基于数据块对文件进行操作。方法流程图如图1所示,包括:
S101:发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;其中:文件的当前操作状态是由数据块的状态决定的,具体为:
设置一个变量B_state标记数据块的状态,文件的状态由多个数据块的状态进行或计算,依据计算结果确定文件的当前操作状态。如:变量B_state的值为FALSE时,表明数据块的状态为未写入状态,变量B_state的值为TRUE时,表明数据块的状态为写入状态。
假设文件包括3个数据块,其中两个数据块的变量B_state的值为FALSE,另一个数据块的变量B_state的值为TRUE。对变量B_state进行或计算,得出的计算结果为TURE,则此时文件的当前操作状态为写入状态。若另一个数据块的变量B_state的值为FALSE,对变量B_state进行或计算,得出的计算结果为FALSE,则此时文件的当前操作状态为未写入状态。
S102:当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
文件的所有数据块,可以从数字1开始,依次递增1的方式,对数据块进行编号,尾数据块为编号与数据块的个数相同的数据块。如文件包括5个数据块,编号为5的数据块则为尾数据块。当然,还可以按照其他方式,如指数递增的方式编号,对此不再阐述。分布式系统依据客户端预先设置的分组指令,将数据服务器进行分组,同组之间的数据服务器存储的数据块相同,不同组之间的数据服务器存储的数据块不相同。
当然,分布式系统还可以依据数据服务器与客户端之间的距离,对数据服务器进行分组,如与客户端之间的距离较近的分为一组,距离较远的分为一组,而距离居中的分为一组。此时,尾数据块为距离较远的数据服务器组中的数据服务器上存储的数据块。如果距离较远的数据服务器组中的数据服务器上存储的数据块的个数为一个,则该数据块即为尾数据块;如果距离较远的数据服务器组中的数据服务器上存储的数据块的个数为多个,则可以对数据块进行编号,编号最大的数据库为尾数据块。
由于数据块存储于多个数据服务器中,将数据写入文件的尾数据块包括:
将数据写入多个数据服务器中的一个数据服务器中存储的文件的尾数据块中;写入数据的数据服务器将尾数据块中的数据发送至另一个数据服务器存储的文件的尾数据块中,再由该数据服务器发送直至数据服务器所存储的文件的尾数据块都写入数据。其中:写入数据的数据服务器的个数可以由客户端预先设定,也可以根据数据服务器与客户端之间的距离决定,其数值依据不同的应用环境而不同。
数据服务器接收到已写入数据的数据服务器发送的数据后,对数据进行校验;当校验结果正确时,发送数据正确信息给已写入数据的数据服务器;当校验结果错误时,发送数据错误信息给已写入数据的数据服务器,已写入数据的数据服务器重新发送数据。
数据服务器可以采用现有的CRC(Cyclic Redundancy Check,循环冗余校验)码对数据进行校验。当然,也可以采用其他现有校验方法进行校验,对此不再加以阐述。
当然,客户端可以直接将数据写入至预先设定的用于存储该数据的数据服务器中,而不是由数据服务器依次发送数据。但是该方式会增加客户端的负荷,降低客户端的处理效率。因此,本发明实施例优选由预先设定的用于存储该数据的数据服务器依次发送的方式。
文件与数据块的对应关系可以保存在客户端,也可以保存在名字服务器的数据块列表中,为了更直观的获知文件与数据块的对应关系,可以在步骤S102之前,获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。
步骤S102之所以是将数据写入文件的尾数据块是因为分布式系统的写入数据操作为追加写入数据操作,其他数据块已经被写满,而尾数据块未被写满,所以将数据写入尾数据块中。
应用上述技术方案,在文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据,即能够对同一文件同时进行写入数据和读取数据的操作,进而保证数据的完整性,提高系统的实时性和处理效率。
另一个实施例
当尾数据块被写满后,数据块的变量B_state的值为TRUE,其状态为未写入状态,此时文件的当前操作状态有可能也会改变,因此,在图1所示的方法流程图基础上增加其他步骤,方法流程图如图2所示,包括:
S101:发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;
S102:当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
步骤S101和步骤S102的具体实施过程与图1中的步骤S101和步骤S102相同,对此不再加以阐述。
S103:监测文件的当前操作状态;
S104:当前操作状态由写入状态改为未写入状态,读取所有数据块中的数据。
尾数据块在写入数据的过程中,尾数据块被写满,此时尾数据块的变量B_state的值由原来的FALSE改为TRUE,进而与其他数据块的变量B_state进行或计算所得出的结果为FALSE,则文件的当前操作状态由原来的写入状态改为未写入状态,而此时文件操作请求为读取数据请求,因此,可以继续读取文件的所有数据块的数据。
图1所示的数据处理方法为文件操作请求为读取数据请求,且当前操作状态为写入状态时的数据处理方法。当文件操作请求为读取数据请求,且当前操作状态为未写入状态时,执行下面的步骤。
S105:当所述文件操作请求为读取数据请求,且当前操作状态为未写入状态时,读取所有数据块中的数据。
S106:监测文件的当前操作状态;
S107:当所述当前操作状态由未写入状态改为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据;其中:
当前操作状态为未写入状态时,获取文件的列表,该列表与上一实施例中提及的数据块列表的不同之处在于:包括所有数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。
步骤S107中数据写入文件的尾数据块的具体实施过程与图1中的步骤S102相同,对此不再加以阐述。
步骤S107后,如果当前操作状态由写入状态再次改为未写入状态时,读取所有数据块中的数据。
应用上述技术方案,能够对同一文件同时进行写入数据和读取数据的操作,进而保证数据的完整性,提高系统的实时性和处理效率。同时,实时监测文件的当前操作状态,在状态发生变更,及时变更对文件的操作,进一步提高系统的实时性和处理效率。
再一个实施例
前述实施例适用于在写入数据至尾数据块时,尾数据块未被写满的情况,但是尾数据块有可能在写入数据时已被写满,此时则需要创建一个新的数据块作为文件的尾数据块。
本发明实施例提供的数据处理方法可以在图1或图2的基础上增加上述步骤。下面以图2为基础,阐述本发明实施例提供的数据处理方法,方法流程图请参阅图3所示,包括:
S101:发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;其中:步骤101的具体实施过程与图1中的步骤S101相同,对此不再加以阐述。
文件与数据块的对应关系可以保存在客户端,也可以保存在名字服务器的数据块列表中,为了更直观的获知文件与数据块的对应关系,可以在步骤S101之后,获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。
S102:当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,判断尾数据块是否已被写满,如果是,执行S103,如果否,执行S104;
S103:创建一个新的数据块作为文件的尾数据块,继续执行步骤S104。
在创建新的数据块后,需要将数据块列表中添加文件与该新的数据块的对应关系,以避免在数据读取或者下次数据写入过程中出错。
S104:将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。其中:尾数据块的确定与图1中步骤S102中尾数据块的确定过程相同,对此不再加以阐述。
由于数据块存储于多个数据服务器中,将数据写入文件的尾数据块包括:
将数据写入多个数据服务器中的一个数据服务器中存储的文件的尾数据块中;写入数据的数据服务器将尾数据块中的数据发送至另一个数据服务器存储的文件的尾数据块中,再由该数据服务器发送直至数据服务器所存储的文件的尾数据块都写入数据。其中:写入数据的数据服务器的个数可以由客户端预先设定,也可以根据数据服务器与客户端之间的距离决定,其数值依据不同的应用环境而不同。
数据服务器接收到已写入数据的数据服务器发送的数据后,对数据进行校验;当校验结果正确时,发送数据正确信息给已写入数据的数据服务器;当校验结果错误时,发送数据错误信息给已写入数据的数据服务器,已写入数据的数据服务器重新发送数据。
数据服务器可以采用现有的CRC(Cyclic Redundancy Check,循环冗余校验)码对数据进行校验。当然,也可以采用其他现有校验方法进行校验,对此不再加以阐述。
当然,客户端可以直接将数据写入至预先设定的用于存储该数据的数据服务器中,而不是由数据服务器依次发送数据。但是该方式会增加客户端的负荷,降低客户端的处理效率。因此,本发明实施例优选由预先设定的用于存储该数据的数据服务器依次发送的方式。
S105:监测文件的当前操作状态;
S106:当前操作状态由写入状态改为未写入状态,读取所有数据块中的数据。
如前所述及的,尾数据块在写入数据的过程中,尾数据块被写满,此时尾数据块的变量B_state的值由原来的FALSE改为TRUE,进而与其他数据块的变量B_state进行或计算所得出的结果为FALSE,则文件的当前操作状态由原来的写入状态改为未写入状态,而此时文件操作请求为读取数据请求,因此,可以继续读取文件的所有数据块的数据。
S107:当所述文件操作请求为读取数据请求,且当前操作状态为未写入状态时,读取所有数据块中的数据。
S108:监测文件的当前操作状态;
S109:当所述当前操作状态由未写入状态改为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据;其中:
当前操作状态为未写入状态时,获取文件的列表,该列表与数据块列表的不同之处在于:包括所有数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。
步骤S109之后,当前操作状态由写入状态再次改为未写入状态时,读取所有数据块中的数据。
应用上述技术方案,能够在文件写入操作时,首先判断尾数据块是否被写满,当未被写满时,直接将数据写入尾数据块中;当被写满时,创建新的数据块作为文件的尾数据块,将数据写入新的数据块。进而在保证对同一文件同时进行写入数据和读取数据的操作,保证数据的完整性,提高系统的实时性和处理效率的前提下,避免数据写入冲突。同时,实时监测文件的当前操作状态,在状态发生变更,及时变更对文件的操作,进一步提高系统的实时性和处理效率。
再一个实施例
前述实施例都适用于文件操作请求为文件读取请求的情况,图4所示的数据处理方法适用于文件操作请求为写入数据请求的情况,具体包括:
S401:发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;其中:文件的当前操作状态是由数据块的状态决定的,具体为:
设置一个变量B_state标记数据块的状态,文件的状态由多个数据块的状态进行或计算,依据计算结果确定文件的当前操作状态。如:变量B_state的值为FALSE时,表明数据块的状态为未写入状态,变量B_state的值为TRUE时,表明数据块的状态为写入状态。
假设文件包括3个数据块,其中两个数据块的变量B_state的值为FALSE,另一个数据块的变量B_state的值为TRUE。对变量B_state进行或计算,得出的计算结果为TURE,则此时文件的当前操作状态为写入状态。若另一个数据块的变量B_state的值为FALSE,对变量B_state进行或计算,得出的计算结果为FALSE,则此时文件的当前操作状态为未写入状态。
文件与数据块的对应关系可以保存在客户端,也可以保存在名字服务器的数据块列表中,为了更直观的获知文件与数据块的对应关系,可以在步骤S401之后,获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。
S402:当所述文件操作请求为写入数据请求,且所述当前操作状态为未写入状态时,判断尾数据块是否已被写满,如果是,执行S403,如果否,执行S404;
S403:创建一个新的数据块作为文件的尾数据块,继续执行S404。
在创建新的数据块后,需要将数据块列表中添加文件与该新的数据块的对应关系,以避免在数据读取或者下次数据写入过程中出错。
S404:将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
文件的所有数据块,可以从数字1开始,依次递增1的方式,对数据块进行编号,尾数据块为编号与数据块的个数相同的数据块。如文件包括5个数据块,编号为5的数据块则为尾数据块。当然,还可以按照其他方式,如指数递增的方式编号,对此不再阐述。分布式系统依据客户端预先设置的分组指令,将数据服务器进行分组,同组之间的数据服务器存储的数据块相同,不同组之间的数据服务器存储的数据块不相同。
当然,分布式系统还可以依据数据服务器与客户端之间的距离,对数据服务器进行分组,如与客户端之间的距离较近的分为一组,距离较远的分为一组,而距离居中的分为一组。此时,尾数据块为距离较远的数据服务器组中的数据服务器上存储的数据块。如果距离较远的数据服务器组中的数据服务器上存储的数据块的个数为一个,则该数据块即为尾数据块;如果距离较远的数据服务器组中的数据服务器上存储的数据块的个数为多个,则可以对数据块进行编号,编号最大的数据库为尾数据块。
由于数据块存储于多个数据服务器中,将数据写入文件的尾数据块包括:
将数据写入多个数据服务器中的一个数据服务器中存储的文件的尾数据块中;写入数据的数据服务器将尾数据块中的数据发送至另一个数据服务器存储的文件的尾数据块中,再由该数据服务器发送直至数据服务器所存储的文件的尾数据块都写入数据。其中:写入数据的数据服务器的个数可以由客户端预先设定,也可以根据数据服务器与客户端之间的距离决定,其数值依据不同的应用环境而不同。
数据服务器接收到已写入数据的数据服务器发送的数据后,对数据进行校验;当校验结果正确时,发送数据正确信息给已写入数据的数据服务器;当校验结果错误时,发送数据错误信息给已写入数据的数据服务器,已写入数据的数据服务器重新发送数据。
数据服务器可以采用现有的CRC(Cyclic Redundancy Check,循环冗余校验)码对数据进行校验。当然,也可以采用其他现有校验方法进行校验,对此不再加以阐述。
当然,客户端可以直接将数据写入至预先设定的用于存储该数据的数据服务器中,而不是由数据服务器依次发送数据。但是该方式会增加客户端的负荷,降低客户端的处理效率。因此,本发明实施例优选由预先设定的用于存储该数据的数据服务器依次发送的方式。
S405:当所述文件操作请求为写入数据请求,且当前操作状态为写入状态时,终止写入操作请求。此时文件的当前操作状态为写入状态,即正在写入数据,因此需要终止写入操作请求,避免写入冲突。
S406:监测文件的当前操作状态;
S407:当前操作状态由写入状态改为未写入状态,读取所有数据块中的数据。
当前操作状态为未写入状态时,获取文件的列表,该列表与数据块列表的不同之处在于:包括所有数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。
尾数据块在执行写入数据请求的过程中,尾数据块被写满,此时尾数据块的变量B_state的值由原来的FALSE改为TRUE,进而与其他数据块的变量B_state进行或计算所得出的结果为FALSE,则文件的当前操作状态由原来的写入状态改为未写入状态,而此时文件操作请求为读取数据请求,因此,可以继续读取文件的所有数据块的数据。
应用上述技术方案,能够在文件写入操作时,首先判断尾数据块是否被写满,当未被写满时,直接将数据写入尾数据块中;当被写满时,创建新的数据块作为文件的尾数据块,将数据写入新的数据块。进而在保证对同一文件同时进行写入数据和读取数据的操作,保证数据的完整性,提高系统的实时性和处理效率的前提下,避免数据写入冲突。同时,避免在当前操作状态为写入状态时,发送写入数据请求导致的数据写入冲突。
与上述方法实施例相对应,本发明实施例还提供一种客户端,结构示意图如图5所示,包括:请求发送模块51、状态获取模块52和第一操作模块53。其中:
请求发送模块51,用于发送文件操作请求,所述文件包括至少一个数据块;状态获取模块52,用于获取文件的当前操作状态;其中:当前操作状态是由数据块的状态决定的,具体为:设置一个变量B_state标记数据块的状态,文件的状态由多个数据块的状态进行或计算,依据计算结果确定文件的当前操作状态。如:变量B_state的值为FALSE时,表明数据块的状态为未写入状态,变量B_state的值为TRUE时,表明数据块的状态为写入状态。
假设文件包括3个数据块,其中两个数据块的变量B_state的值为FALSE,另一个数据块的变量B_state的值为TRUE。对变量B_state进行或计算,得出的计算结果为TURE,则此时文件的当前操作状态为写入状态。若另一个数据块的变量B_state的值为FALSE,对变量B_state进行或计算,得出的计算结果为FALSE,则此时文件的当前操作状态为未写入状态。
第一操作模块53,在所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态情况下,第一操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
为了更直观的获知文件与数据块的对应关系,还可以获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。文件与数据块的对应关系包括:文件所包括的数据块的数量,数据块的状态以及存储数据块的数据服务器。因此,在图5所示的客户端的基础上,增加其他模块,结构示意图如如图6所示,包括:数据块列表获取模块54,用于获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。
当尾数据块被写满后,数据块的变量B_state的值为TRUE,其状态为未写入状态,此时文件的当前操作状态有可能也会改变,因此,图6所示的客户端还包括:监测模块55和第二操作模块56。其中:
监测模块55,用于监测文件的当前操作状态;
第二操作模块56,在监测模块55监测到当前操作状态由写入状态改为未写入状态情况下,所述第二操作模块用于读取所有数据块中的数据。
图6所示的客户端适用于文件操作请求为读取数据请求,且当前操作状态为写入状态情况下,如果文件操作请求为读取数据请求,且当前操作状态为未写入状态情况下,可以在图6的基础上增加其他模块,如图7所示,新增加第三操作模块57和第四操作模块58。其中“
第三操作模块57,在所述文件操作请求为读取数据请求,且当前操作状态为未写入状态情况下,所述第三操作模块用于读取所有数据块中的数据;
第四操作模块58,在当前操作状态由未写入状态改为写入状态情况下,所述第四操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
上述客户端适用于文件操作请求为数据读取请求情况,如果文件操作请求为数据写入请求时,则要在图7所示的客户端的基础上增加其他模块,如图8所示,还包括:第五操作模块59、请求终止模块60和第六操作模块61。其中:
第五操作模块59,在所述文件操作请求为写入数据请求,且当前操作状态为未写入状态情况下,所述第五操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
请求终止模块60,在所述文件操作请求为写入数据请求,且当前操作状态为写入状态情况下,所述请求终止模块用于终止写入操作请求;
第六操作模块61,在所述当前操作状态由写入状态改为未写入状态情况下,所述第六操作模块用于读取所有数据块中的数据。
此外,客户端在写入数据之前,要判断尾数据块是否已被写满,因此,在图5至图8所示的任意一个客户端还包括:判断模块和创建模块。其中:
判断模块,用于判断尾数据块是否已被写满;
创建模块,在所述判断模块判断尾数据块被写满情况下,所述创建模块用于创建一个新的数据块作为文件的尾数据块。
本发明实施例还提供一种名字服务器,结构示意图如图9所示,包括:状态请求接收模块91、状态确定模块92和状态请求响应模块93。其中:
状态请求接收模块91,用于接收客户端发送的获取文件当前操作状态请求;
状态确定模块92,用于确定文件的当前操作状态;当前操作状态是由数据块的状态决定的,具体为:设置一个变量B_state标记数据块的状态,文件的状态由多个数据块的状态进行或计算,依据计算结果确定文件的当前操作状态。如:变量B_state的值为FALSE时,表明数据块的状态为未写入状态,变量B_state的值为TRUE时,表明数据块的状态为写入状态。
假设文件包括3个数据块,其中两个数据块的变量B_state的值为FALSE,另一个数据块的变量B_state的值为TRUE。对变量B_state进行或计算,得出的计算结果为TURE,则此时文件的当前操作状态为写入状态。若另一个数据块的变量B_state的值为FALSE,对变量B_state进行或计算,得出的计算结果为FALSE,则此时文件的当前操作状态为未写入状态。
状态请求响应模块93,用于将所述状态确定模块确定的当前操作状态发送给客户端。
为了客户端更直观的获知文件与数据块的对应关系,名字服务器还可以发送数据块的列表至客户端,因此,名字服务器在图9的基础上还包括:列表请求接收模块94、数据块列表保存模块95、列表保存模块96和请求响应模块97。其中:
列表请求接收模块94,用于接收客户端发送的列表请求;
数据块列表保存模块95,用于保存数据块与文件的对应关系,其中数据块不包括尾数据块;
列表保存模块96,用于保存所有数据块与文件的对应关系;
请求响应模块97,在文件的当前操作状态为未写入状态情况下,返回列表保存模块96中保存的所有数据块与文件的对应关系;在文件的当前操作状态为写入状态,且文件操作请求为数据读取请求情况下,返回数据块列表保存模块95保存的数据块与文件的对应关系。
本发明实施例还提供一种分布式系统,包括:客户端、名字服务器和数据服务器;
所述名字服务器,用于接收客户端发送的获取文件当前操作状态请求,确定文件的当前操作状态,并将所述当前操作状态发送给客户端;
所述客户端,用于发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
应用上述技术方案,能够对同一文件同时进行写入数据和读取数据的操作,进而保证数据的完整性,提高系统的实时性和处理效率。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于系统实施例,所以描述得比较简单,相关之处参见系统实施例的部分说明即可。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (23)
1.一种数据处理方法,其特征在于,包括:
发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;
当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
2.根据权利要求1所述的数据处理方法,其特征在于,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据之前还包括:获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。
3.根据权利要求1所述的数据处理方法,其特征在于,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据之后还包括:
监测文件的当前操作状态;
当所述当前操作状态由写入状态改为未写入状态,读取所有数据块中的数据。
4.根据权利要求1所述的数据处理方法,其特征在于,
当所述文件操作请求为读取数据请求,且当前操作状态为未写入状态时,读取所有数据块中的数据。
5.根据权利要求4所述的数据处理方法,其特征在于,读取所有数据块中的数据之后还包括:
监测文件的当前操作状态;
当所述当前操作状态由未写入状态改为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
6.根据权利要求1所述的数据处理方法,其特征在于,
当所述文件操作请求为写入数据请求,且当前操作状态为未写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
7.根据权利要求1所述的数据处理方法,其特征在于,
当所述文件操作请求为写入数据请求,且当前操作状态为写入状态时,终止写入操作请求。
8.根据权利要求7所述的数据处理方法,其特征在于,终止写入操作请求之后还包括:
监测文件的当前操作状态;
当所述当前操作状态由写入状态改为未写入状态,读取所有数据块中的数据。
9.根据权利要求1-8任意一项所述的数据处理方法,其特征在于,还包括:在当前操作状态为未写入状态时,获取文件的列表,该列表包括所有数据块与文件的对应关系。
10.根据权利要求1-8任意一项所述的数据处理方法,其特征在于,文件存储于多个数据服务器中,将数据写入文件的尾数据块包括:
将数据写入多个数据服务器中的一个数据服务器中存储的文件的尾数据块中;
写入数据的数据服务器将尾数据块中的数据发送至另一个数据服务器存储的文件的尾数据块中,再由该数据服务器发送直至数据服务器所存储的文件的尾数据块都写入数据。
11.根据权利要求10所述的数据处理方法,其特征在于,数据服务器接收到已写入数据的数据服务器发送的数据后,对数据进行校验;
当校验结果正确时,发送数据正确信息给已写入数据的数据服务器;
当校验结果错误时,发送数据错误信息给已写入数据的数据服务器,已写入数据的数据服务器重新发送数据。
12.根据权利要求1-8任意一项所述的数据处理方法,其特征在于,将数据写入文件的尾数据块之前还包括:
判断尾数据块是否已被写满;
当尾数据块被写满时,创建一个新的数据块作为文件的尾数据块。
13.根据权利要求1-8任意一项所述的数据处理方法,其特征在于,所述当前操作状态是由多个数据块的状态决定的。
14.一种客户端,其特征在于,包括:
请求发送模块,用于发送文件操作请求,所述文件包括至少一个数据块;
状态获取模块,用于获取文件的当前操作状态;
第一操作模块,在所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态情况下,第一操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
15.根据权利要求14所述的客户端,其特征在于,还包括:数据块列表获取模块,用于获取文件的数据块列表,该数据块列表中不包括尾数据块与文件的对应关系。
16.根据权利要求14所述的客户端,其特征在于,还包括:
监测模块,用于监测文件的当前操作状态;
第二操作模块,在监测模块监测到当前操作状态由写入状态改为未写入状态情况下,所述第二操作模块用于读取所有数据块中的数据。
17.根据权利要求14所述的客户端,其特征在于,还包括:
第三操作模块,在所述文件操作请求为读取数据请求,且当前操作状态为未写入状态情况下,所述第三操作模块用于读取所有数据块中的数据;
第四操作模块,在当前操作状态由未写入状态改为写入状态情况下,所述第四操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
18.根据权利要求14所述的客户端,其特征在于,还包括:
第五操作模块,在所述文件操作请求为写入数据请求,且当前操作状态为未写入状态情况下,所述第五操作模块用于将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
19.根据权利要求18所述的客户端,其特征在于,还包括:
请求终止模块,在所述文件操作请求为写入数据请求,且当前操作状态为写入状态情况下,所述请求终止模块用于终止写入操作请求;
第六操作模块,在所述当前操作状态由写入状态改为未写入状态情况下,所述第六操作模块用于读取所有数据块中的数据。
20.根据权利要求14-19任意一项所述的客户端,其特征在于,还包括:
判断模块,用于判断尾数据块是否已被写满;
创建模块,在所述判断模块判断尾数据块被写满情况下,所述创建模块用于创建一个新的数据块作为文件的尾数据块。
21.一种名字服务器,其特征在于,包括:
状态请求接收模块,用于接收客户端发送的获取文件当前操作状态请求;
状态确定模块,用于确定文件的当前操作状态;
状态请求响应模块,用于将所述状态确定模块确定的当前操作状态发送给客户端。
22.根据权利要求21所述的名字服务器,其特征在于,还包括:
列表请求接收模块,用于接收客户端发送的列表请求;
数据块列表保存模块,用于保存数据块与文件的对应关系,其中数据块不包括尾数据块;
列表保存模块,用于保存所有数据块与文件的对应关系;
请求响应模块,在文件的当前操作状态为未写入状态情况下,返回列表保存模块中保存的所有数据块与文件的对应关系;在文件的当前操作状态为写入状态,且文件操作请求为数据读取请求情况下,返回数据块列表保存模块保存的数据块与文件的对应关系。
23.一种分布式系统,其特征在于,包括:客户端、名字服务器和数据服务器;
所述名字服务器,用于接收客户端发送的获取文件当前操作状态请求,确定文件的当前操作状态,并将所述当前操作状态发送给客户端;
所述客户端,用于发送文件操作请求,获取文件的当前操作状态,所述文件包括至少一个数据块;当所述文件操作请求为读取数据请求,且所述当前操作状态为写入状态时,将数据写入文件的尾数据块,同时读取文件的其他数据块中的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110077319.0A CN102170466B (zh) | 2011-03-29 | 2011-03-29 | 一种数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110077319.0A CN102170466B (zh) | 2011-03-29 | 2011-03-29 | 一种数据处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102170466A true CN102170466A (zh) | 2011-08-31 |
CN102170466B CN102170466B (zh) | 2014-12-31 |
Family
ID=44491442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110077319.0A Active CN102170466B (zh) | 2011-03-29 | 2011-03-29 | 一种数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102170466B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902561A (zh) * | 2012-09-13 | 2013-01-30 | 新浪网技术(中国)有限公司 | 数据存储方法及数据存储系统 |
CN103842960A (zh) * | 2011-09-30 | 2014-06-04 | 诺基亚公司 | 用于控件间通信的方法和设备 |
CN105808556A (zh) * | 2014-12-29 | 2016-07-27 | 深圳云之家网络有限公司 | 一种数据库的操作方法及数据库引擎 |
CN106844020A (zh) * | 2016-12-01 | 2017-06-13 | 明博教育科技股份有限公司 | 不同任务遍历大量共享数据的高效处理方法及系统 |
CN107678859A (zh) * | 2017-10-13 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于cap机制的文件访问方法、装置及设备 |
CN108228613A (zh) * | 2016-12-14 | 2018-06-29 | 北京国双科技有限公司 | 数据的读取方法及装置 |
CN111475262A (zh) * | 2020-04-02 | 2020-07-31 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635520A (zh) * | 2003-12-27 | 2005-07-06 | 鸿富锦精密工业(深圳)有限公司 | 数据处理系统及方法 |
CN101146051A (zh) * | 2007-11-07 | 2008-03-19 | 腾讯科技(深圳)有限公司 | 一种企业级即时通信互联系统及其实现企业互联的方法 |
CN101261588A (zh) * | 2007-12-21 | 2008-09-10 | 深圳市同洲电子股份有限公司 | 文件读写控制装置、系统及方法 |
WO2008151339A2 (de) * | 2007-06-11 | 2008-12-18 | Fts Computertechnik Gmbh | Verfahren und architektur zur sicherung von echtzeitdaten |
-
2011
- 2011-03-29 CN CN201110077319.0A patent/CN102170466B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635520A (zh) * | 2003-12-27 | 2005-07-06 | 鸿富锦精密工业(深圳)有限公司 | 数据处理系统及方法 |
WO2008151339A2 (de) * | 2007-06-11 | 2008-12-18 | Fts Computertechnik Gmbh | Verfahren und architektur zur sicherung von echtzeitdaten |
CN101146051A (zh) * | 2007-11-07 | 2008-03-19 | 腾讯科技(深圳)有限公司 | 一种企业级即时通信互联系统及其实现企业互联的方法 |
CN101261588A (zh) * | 2007-12-21 | 2008-09-10 | 深圳市同洲电子股份有限公司 | 文件读写控制装置、系统及方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103842960A (zh) * | 2011-09-30 | 2014-06-04 | 诺基亚公司 | 用于控件间通信的方法和设备 |
CN102902561A (zh) * | 2012-09-13 | 2013-01-30 | 新浪网技术(中国)有限公司 | 数据存储方法及数据存储系统 |
CN102902561B (zh) * | 2012-09-13 | 2016-01-20 | 新浪网技术(中国)有限公司 | 数据存储方法及数据存储系统 |
CN105808556A (zh) * | 2014-12-29 | 2016-07-27 | 深圳云之家网络有限公司 | 一种数据库的操作方法及数据库引擎 |
CN105808556B (zh) * | 2014-12-29 | 2020-02-11 | 深圳云之家网络有限公司 | 一种数据库的操作方法及数据库引擎 |
CN106844020A (zh) * | 2016-12-01 | 2017-06-13 | 明博教育科技股份有限公司 | 不同任务遍历大量共享数据的高效处理方法及系统 |
CN108228613A (zh) * | 2016-12-14 | 2018-06-29 | 北京国双科技有限公司 | 数据的读取方法及装置 |
CN108228613B (zh) * | 2016-12-14 | 2021-12-07 | 北京国双科技有限公司 | 数据的读取方法及装置 |
CN107678859A (zh) * | 2017-10-13 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于cap机制的文件访问方法、装置及设备 |
CN111475262A (zh) * | 2020-04-02 | 2020-07-31 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CN111475262B (zh) * | 2020-04-02 | 2024-02-06 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102170466B (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102170466A (zh) | 一种数据处理方法及系统 | |
WO2019211607A1 (en) | System for controlling user interaction via an application with remote servers | |
US7925856B1 (en) | Method and apparatus for maintaining an amount of reserve space using virtual placeholders | |
CN102833281B (zh) | 一种分布式自增计数的实现方法、装置及系统 | |
CN106998265B (zh) | 一种监控方法及其装置 | |
CN111414389B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
US10212229B2 (en) | Reliable data storage for decentralized computer systems | |
CN102523290B (zh) | 数据的处理方法、设备和系统 | |
CN110502546A (zh) | 一种数据处理方法及装置 | |
CN102834806A (zh) | 系统结构管理设备、系统结构管理方法和程序 | |
CN110555150B (zh) | 一种数据监控方法、装置、设备和存储介质 | |
CN108667903B (zh) | 数据发送方法、装置和存储介质 | |
CN106878370A (zh) | 一种本地缓存的更新方法和设备 | |
US10039974B2 (en) | Substitution of game commands with different replacement commands at client devices using substitution reference sets | |
CN104794155A (zh) | 数据加载的方法、装置及系统 | |
CN105207832A (zh) | 一种服务器压力测试方法和装置 | |
CN111061740A (zh) | 一种数据同步方法、设备和存储介质 | |
CN110928941B (zh) | 一种数据分片抽取方法及装置 | |
CN105574008A (zh) | 应用于分布式文件系统的任务调度方法和设备 | |
EP2213066A2 (en) | Acquisition and expansion of storage area network interoperation relationships | |
CN112688980B (zh) | 资源分发方法、装置、计算机设备 | |
WO2022265884A8 (en) | Data governance systems and methods | |
CN107704201A (zh) | 数据存储处理方法及装置 | |
CN111694598A (zh) | 软件版本包管理方法、装置、设备和介质 | |
CN106301904A (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 |