CN103607451A - 支持并发的客户端与服务器端的文档操作同步方法 - Google Patents
支持并发的客户端与服务器端的文档操作同步方法 Download PDFInfo
- Publication number
- CN103607451A CN103607451A CN201310582305.3A CN201310582305A CN103607451A CN 103607451 A CN103607451 A CN 103607451A CN 201310582305 A CN201310582305 A CN 201310582305A CN 103607451 A CN103607451 A CN 103607451A
- Authority
- CN
- China
- Prior art keywords
- queue
- upload
- sdq
- command
- ncq
- 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
本发明涉及一种支持并发的客户端与服务器端的文档操作同步方法,包括以下步骤:1)将文档操作命令队列按照类型分为三种:普通命令队列NCQ、大数据上传队列BDQ和小数据上传队列SDQ,其中NCQ中包含所有待处理的文档操作命令,BDQ中包含所有的大数据量的文件的上传操作,SDQ中包含所有的小数据量的文件的上传操作;2)通过上传管理器Upload Manager来管理整个文档操作的上传,Upload Manager管理一个上传代理池Upload Agent Pool,上传代理池中包括NCQAgent、SDQ Agent和BDQ Agent,通过调用这些代理来完成一个控制命令或者数据上传命令。与现有技术相比,本发明具有提高传输效率、以避免大文件上传时间太长从而影响小文件的同步、解决队列堵塞的问题等优点。
Description
技术领域
本发明涉及一种分布式文件管理系统的同步技术,尤其是涉及一种支持并发的客户端与服务器端的文档操作同步方法。
背景技术
在一个传统的分布式文件管理系统中,为确保文档操作的一致性,在客户端的实现中,从某个特定的客户端到云存储平台的文档操作同步通常采用单一队列的模型来管理。所有待同步的文档操作都首先进入一个队列进行排队,按照先到先处理的机制,逐个同步队列中的文档操作,如图1所示。
这种单一队列的文档操作同步模型实现简单,能够确保操作的一致性,但存在以下不足:
不能实现并发同步,传输效率低;
如果中间有命令执行失败,通常的做法是无限期重试直到成功为止,导致队列堵塞;
如果队列中有操作耗时较长,例如大文件的传输,后续命令只能等待,导致队列堵塞;
以上问题,可能导致从客户端到云存储平台文档操作的同步效率较低,有些操作不能及时完成,造成客户端和服务器端的同步延迟,进而影响用户体验。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种支持并发的客户端与服务器端的文档操作同步方法;提高传输效率,能够实现文件上传的有限量的并发;将大文件和小文件区分处理,以避免大文件上传时间太长从而影响小文件的同步;解决队列堵塞的问题,使得队列中不会出现由于个别命令执行失败而导致其它毫无关联的命令长时间等待。
本发明的目的可以通过以下技术方案来实现:
一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,包括以下步骤:
1)将文档操作命令队列按照类型分为三种:普通命令队列NCQ、大数据上传队列BDQ和小数据上传队列SDQ,其中NCQ中包含所有待处理的文档操作命令,BDQ中包含所有的大数据量的文件的上传操作,SDQ中包含所有的小数据量的文件的上传操作;
2)通过上传管理器Upload Manager来管理整个文档操作的上传,UploadManager管理一个上传代理池Upload Agent Pool,上传代理池中包括NCQ Agent、SDQ Agent和BDQ Agent,通过调用这些代理来完成一个控制命令或者数据上传命令;其中文档上传队列的管理包括以下步骤:
(1)上传管理器Upload Manager进行初始化,包括初始化普通命令队列NCQ队列、大数据上传队列BDQ队列、小数据上传队列SDQ队列、NCQAgent、SDQAgent和BDQ Agent;
(2)Upload Manager执行逻辑,包括检查是否有应用层的请求、轮询NCQ队列、轮询SDQ队列和轮询BDQ队列。
所述的NCQ队列、BDQ队列和SDQ队列分别如下:
NCQ队列包含所有待同步的文档操作命令;
BDQ队列包含所有的大数据量文件的上传操作;
SDQ队列包含所有的小数据量文件的上传操作;
其中大数据量及小数据量的定义根据用户环境设置,即文件大小大于阈值的设置为大数据量文件,小于或者等于阈值的设置为小数据量文件;
客户端产生的所有的文档操作命令,首先添加到NCQ队列的末尾,若该命令为文件上传操作,则同时根据文件的大小,在相应的BDQ队列或者SDQ队列中添加一条文件上传命令,并建立和NCQ队列中相应命令的关联。
所述的NCQ队列采用顺序执行方式,BDQ队列和SDQ队列采用并发执行方式。
所述的NCQ Agent在NCQ队列中有命令需要执行时,执行队列中的命令;SDQAgent和BDQAgent分别用于执行SDQ队列和BDQ队列的数据上传,当SDQ队列中有命令等待执行时,分配处于空闲状态的SDQ Agent完成该同步指令,如果没有空闲的SDQ Agent,则需要等待正在工作的SDQ Agent变成空闲状态;当BDQ队列中有命令等待执行时,分配处于空闲状态的BDQ Agent完成该同步指令,如果没有空闲的BDQ Agent,则需要等待正在工作的BDQAgent变成空闲状态。
所述的Upload Manager检查是否有应用层的请求具体为:
若有操作需要添加到同步队列,则首先将该命令添加到NCQ队列的末尾;
若有操作需要取消,则将NCQ队列中该操作对应的命令删除;
若为查询操作,则从队列中获取对应的命令的状态,回复给上层应用。
所述的Upload Manager轮询NCQ队列具体为:
1)获取当前NCQ队列的队首命令;
2)判断队列是否为空,若为否,执行步骤3),否则结束;
3)判断当前命令状态是否异常,若为否,执行步骤4),否则结束;
4)判断是否为文件上传命令,若为是,执行步骤5),否则,执行步骤8);
5)通过文件大小判断为大数据量文件还是小数据量文件,若为大数据量文件,执行步骤6),否则执行步骤7);
6)在BDQ队列中添加文件上传命令,并将当前命令标记为异常,并返回步骤1);
7)在SDQ队列中添加文件上传命令,并将当前命令标记为异常,并返回步骤1);
8)调用NCQ Agent执行当前命令;
9)判断执行同步是否正常完成,若为是,执行步骤10),否则,进入异常处理流程;
10)判断当前命令是否被标记为异常,若为是,执行步骤11),否则返回步骤1):
11)遍历整个NCQ队列,将所有标记为依赖于当前命令的命令的依赖标记删除;
12)将当前命令从队列中移除,并将下一条命令设置为队首。
所述的异常处理流程具体为:
1)获取下一条命令的相关信息,并判断是否已经标记为依赖于当前命令,若为否,执行步骤2),否则继续执行步骤1);
2)分析是否与异常命令有关,若为是,执行步骤3),否则,将该命令移动到队列首位,并返回NCQ队列执行流程;
3)将该条命令标记为当前异常命令的关联命令。
所述的轮询SDQ队列具体流程如下:
1)获取当前SDQ队列的队首命令;
2)判断命令是否在执行中或队列为空,若均为否,执行步骤3),否则结束;
3)判断是否有空闲的SDQAgent,若为是,执行步骤4),否则等待空闲的SDQAgent,并继续执行步骤3);
4)将当前命令的状态设置为正在执行中,并移动到队列末尾;
5)调用SDQAgent执行当前命令;
6)判断为完成或异常,若为异常,返回步骤5),否则,执行步骤7);
7)释放SDQ Agent;
8)将当前命令从SDQ队列中删除;
9)将SDQ队列中关联的命令的异常标记去除,并返回步骤1)。
所述的轮询BDQ队列的流程同轮询SDQ队列,将SDQ队列改为BDQ队列,SDQ Agent改为BDQ Agent。
所述的NCQ队列中的数据上传命令与SDQ队列或者BDQ队列中的命令通过关联命令ID建立一对一的对应关系;
NCQ队列中的数据上传命令的执行完全依赖于SDQ队列或者BDQ队列中对应的上传命令的执行;在NCQ中,当命令执行到某个数据上传命令时,UploadManager会在SDQ或者BDQ中添加一条数据上传命令,并将NCQ中对应命令的状态设置为等待状态;同时,Upload Manager会将NCQ中的该条命令对应的ID记录到关联的SDQ或者BDQ的命令记录中;当SDQ或者BDQ中对应的数据上传命令执行完成后,SDQ或者BDQ会通知Upload Manager,Upload Manager随后会将NCQ中对应的命令设置为执行完成,进行下一条命令的执行。
与现有技术相比,本发明具有以下优点:
1)通过文件上传的有限量的并发,提高客户端到服务器端文档同步的效率。
2)通过将大文件和小文件区分处理,避免大文件上传时长时间占用资源从而影响小文件的同步,这种策略可以均衡大文件与小文件的上传速度,提高用户体验。
3)解决队列堵塞的问题,使得队列中不会出现由于个别命令执行失败而导致其它毫无关联的命令长时间等待。
附图说明
图1为单一队列的文档操作同步模型示意图;
图2为支持并发的文档操作同步队列模型示意图;
图3为文档操作并发控制示意图;
图4为NCQ中的命令与SDQ、BDQ中的命令的关联关系示意图;
图5为异常处理示意图(1);
图6为异常处理示意图(2);
图7为异常处理示意图(3);
图8为异常处理示意图(4);
图9为异常处理示意图(5);
图10为异常处理示意图(6);
图11为NCQ队列结构示意图;
图12为SDQ队列结构示意图;
图13为BDQ队列结构示意图;
图14为NCQ队列中命令的执行流程图;
图15为NCQ队列中命令执行异常时的处理流程图;
图16为SDQ队列中命令的执行流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例1
本发明采用支持并发的文件操作同步模型,基于此模型,可以解决传统单队列模型中的缺陷,从而提升同步的效率。
将文件操作分为两大类:控制命令及数据上传命令,数据上传命令根据需要上传的数据大小可以分为大数据上传命令及小数据上传命令。大数据和小数据的大小限制可按实际环境设定。
通过三个队列来管理所有文件操作:控制命令队列、大数据上传队列、小数据上传队列。其中控制命令队列为顺序串行执行,而大数据上传队列及小数据上传队列中的指令可以进行有限的并发执行。
提出同步队列的异常处理机制,当有操作处理发生异常时,能够避免队列的堵塞。
提出队列的并发管理模型,允许有限的并发执行,提高同步效率。
1.支持并发的文档操作同步队列模型
1.1、文档操作命令的分类
文档操作命令可以分为控制命令及数据上传命令两种。
控制命令中均为针对文件或者文件夹的原子操作。文件操作的控制命令为:创建文件、删除文件、重命名文件。文件夹操作的控制命令为:创建文件夹、删除文件夹、重命名文件夹。数据上传命令只有一种,即:文件内容的上传命令。其它常见的文档操作,例如:复制,剪切等,都通过以上命令组合实现。
1.2、文档操作同步队列模型
文档操作命令队列,按照类型可以分为三种:普通命令队列(Normal CommandQueue,简称NCQ),大数据上传队列(Big Data Queue,简称BDQ),小数据上传队列(Small Data Queue,简称SDQ)。其中普通命令队列中包含所有待处理的文档操作命令,大数据上传队列中包含所有的大数据量的文件的上传操作,小数据上传队列中包含所有的小数据量的文件的上传操作。大数据量及小数据量的定义根据用户环境设置,例如:文件大小大于50M设置为大数据文件,小于或者等于50M的设置为小数据文件。
客户端产生的所有的文档操作命令,首先添加到NCQ队列的末尾。如果该命令为文件上传操作,则同时根据文件的大小,在相应的BDQ或者SDQ中添加一条数据上传命令,并建立和普通控制命令队列中相应命令的关联。
Upload Manager负责队列的操作管理以及队列之间的同步。文档操作同步队列模型如下图2所示。
2.文档操作同步的并发控制机制
2.1、文档操作同步的并发控制机制
在文档操作同步队列模型中,NCQ中的操作由于其包含信息量小,占用网络资源很小,执行速度较快,所以顺序串行执行。BDQ和SDQ中的操作均为文件内容从客户端到服务器端的上传操作,信息量较大,占用网络资源大,执行速度较慢,所以允许其并发执行以提高批量文件上传的效率。另外将大数据量文件上传和小数据量文件上传分离可以避免大数据量文件长时间独占资源,占用上传通道,从而导致小文件的上传延迟。
Upload Manager管理着一个上传代理池(Upload Agent Pool),上传代理池中有多个代理(Upload Agent),这些代理可以来供调配来完成一个控制命令或者数据上传命令。一个Upload Agent有两种状态:工作中,空闲。
有一个专门的Upload Agent供NCQ使用,称为NCQ Agent。当NCQ中有命令需要执行时,该Upload Agent开始工作,执行队列中的命令。
根据需要,分别设置多个Upload Agent给BDQ及SDQ中的数据上传命令使用。具体个数根据实际环境而定。
由于BDQ和SDQ中的命令可以并行执行。当SDQ中有命令等待执行时,分配处于空闲状态的SDQ Agent完成该同步指令,如果没有空闲的SDQ Agent,则需要等待正在工作的SDQ Agent变成空闲状态。当BDQ中有命令等待执行时,分配处于空闲状态的BDQ Agent完成该同步指令,如果没有空闲的BDQ Agent,则需要等待正在工作的BDQ Agent变成空闲状态,如图3所示。
2.2、NCQ与SDQ和BDQ之间的关联机制
NCQ中包含所有待处理的文档操作命令,包括控制命令和数据上传命令。针对数据上传命令,在SDQ或者BDQ中同时有一个数据上传命令相对应。这种关系是一对一的关系。由于NCQ中维护着整个文档操作的顺序及依赖关系,所以NCQ中的数据上传命令的执行完全依赖于SDQ或者BDQ中对应的上传命令的执行。在NCQ中,当命令执行到某个数据上传命令时,Upload Manager会在SDQ或者BDQ中添加一条数据上传命令,并将NCQ中对应命令的状态设置为等待状态;同时,Upload Manager会将NCQ中的该条命令对应的ID记录到关联的SDQ或者BDQ的命令记录中。当SDQ或者BDQ中对应的数据上传命令执行完成后,SDQ或者BDQ会通知Upload Manager,Upload Manager随后会将NCQ中对应的命令设置为执行完成,进行下一条命令的执行。
为实现以上机制,NCQ中的数据上传命令与SDQ或者BDQ中的命令通过关联命令ID建立一对一的对应关系,这个对应关系由Upload Manager来建立和维护,如下图4所示。
3.异常处理机制
3.1、NCQ中操作之间的关联关系
3.1.1、文件夹操作指令与其他操作指令相关性分析,如表1所示,其中“Y”表示相关,“N”表示不相关
表1
3.1.2、文件操作指令与其他操作指令相关性分析,如表2所示,其中“Y”表示相关,“N”表示不相关
表2
4.2、异常情况下队列的处理机制
如果NCQ中某条指令执行失败,则进行如下处理:
如果该条指令在队列末尾,则持续重试,直到成功或者下一个命令插入进来。
如果该条指令不在队列末尾,则依次检查后续命令,寻找到最近一条和本条命令无关的命令,移动到队列首位,继续执行。在检查的过程中,将和失败命令相关的命令标记出来,如果该命令在下次执行时依然失败,则寻找下一条可执行命令时,直接跳过依赖于该命令的相关命令。
以上机制确保队列不会因为一条指令的失败而堵塞,同时也会在每次执行一条命令的同时,尝试重新执行一遍失败的指令。
异常处理机制示例说明:
1)cmd n执行失败,cmd n不在队列末尾,这时,先将cmd n标记为失败指令,然后依次向下逐个分析后续命令和cmd n的关联关系。如果关联,则将该指令标记为和cmd n关联。直到找到一条和cmd n无关的指令,图3中为cmd n+3。将cmdn+3移到队列首位,其他命令的顺序保持不变,执行cmd n+3,具体见图5所示。
2)cmd n+3执行成功后,继续向下执行到cmd n,具体见图6所示。。
a)如果此时cmd n执行成功,则将所有和cmd n相关的指令的相关标记删除,这些指令变成正常指令,等待依次执行。
b)如果此时cmd n执行依然失败,则跳过有标记与cmd n相关的所有指令,检查下一条无标记的指令是否和cmd n相关。如果相关则打上标记,继续向下寻找,直到找到一条和cmd n无关的指令cmd n+4移到队列之首,开始执行,具体见图7所示。
3)cmd n+4执行成功后,继续向下执行到cmd n。如果此时cmd n执行依然失败,则跳过有标记与cmd n相关的所有指令,检查下一条指令cmd n+5是否和cmd n相关:
a)如果相关,则标记,继续向下,找到和cmd n无关的指令,具体见图8所示。
b)如果无关,则执行cmd n+5
i.如果cmd n+5执行成功,则向下继续执行cmd n,重复过程2a,具体见图9所示。
ii.如果cmd n+5执行失败,则跳过cmd n及cmd n的相关指令,向下检查和cmd n+5相关的所有指令,如果关联,则将该指令标记为和cmd n+5关联,重复过程2b,具体见图10所示。
4.NCQ与SDQ及BDQ的同步机制
对于NCQ中的文件上传命令,其完成与否取决于对应的SDQ或者BDQ中的命令。当Upload Manager在NCQ中添加一条数据上传命令时,首先会将该命令的状态设置为“未完成”,当执行到该条命令时,Upload Manager会在SDQ或者BDQ中添加对应的命令,并标记其关联的NCQ中的命令的ID。在SDQ或者BDQ中对应的上传命令执行完成前,NCQ中对应的命令处于“异常”状态。Upload Manager会根据异常处理逻辑来处理该条命令,处理逻辑同第3节。
实施例2
1.同步模型的实现框架
Upload Manager是同步模型的核心模块。Upload Manager向上层应用提供相应接口,以供上层应用添加、取消指定的文档操作;Upload Manager同时向上层应用提供接口,供上层逻辑查询某个文档操作的状态,或者整个NCQ同步队列的状态。Upload Manager管理NCQ,SDQ,BDQ队列,并调度相应的Upload Agent来完成从客户端到服务器端的同步操作。
1.1Upload Manager初始化
客户端启动后,Upload Manager进行初始化,初始化动作包含以下操作:
初始化NCQ队列:由于客户端每次退出时可能还有未完成的同步操作,所以NCQ表不仅仅会记录在本地内存中,同时会记录在本地文件中。Upload Manager每次启动后,会首先从文件中获取上次退出时尚未同步完成的操作,重建NCQ表。如果没有同步操作,该表为空。
初始化SDQ队列:过程同上。
初始化BDQ队列:过程同上。
初始化NCQ Agent:创建NCQ Agent实例,建立同服务器端的连接,并做好相应的准备。
初始化SDQ Agent:按照预先的设定,创建预定个数的SDQ Agent实例,建立同服务器端的连接,并做好相应的准备。
初始化BDQ Agent:按照预先的设定,创建预定个数的SDQ Agent实例,建立同服务器端的连接,并做好相应的准备。
1.2Upload Manager执行逻辑
Upload Manager初始化后,即开始执行。
Upload Manager会检查是否有应用层的请求,若有操作需要添加到同步队列,则首先将该命令添加到NCQ队列的末尾。若有操作需要取消,则将NCQ队列中该操作对应的命令删除。若为查询操作,则从队列中获取对应的命令的状态,回复给上层应用。
Upload Manager会轮询NCQ队列,如果队列中有命令需要同步,则执行同步操作。
Upload Manager会轮询SDQ队列,如果队列中有命令需要同步,则执行同步操作。
Upload Manager会轮询BDQ队列,如果队列中有命令需要同步,则执行同步操作。
2.NCQ队列的数据结构
NCQ为一通过链表实现的队列,结构如图11所示:
NCQ队列中每条命令记录的数据结构如表3所示,
表3
3.SDQ队列的数据结构
SDQ为一通过链表实现的队列,结构如图12所示。
SDQ队列中的每条命令记录的数据结构如表4所示。
表4
4.BDQ队列的数据结构
BDQ为一通过链表实现的队列,结构如图13所示。
BDQ队列中的每条命令记录的数据结构如表5所示。
表5
5.NCQ队列中命令的执行流程
NCQ队列中命令的执行流程如图14所示,具体过程如下:
1)获取当前NCQ队列的队首命令;
2)判断队列是否为空,若为否,执行步骤3),否则结束;
3)判断当前命令状态是否异常,若为否,执行步骤4),否则结束;
4)判断是否为文件上传命令,若为是,执行步骤5),否则,执行步骤8);
5)通过文件大小判断为大数据量文件还是小数据量文件,若为大数据量文件,执行步骤6),否则执行步骤7);
6)在BDQ队列中添加文件上传命令,并将当前命令标记为异常,并返回步骤1);
7)在SDQ队列中添加文件上传命令,并将当前命令标记为异常,并返回步骤1);
8)调用NCQ Agent执行当前命令;
9)判断执行同步是否正常完成,若为是,执行步骤10),否则,进入异常处理流程;
10)判断当前命令是否被标记为异常,若为是,执行步骤11),否则返回步骤1);
11)遍历整个NCQ队列,将所有标记为依赖于当前命令的命令的依赖标记删除;
12)将当前命令从队列中移除,并将下一条命令设置为队首。
6.NCQ队列中命令执行异常时的处理流程
NCQ队列中命令执行异常时的处理流程如图15所示,具体过程如下:
1)获取下一条命令的相关信息,并判断是否已经标记为依赖于当前命令,若为否,执行步骤2),否则继续执行步骤1);
2)分析是否与异常命令有关,若为是,执行步骤3),否则,将该命令移动到队列首位,并返回NCQ队列执行流程;
3)将该条命令标记为当前异常命令的关联命令。
7.SDQ队列中命令的执行流程
SDQ队列中命令的执行流程如图16所示,具体过程如下:
1)获取当前SDQ队列的队首命令;
2)判断命令是否在执行中或队列为空,若均为否,执行步骤3),否则结束;
3)判断是否有空闲的SDQ Agent,若为是,执行步骤4),否则等待空闲的SDQAgent,并继续执行步骤3);
4)将当前命令的状态设置为正在执行中,并移动到队列末尾;
5)调用SDQAgent执行当前命令;
6)判断为完成或异常,若为异常,返回步骤5),否则,执行步骤7);
7)释放SDQAgent;
8)将当前命令从SDQ队列中删除;
9)将SDQ队列中关联的命令的异常标记去除,并返回步骤1)。
8.BDQ队列中命令的执行流程
流程同SDQ队列中命令的执行流程,将SDQ队列改为BDQ队列,SDQAgent改为BDQ Agent。
Claims (10)
1.一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,包括以下步骤:
1)将文档操作命令队列按照类型分为三种:普通命令队列NCQ、大数据上传队列BDQ和小数据上传队列SDQ,其中NCQ中包含所有待处理的文档操作命令,BDQ中包含所有的大数据量的文件的上传操作,SDQ中包含所有的小数据量的文件的上传操作;
2)通过上传管理器Upload Manager来管理整个文档操作的上传,Upload Manager管理一个上传代理池Upload Agent Pool,上传代理池中包括NCQ Agent、SDQ Agent和BDQ Agent,通过调用这些代理来完成一个控制命令或者数据上传命令;其中文档上传队列的管理包括以下步骤:
(1)上传管理器Upload Manager进行初始化,包括初始化普通命令队列NCQ队列、大数据上传队列BDQ队列、小数据上传队列SDQ队列、NCQAgent、SDQAgent和BDQ Agent;
(2)Upload Manager执行逻辑,包括检查是否有应用层的请求、轮询NCQ队列、轮询SDQ队列和轮询BDQ队列。
2.根据权利要求1所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的NCQ队列、BDQ队列和SDQ队列分别如下:
NCQ队列包含所有待同步的文档操作命令;
BDQ队列包含所有的大数据量文件的上传操作;
SDQ队列包含所有的小数据量文件的上传操作;
其中大数据量及小数据量的定义根据用户环境设置,即文件大小大于阈值的设置为大数据量文件,小于或者等于阈值的设置为小数据量文件;
客户端产生的所有的文档操作命令,首先添加到NCQ队列的末尾,若该命令为文件上传操作,则同时根据文件的大小,在相应的BDQ队列或者SDQ队列中添加一条文件上传命令,并建立和NCQ队列中相应命令的关联。
3.根据权利要求2所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的NCQ队列采用顺序执行方式,BDQ队列和SDQ队列 采用并发执行方式。
4.根据权利要求3所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的NCQ Agent在NCQ队列中有命令需要执行时,执行队列中的命令;SDQ Agent和BDQ Agent分别用于执行SDQ队列和BDQ队列的数据上传,当SDQ队列中有命令等待执行时,分配处于空闲状态的SDQ Agent完成该同步指令,如果没有空闲的SDQ Agent,则需要等待正在工作的SDQ Agent变成空闲状态;当BDQ队列中有命令等待执行时,分配处于空闲状态的BDQ Agent完成该同步指令,如果没有空闲的BDQAgent,则需要等待正在工作的BDQAgent变成空闲状态。
5.根据权利要求4所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的Upload Manager检查是否有应用层的请求具体为:
若有操作需要添加到同步队列,则首先将该命令添加到NCQ队列的末尾;
若有操作需要取消,则将NCQ队列中该操作对应的命令删除;
若为查询操作,则从队列中获取对应的命令的状态,回复给上层应用。
6.根据权利要求5所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的Upload Manager轮询NCQ队列具体为:
1)获取当前NCQ队列的队首命令;
2)判断队列是否为空,若为否,执行步骤3),否则结束;
3)判断当前命令状态是否异常,若为否,执行步骤4),否则结束;
4)判断是否为文件上传命令,若为是,执行步骤5),否则,执行步骤8);
5)通过文件大小判断为大数据量文件还是小数据量文件,若为大数据量文件,执行步骤6),否则执行步骤7);
6)在BDQ队列中添加文件上传命令,并将当前命令标记为异常,并返回步骤1);
7)在SDQ队列中添加文件上传命令,并将当前命令标记为异常,并返回步骤1):
8)调用NCQ Agent执行当前命令;
9)判断执行同步是否正常完成,若为是,执行步骤10),否则,进入异常处理流程;
10)判断当前命令是否被标记为异常,若为是,执行步骤11),否则返回步骤 1);
11)遍历整个NCQ队列,将所有标记为依赖于当前命令的命令的依赖标记删除;
12)将当前命令从队列中移除,并将下一条命令设置为队首。
7.根据权利要求6所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的异常处理流程具体为:
1)获取下一条命令的相关信息,并判断是否已经标记为依赖于当前命令,若为否,执行步骤2),否则继续执行步骤1);
2)分析是否与异常命令有关,若为是,执行步骤3),否则,将该命令移动到队列首位,并返回NCQ队列执行流程;
3)将该条命令标记为当前异常命令的关联命令。
8.根据权利要求6所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的轮询SDQ队列具体流程如下:
1)获取当前SDQ队列的队首命令;
2)判断命令是否在执行中或队列为空,若均为否,执行步骤3),否则结束;
3)判断是否有空闲的SDQ Agent,若为是,执行步骤4),否则等待空闲的SDQ Agent,并继续执行步骤3);
4)将当前命令的状态设置为正在执行中,并移动到队列末尾;
5)调用SDQ Agent执行当前命令;
6)判断为完成或异常,若为异常,返回步骤5),否则,执行步骤7);
7)释放SDQAgent;
8)将当前命令从SDQ队列中删除;
9)将SDQ队列中关联的命令的异常标记去除,并返回步骤1)a 。
9.根据权利要求7所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的轮询BDQ队列的流程同轮询SDQ队列,将SDQ队列改为BDQ队列,SDQ Agent改为BDQAgent。
10.根据权利要求2所述的一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,所述的NCQ队列中的数据上传命令与SDQ队列或者BDQ队列中的命令通过关联命令ID建立一对一的对应关系;
NCQ队列中的数据上传命令的执行完全依赖于SDQ队列或者BDQ队列中对 应的上传命令的执行;在NCQ中,当命令执行到某个数据上传命令时,Upload Manager会在SDQ或者BDQ中添加一条数据上传命令,并将NCQ中对应命令的状态设置为等待状态;同时,Upload Manager会将NCQ中的该条命令对应的ID记录到关联的SDQ或者BDQ的命令记录中;当SDQ或者BDQ中对应的数据上传命令执行完成后,SDQ或者BDQ会通知Upload Manager,Upload Manager随后会将NCQ中对应的命令设置为执行完成,进行下一条命令的执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310582305.3A CN103607451B (zh) | 2013-11-18 | 2013-11-18 | 支持并发的客户端与服务器端的文档操作同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310582305.3A CN103607451B (zh) | 2013-11-18 | 2013-11-18 | 支持并发的客户端与服务器端的文档操作同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103607451A true CN103607451A (zh) | 2014-02-26 |
CN103607451B CN103607451B (zh) | 2017-02-15 |
Family
ID=50125651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310582305.3A Active CN103607451B (zh) | 2013-11-18 | 2013-11-18 | 支持并发的客户端与服务器端的文档操作同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103607451B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753824A (zh) * | 2018-12-14 | 2019-05-14 | 航天信息股份有限公司 | 一种分布式电子签章方法和系统 |
CN109947701A (zh) * | 2019-03-28 | 2019-06-28 | 深圳市六度人和科技有限公司 | 基于nsq消息队列的文件导入方法、装置、设备及存储介质 |
CN112187667A (zh) * | 2020-09-16 | 2021-01-05 | 深圳希施玛数据科技有限公司 | 数据下载方法、装置、设备及存储介质 |
CN114500514A (zh) * | 2022-02-14 | 2022-05-13 | 京东科技信息技术有限公司 | 文件传输方法及装置、电子设备和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005259110A (ja) * | 2004-03-08 | 2005-09-22 | Toshiba Corp | ドキュメント情報管理装置、ドキュメント情報管理プログラムおよびドキュメント情報管理方法 |
CN101256572A (zh) * | 2008-03-21 | 2008-09-03 | 华为技术有限公司 | 一种xml文档操作方法及xdms |
CN102541755A (zh) * | 2010-12-29 | 2012-07-04 | 深圳市硅格半导体有限公司 | 闪存存储器及其接收数据的方法 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储系统 |
-
2013
- 2013-11-18 CN CN201310582305.3A patent/CN103607451B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005259110A (ja) * | 2004-03-08 | 2005-09-22 | Toshiba Corp | ドキュメント情報管理装置、ドキュメント情報管理プログラムおよびドキュメント情報管理方法 |
CN101256572A (zh) * | 2008-03-21 | 2008-09-03 | 华为技术有限公司 | 一种xml文档操作方法及xdms |
CN102541755A (zh) * | 2010-12-29 | 2012-07-04 | 深圳市硅格半导体有限公司 | 闪存存储器及其接收数据的方法 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753824A (zh) * | 2018-12-14 | 2019-05-14 | 航天信息股份有限公司 | 一种分布式电子签章方法和系统 |
CN109947701A (zh) * | 2019-03-28 | 2019-06-28 | 深圳市六度人和科技有限公司 | 基于nsq消息队列的文件导入方法、装置、设备及存储介质 |
CN109947701B (zh) * | 2019-03-28 | 2023-08-29 | 深圳市六度人和科技有限公司 | 基于nsq消息队列的文件导入方法、装置、设备及存储介质 |
CN112187667A (zh) * | 2020-09-16 | 2021-01-05 | 深圳希施玛数据科技有限公司 | 数据下载方法、装置、设备及存储介质 |
CN114500514A (zh) * | 2022-02-14 | 2022-05-13 | 京东科技信息技术有限公司 | 文件传输方法及装置、电子设备和计算机可读存储介质 |
CN114500514B (zh) * | 2022-02-14 | 2023-12-12 | 京东科技信息技术有限公司 | 用于云存储的文件传输方法及装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103607451B (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891175B2 (en) | System having in-memory buffer service, temporary events file storage system and events file uploader service | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
US20240264940A1 (en) | Write data cache method and system, device, and storage medium | |
CN106469087B (zh) | 元数据输出方法、客户端和元数据服务器 | |
CN102750257B (zh) | 基于访问信息调度的片上多核共享存储控制器 | |
WO2010037348A1 (zh) | 数据迁移方法、系统、数据迁移服务器及数据接口服务器 | |
CN106776395B (zh) | 一种共享集群的任务调度方法及装置 | |
CN103607451A (zh) | 支持并发的客户端与服务器端的文档操作同步方法 | |
CN102117308B (zh) | 一种数据处理方法和数据处理系统 | |
CN112148221B (zh) | 一种磁盘冗余阵列的巡检方法、装置、设备及存储介质 | |
CN101093454A (zh) | 一种在分布式系统中执行sql脚本文件的方法和装置 | |
US20090070560A1 (en) | Method and Apparatus for Accelerating the Access of a Multi-Core System to Critical Resources | |
CN102902589A (zh) | 一种集群mic作业的管理及调度方法 | |
CN111432899B (zh) | 用于管理对共享端口的多核访问的系统和方法 | |
CN103346902A (zh) | 数据采集调度的方法及系统 | |
CN111177032A (zh) | 缓存空间申请方法、系统、装置及计算机可读存储介质 | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 | |
WO2023246314A9 (zh) | 信息处理方法、信息处理系统、电子设备及存储介质 | |
US8554753B1 (en) | Maintaining database transaction priority between web pages in the absence of direct communication between the pages | |
CN102360382B (zh) | 一种高速对象并行存储系统目录复制方法 | |
CN104182490B (zh) | 一种管理数据访问的方法及装置 | |
CN113821175A (zh) | 基于存储内容优先的ssd指令调度方法及系统 | |
CN115543949B (zh) | 一种日志处理方法和半导体工艺设备 | |
CN104252367A (zh) | 一种智能终端中异步加载图片的方法和系统 | |
Yuan et al. | Research of scheduling strategy based on fault tolerance in Hadoop platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant after: SHANGHAI EISOO INFORMATION TECHNOLOGY CO., LTD. Address before: 200072 room 3, building 840, No. 101 Middle Luochuan Road, Shanghai, Zhabei District Applicant before: Shanghai Eisoo Software Co.,Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |