[发明专利]支持并发的客户端与服务器端的文档操作同步方法有效
申请号: | 201310582305.3 | 申请日: | 2013-11-18 |
公开(公告)号: | CN103607451B | 公开(公告)日: | 2017-02-15 |
发明(设计)人: | 黄君洲 | 申请(专利权)人: | 上海爱数信息技术股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 上海科盛知识产权代理有限公司31225 | 代理人: | 赵志远 |
地址: | 201112 上海市闵行*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种支持并发的客户端与服务器端的文档操作同步方法,包括以下步骤1)将文档操作命令队列按照类型分为三种普通命令队列NCQ、大数据上传队列BDQ和小数据上传队列SDQ,其中NCQ中包含所有待处理的文档操作命令,BDQ中包含所有的大数据量的文件的上传操作,SDQ中包含所有的小数据量的文件的上传操作;2)通过上传管理器Upload Manager来管理整个文档操作的上传,Upload Manager管理一个上传代理池Upload Agent Pool,上传代理池中包括NCQAgent、SDQ Agent和BDQ Agent,通过调用这些代理来完成一个控制命令或者数据上传命令。与现有技术相比,本发明具有提高传输效率、以避免大文件上传时间太长从而影响小文件的同步、解决队列堵塞的问题等优点。 | ||
搜索关键词: | 支持 并发 客户端 服务器端 文档 操作 同步 方法 | ||
【主权项】:
一种支持并发的客户端与服务器端的文档操作同步方法,其特征在于,包括以下步骤: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队列、NCQ Agent、SDQ Agent和BDQ Agent;(2)Upload Manager执行逻辑,包括检查是否有应用层的请求、轮询NCQ队列、轮询SDQ队列和轮询BDQ队列;所述的NCQ队列、BDQ队列和SDQ队列分别如下:其中大数据量及小数据量的定义根据用户环境设置,即文件大小大于阈值的设置为大数据量文件,小于或者等于阈值的设置为小数据量文件;客户端产生的所有的文档操作命令,首先添加到NCQ队列的末尾,若该命令为文件上传操作,则同时根据文件的大小,在相应的BDQ队列或者SDQ队列中添加一条文件上传命令,并建立和NCQ队列中相应命令的关联;所述的NCQ队列采用顺序执行方式,BDQ队列和SDQ队列采用并发执行方式;所述的NCQ Agent在NCQ队列中有命令需要执行时,执行队列中的命令;SDQ Agent和BDQ Agent分别用于执行SDQ队列和BDQ队列的数据上传,当SDQ队列中有命令等待执行时,分配处于空闲状态的SDQ Agent完成该同步指令,如果没有空闲的SDQ Agent,则需要等待正在工作的SDQ Agent变成空闲状态;当BDQ队列中有命令等待执行时,分配处于空闲状态的BDQ Agent完成该同步指令,如果没有空闲的BDQ Agent,则需要等待正在工作的BDQ Agent变成空闲状态;所述的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)将当前命令从队列中移除,并将下一条命令设置为队首;所述的轮询SDQ队列具体流程如下:1)获取当前SDQ队列的队首命令;2)判断命令是否在执行中或队列为空,若均为否,执行步骤3),否则结束;3)判断是否有空闲的SDQ Agent,若为是,执行步骤4),否则等待空闲的SDQ Agent,并继续执行步骤3);4)将当前命令的状态设置为正在执行中,并移动到队列末尾;5)调用SDQ Agent执行当前命令;6)判断为完成或异常,若为异常,返回步骤5),否则,执行步骤7);7)释放SDQ Agent;8)将当前命令从SDQ队列中删除;9)将SDQ队列中关联的命令的异常标记去除,并返回步骤1);所述的轮询BDQ队列的流程同轮询SDQ队列,将SDQ队列改为BDQ队列,SDQ Agent改为BDQ Agent。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海爱数信息技术股份有限公司,未经上海爱数信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310582305.3/,转载请声明来源钻瓜专利网。