CN117421290A - 一种基于事务的文件同步方法及同步系统 - Google Patents
一种基于事务的文件同步方法及同步系统 Download PDFInfo
- Publication number
- CN117421290A CN117421290A CN202311435478.2A CN202311435478A CN117421290A CN 117421290 A CN117421290 A CN 117421290A CN 202311435478 A CN202311435478 A CN 202311435478A CN 117421290 A CN117421290 A CN 117421290A
- Authority
- CN
- China
- Prior art keywords
- file
- cloud
- synchronization
- operation record
- conflict
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000001360 synchronised effect Effects 0.000 claims description 55
- 238000012545 processing Methods 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 230000002457 bidirectional effect Effects 0.000 description 9
- 230000006399 behavior Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于事务的文件同步方法及同步系统,包括:获取第一设备的文件操作记录;根据文件操作记录对第一设备和云端进行冲突检查;根据文件操作记录按照时序更新云端的文件版本信息表、操作记录表和云端事务标识。获取云端最新的第一事务标识和第二设备前次同步的第二事务标识;获取第一事务标识对应的第一操作记录;根据第一操作记录,对云端与第二设备进行冲突检查;根据第一操作记录,按照时序在第二设备的文件同步盘中进行重放操作,完成同步。本发明实施例的操作记录写入是基于事务标识的,能够减少用户同步盘数据丢失风险,并且在同步时对设备终端和云端进行冲突检查,能够有效防止冲突发生,可以广泛应用于计算机技术领域。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于事务的文件同步方法及同步系统。
背景技术
随着云盘应用的发展,不同终端的文件上传至云端的场景也越来越多,其中电脑设备上的文件上传至云端进一步优化,可在电脑本地磁盘上新建一个同步盘目录,不用用户手动点击上传,实现在同步盘目录下本地文件与云端文件的双向同步,且可支持多终端设备,一个云端。目前重构前的技术是对同步盘下的文件的所有操作记录都写入到云端,并根据当前操作时间与上一次操作时间的间隔来获取云端的增量文件记录,并在其他设备上回放,来实现第一设备同步至云端,云端同步至第二设备,如图1所示。
该方案会导致文件冲突问题。如图2所示,由于查询操作记录接口存在临界值问题,请求接口时,请求时间范围起始fromRev为上一次变更时间+1,结束toRev则默认为请求接口时的服务器当前时间,查询操作行为的时间区间为fromRev<=操作时间<=toRev,如果toRev时间正好有部分并发操作在发生但操作行为未入库,存在遗漏的可能性。
同时,当云端新增一个文件,在文件未同步到本地时,本地新增一个同名文件,会引发文件冲突。类似这种冲突没有提前与云端判断的,都会产生冲突。目前现有行业的冲突判断是依据元文件信息的修改时间或者元文件本身内容。且文件本地云端双向同步时也多依赖于文件本身内容的md5值的改变来进行文件内容的更新,还需单独区分文件和文件夹的双向同步,同步效率低。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明提出一种可靠性高的基于事务的文件同步方法及同步系统。
一方面,本发明实施例提供了一种基于事务的文件同步方法,包括:
获取第一设备对文件同步盘的文件操作记录;其中,所述文件操作记录是事务性的;所述第一设备为一个或多个;
根据所述文件操作记录,对所述第一设备和云端进行冲突检查,以使得所述云端根据冲突检查的结果向所述第一设备返回冲突信息;
若没有返回所述冲突信息,则根据所述文件操作记录,按照时序,更新所述云端的文件版本信息表、操作记录表和云端事务标识。
可选地,所述根据所述文件操作记录,对所述第一设备和云端进行冲突检查,以使得所述云端根据冲突检查的结果向所述第一设备返回冲突信息,包括:
确定所述文件操作记录的操作类型;
根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况;
当出现冲突,则返回冲突信息。
可选地,所述根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况,包括以下至少之一:
当所述操作类型为新增,则将待新增文件的父目录为空、原文件版本记录不存在或者云端删除上级文件夹的情况确定为冲突情况;
当所述操作类型为更新,则将待更新文件的父目录为空、原文件版本记录不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
当所述操作类型为重命名,则将待重命名文件的父目录为空、云端删除了上级文件夹、重命名后的文件版本记录存在、原文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
当所述操作类型为移动,则将待移动文件的移动后的文件版本存在、移动前的文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
当所述操作类型为还原,则将待还原文件的原文件版本不存在的情况确定为冲突情况。
可选地,所述若没有返回所述冲突信息,则根据所述文件操作记录,按照时序,更新所述云端的文件版本信息表、操作记录表和云端事务标识,包括:
按照时序,将所述文件操作记录通过消息队列上传到所述云端;其中,同一个第一设备的所述文件操作记录通过同一个消息队列上传;
根据所述文件操作记录,对第一云端事务标识进行递增处理,得到第二云端事务标识;
根据所述第二云端事务标识,将所述文件操作记录存入云端数据库的操作记录表中;
每存入一个所述文件操作记录,对文件版本信息表中的所述文件操作记录对应的文件版本进行一次递增处理;其中,在并发时,对所述文件版本信息表的版本字段添加数据库行锁。
另一方面,本发明实施例还提供了一种基于事务的文件同步方法,包括:
获取云端最新的第一事务标识和第二设备前次同步的第二事务标识;
当所述第一事务标识大于所述第二事务标识时,获取所述第一事务标识对应的第一操作记录;其中,所述第一操作记录存储在所述云端;所述第一操作记录是事务性的;
根据所述第一操作记录,对所述云端与所述第二设备进行冲突检查;
当没有返回冲突信息时,根据所述第一操作记录,按照时序,在所述第二设备的文件同步盘中进行重放操作,完成从所述云端到所述第二设备的同步;
根据所述第一事务标识,更新所述第二设备的第二事务标识。
可选地,所述根据所述第一操作记录,对所述云端与所述第二设备进行冲突检查,包括:
确定所述第一操作记录的操作类型;
根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况;
当出现冲突,则返回冲突信息。
可选地,所述当没有返回冲突信息时,根据所述第一操作记录,按照时序,在所述第二设备的文件同步盘中进行重放操作,完成从所述云端到所述第二设备的同步,包括:
按照时序,将所述第一操作记录通过消息队列发送到所述第二设备;
根据所述第一操作记录,对所述第二设备的文件同步盘的文件和文件夹进行重放操作,完成从所述云端到所述第二设备的同步。
另一方面,本发明实施例还提供了一种基于事务的文件同步系统,包括:
文件同步盘,用于存储需要同步的文件和文件夹;
同步服务模块,用于执行前面所述的一方面的基于事务的文件同步方法;还用于执行前面所述的另一方面的基于事务的文件同步方法;
数据库模块,用于存储操作记录表和文件版本信息表。
需要说明的是,一些实施例中,系统可以还包括如下模块:
初始化模块,用于对文件同步盘进行初始化处理。
另一方面,本发明实施例还提供了一种电子设备,包括:处理器以及存储器;存储器用于存储程序;处理器执行程序实现如前面所述的方法。
另一方面,本发明实施例还提供了一种计算机存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如前面所述的方法。
另一方面,本发明实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在前面所述的计算机可读存介质中;前面所述的计算机设备的处理器可以从前面所述的计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前面所述的基于事务的文件同步方法。
本发明实施例具有如下有益效果:本发明实施例的文件操作记录是基于事务标识按照时序写入的,保存到云端以及重放到第二设备的文件操作记录能够与第一设备在对同步盘进行操作的操作顺序保持同步,不会丢弃任何的操作记录行为,记录文件版本信息,能够大大减少用户同步盘数据丢失风险,并且同步时对设备终端和云端进行冲突检查,能够有效防止冲突发生。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1是本发明实施例提供的现有文件同步方案的时序图;
图2是本发明实施例提供的现有文件同步方案的冲突示意图;
图3是本发明实施例提供的多个终端与一个云端的同步示意图;
图4是本发明实施例一方面提供的基于事务的文件同步方法的步骤图;
图5是本发明实施例提供的从第一设备同步到云端的流程图;
图6是本发明实施例提供的冲突检查流程图;
图7是本发明实施例另一方面提供的基于事务的文件同步方法的步骤图;
图8是本发明实施例提供的同步盘初始化流程图;
图9是本发明实施例提供的终端与云端双向同步流程图;
图10是本发明实施例提供的同步服务模块的结构示意图;
图11是本发明实施例提供的基于事务的文件同步服务端和终端模块示意图;
图12是本发明实施例提供的一种电子设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,虽然在系统示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一/S100”、“第二/S200”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面介绍本发明中涉及的部分名词解释:
文件同步盘:文件同步盘可以是在终端本地磁盘上新建一个同步盘目录,在该目录下的文件不用用户手动点击上传,用于实现在同步盘目录下,本地文件与云端文件的双向同步,且在本发明实施例中,多个终端的文件同步盘可以共用一个同步盘id,在云端进行同步盘id配置,可以支持一个云端与多个终端设备的双向同步。
文件操作记录:文件操作记录是指对文件同步盘中单个文件或者文件夹进行文件操作所产生的记录,例如新建、删除、更新等。在本发明实施例中,文件操作记录是事务性的。
事务:本发明的事务是指数据库事务,是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。在本发明中,文件操作记录是事务性的,一个文件操作记录可以对应多个操作。
数据库行锁:是指对数据库表中的某一行数据进行锁定,以控制对该行的并发访问和修改。行锁可以防止多个事务同时修改同一行数据,从而保证数据的一致性和完整性。
kafka:kafka是一种开源的消息队列技术框架,主要用来处理大量数据状态下的消息队列。
Redis(远程字典服务):Redis是一种消息队列,是用于内存缓存的开源工具。在本发明实施例中,将单个用户的操作记录放入同一个Redis队列,采用Redis队列进行多线程处理,能够保证用户操作根据时序写入同步盘操作记录表中。
api服务:api服务是基础的服务端接口服务。
需要说明的是,本发明描述的“第一设备”是指从终端同步到云端的过程中表示终端的一方,“第二设备”是指从云端同步到终端的过程中表示终端的一方,第一设备和第二设备均可为一个或多个。在一些实施例中,第一设备和第二设备可以是同一个终端。为了便于理解,本发明以终端为第一设备或者第二设备进行介绍,在其他实施例中,第一设备或者第二设备还可以是个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC端、小型计算机、大型计算机等。
除非特别描述,在本发明的一些描述中,名词“文件”单独出现时,其含义可以包括文件或者文件夹。“标识”指的是数据库中常用的“id”,根据不同的数据项,可以有不同的标识,即id。
针对现有技术中存在的至少一个问题,本发明实施例提出了一种基于事务的文件同步方法及同步系统,参照图3,图3是本发明实施例提供的多个终端与一个云端的同步示意图,该方法和系统能够基于文件版本信息和事务操作记录实现多个终端与一个云端的可靠同步。
下面首先介绍本发明实施例的一种基于事务的文件同步方法。
本发明实施例的一方面提供了一种基于事务的文件同步方法,参照图4和图5,图4是本发明实施例一方面提供的基于事务的文件同步方法的步骤图,图5是本发明实施例提供的从第一设备同步到云端的流程图,该方法可以包括但不限于包括以下步骤S100~S300。
S100、获取第一设备对文件同步盘的文件操作记录;其中,所述文件操作记录是事务性的;所述第一设备为一个或多个。
具体地,第一设备对本地的文件同步盘中的文件或者文件夹进行操作,产生文件操作记录,文件操作记录包括创建文件夹、重命名文件/文件夹、删除文件/文件夹、移动文件/文件夹、上传文件至少之一。
S200、根据所述文件操作记录,对所述第一设备和云端进行冲突检查,以使得所述云端根据冲突检查的结果向所述第一设备返回冲突信息。
首先,确定文件操作记录的操作类型,操作类型按照第一设备能够对同步盘中文件进行的操作而区分;根据操作类型,结合云端的文件版本信息表,确定冲突情况;当出现冲突,则返回冲突信息。
首先,确定所述文件操作记录的操作类型,操作类型按照第一设备能够对同步盘中文件进行的操作而区分;根据操作类型,结合云端的文件版本信息表,确定冲突情况;当出现冲突,则返回冲突信息。
更为具体地,参照图6,图6是本发明实施例提供的冲突检查流程图,步骤S200中涉及的各种情况,可以参照以下至少之一的方式处理:
(1)当所述操作类型为新增,则将待新增文件的父目录为空、原文件版本记录不存在或者云端删除上级文件夹的情况确定为冲突情况;
(2)当所述操作类型为更新,则将待更新文件的父目录为空、原文件版本记录不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
(3)当所述操作类型为重命名,则将待重命名文件的父目录为空、云端删除了上级文件夹、重命名后的文件版本记录存在、原文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
(4)当所述操作类型为移动,则将待移动文件的移动后的文件版本存在、移动前的文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
(5)当所述操作类型为还原,则将待还原文件的原文件版本不存在的情况确定为冲突情况。
可以理解的是,本发明的冲突检查处理过程主要是基于文件版本信息表对进行了操作之后的文件版本信息进行比对,进而确定是否产生冲突。这种冲突检查方式提供了自主的冲突判断解决逻辑,不同于原来冲突判断只关注文件内容本身的变化(文件操作时间或者文件内容),而是主要依赖于原有文件夹信息(文件夹id等)是否存在、原有的版本记录信息是否存在、原有的版本记录版本号是否大于当前操作文件的版本号来进行冲突判断,能够有效适用于本发明的文件同步方法。
S300、若没有返回所述冲突信息,则根据所述文件操作记录,按照时序,更新所述云端的文件版本信息表、操作记录表和云端事务id。
本发明的文件版本信息表存储在云端,具体可以参照图3中的文件版本元信息表进行构建,其中包含同步盘id(repo_id)、文件路径(file_path)、文件名称(file_name)、md5值、文件版本号(version)等数据项。
操作记录表可以参照图3中的操作记录表进行构建,其中包含同步盘id(repo_id)、事务id(trans_id)、操作类型(op_type)等数据项。
在本发明实施例中,多个用户,即多个第一设备终端需要进行同步时,则同步盘id配置为同一个id号,示例性地,可以应用于同一个用户的不同设备(移动终端、终端等)的文件进行同步。
具体而言,若没有返回冲突,则统一生成操作记录入口,按照时序向云端发送文件操作记录的消息队列,操作类型根据具体操作确定。上述的消息队列可以采用kafka消息队列,以用户唯一标识userId区分队列,并通过userId分到不同的Redis队列中来保证单个用户按顺序消费,从而实现单个用户的文件操作记录按顺序保存。
根据操作记录消息队列,查询操作的文件是否已经在文件版本信息表中存在,若存在,则更新文件版本,文件版本+1,在更新过程中对数据库中该文件版本信息的数据库行加上行锁,保证数据的一致性和稳定性;若不存在,则新增文件版本记录,并设置初始版本号,在一些实施例中,可以设置初始版本号为1。
将文件操作记录存入操作记录表,并维护云端事务id递增+1,存储在数据库的操作记录表中。可以采用Redis的increase原子命令进行递增处理,在Redis中,increase命令是用于进行字段自增的命令。
基于此,步骤S300可以包括以下步骤S310~S330。
S310、按照时序,将所述文件操作记录通过消息队列上传到所述云端;其中,同一个第一设备的所述文件操作记录通过同一个消息队列上传。
S320、根据所述文件操作记录,对第一云端事务id进行递增处理,得到第二云端事务id。
S330、根据所述第二云端事务id,将所述文件操作记录存入云端数据库的操作记录表中。
S340、每存入一个所述文件操作记录,对文件版本信息表中的所述文件操作记录对应的文件版本进行一次递增处理;其中,在并发时,对所述文件版本信息表的版本字段添加数据库行锁。
在第一设备同步到云端的过程中,如果有旧的文件同步盘,则保留旧的同步盘写入逻辑,将文件操作记录也写入到旧的同步盘,并保存在数据库,在第一设备中迭代一段时间后再进行剥离。使得本发明实施例能够兼容旧同步盘的逻辑功能。
本发明实施例的另一方面还提供了一种基于事务的文件同步方法,参照图7,图7是本发明实施例另一方面提供的基于事务的文件同步方法的步骤图,该方法包括以下步骤S400~S800。
S400、获取云端最新的第一事务id和第二设备前次同步的第二事务id。
S500、当所述第一事务id大于所述第二事务id时,获取所述第一事务id对应的第一操作记录;其中,所述第一操作记录存储在所述云端;所述第一操作记录是事务性的。
将第一事务id与第二事务id进行比较,在第一事务id大于第二事务id时,表明其他终端对文件同步盘有更新,因此需要进行云端向第二设备的同步。第一事务id存储在第二设备本地数据库的操作记录表中,第二事务id存储在云端数据库的操作记录表中。
S600、根据所述第一操作记录,对所述云端与所述第二设备进行冲突检查。
首先,确定第一操作记录的操作类型;根据操作类型,结合云端的文件版本信息表,确定冲突情况;当出现冲突,则返回冲突信息。
具体实现可以参照图6和步骤S200的介绍,根据第一操作记录的操作类型,基于文件版本信息进行冲突检查,此处不再赘述。
S700、当没有返回冲突信息时,根据所述第一操作记录,按照时序,在所述第二设备的文件同步盘中进行重放操作,完成从所述云端到所述第二设备的同步。
具体地,按照时序,将所述第一操作记录和相关文件通过消息队列发送到所述第二设备;根据所述第一操作记录,对所述第二设备的文件同步盘的文件和文件夹进行重放操作,完成从所述云端到所述第二设备的同步。
重放的操作是指在数据库故障恢复过程中,通过重放日志文件中的操作记录来还原数据的过程。重放操作是一种数据恢复技术,它可以帮助管理员在数据库故障后快速恢复数据并保持数据的一致性。在本发明中,通过重放操作将云端基于事务的文件操作记录作为在第二设备中还原数据的依据,能够按照在第一设备上的操作顺序,对第二设备中文件同步盘的文件进行相同处理,以达到同步的效果。
S800、根据所述第一事务id,更新所述第二设备的第二事务id。
具体地,可以将第一事务id赋值给第二事务id,进而更新第二设备的第二事务id。
在一些实施例中,文件同步盘在应用之前可以进行初始化处理,参照图8所示,图8是本发明实施例提供的同步盘初始化流程图,具体初始化处理的过程可以为:
以PC客户端和云端同步的场景为例,PC客户端初始化设置同步盘,选择本地文件夹,设置成功则返回初始化任务id。进型异步操作,携带初始化任务id查询云端是否已经存在同步盘,当云端存在同步盘,则以任务id为key,设置同步盘缓存信息,等待PC客户端下次调用来获取同步盘信息。当云端不存在同步盘,将多线程批量保存设置为同步盘的本地文件夹中已上传的文件版本信息,将初始版本设置为1,并写入一条初始化同步盘操作记录,操作类型为初始化,初始事务id为0,新增云端同步盘信息,以任务id为key,设置同步盘缓存信息,待PC客户端下次调用来获取同步盘信息。若初始化完成,则设置缓存值为同步值信息;若初始化未完成,则设置缓存值为初始化中。
当原有旧同步盘的情况下,PC客户端查询初始化设置同步盘的结果,通过同步盘缓存信息查询同步盘的云端缓存信息,若查询到云端缓存信息,则从数据库中获取云端最新的事务id,查询云端同步盘记录数据库表,获取云端同步盘的文件列表信息,并下载云端文件到本地,记录操作;将云端最新事务id设置为本地事务id。
在一些实施例中,可以进行终端与云端的双向同步,参照图9,图9是本发明实施例提供的终端与云端双向同步流程图,可以定时或者不定时触发同步处理,也可以配置相应的同步条件,在满足该同步条件的情况下进行双向同步。在进行终端与云端双向同步的过程中,将步骤S100~S300以及步骤S400~S800同时执行,由于含有处理冲突的步骤,可以对检测后双向无冲突的数据进行合并。
在一些实施例中,参照图3,可以进行多个终端与一个云端的同步。例如应用于一个用户的多个设备终端,或者不同的用户的多个设备终端,通过云端进行文件同步。
另一方面,本发明实施例提供了一种基于事务的文件同步系统,如图10所示,图10是本发明实施例提供的同步服务模块的结构示意图,包括:
文件同步盘,用于存储需要同步的文件和文件夹。具体地,该文件同步盘配置于终端和云端,并配置同步盘id,用于区分不同的同步盘,可以是在电脑本地磁盘上新建一个同步盘目录。
同步服务模块,用于执行前面所述的一方面的基于事务的文件同步方法;还用于执行前面所述的另一方面的基于事务的文件同步方法。
数据库模块,用于存储操作记录表和文件版本信息表。数据库模块可以包括云端的数据库和终端本地的数据库;云端数据库和终端数据库均可以存储相应的文件版本信息表和操作记录表,其中,终端数据库存储该终端文件同步盘的文件版本信息和操作记录。
需要说明的是,一些实施例中,该系统可以还包括如下模块:
初始化模块,用于对文件同步盘进行初始化处理。
进一步地,对本发明的基于事务的文件同步系统的同步服务模块进一步介绍如下:
参照图11,图11是本发明实施例提供的基于事务的文件同步服务端和终端模块示意图,本发明在原有的旧同步盘的api服务中新增了同步盘终端同步模块,并新增了文件同步盘操作时序处理模块和同步盘微服务,同步盘微服务包括同步盘记录模块、同步盘操作管理模和同步盘文件记录模块。
各个模块的功能介绍如下:
同步盘终端同步功能模块:包含基础的文件增删改接口,该接口在原有的文件管理功能基础上增加同步盘冲突判断,提供新的文件管理功能,如创建文件夹、重命名、删除、移动和上传文件操作。中间逻辑新增了同步盘微服务返回的冲突判断处理。
同步盘操作时序处理模块:增加按照单一用户维度分区处理的kafka队列,消费时为了增加消费速度,加入Redis队列多线程处理,并根据userId把单个用户的操作记录都放入同一个Redis队列中进行处理,保证用户操作是根据时序写入同步盘操作记录表中。
同步盘记录模块:该模块提供异步设置同步盘的能力、查询同步盘设置结果的能力和查询同步盘信息的能力。当已有旧的同步盘系统时,应用本发明的新同步盘系统需要兼容同步历史文件,考虑到同步历史文件耗时比较久,可以采用异步对接的方式进行同步。
同步盘操作管理模块:该模块主要提供同步盘文件操作历史的管理功能,用于同步盘文件操作记录入库,并维护操作记录事务id递增。进一步地,该模块可以提供查询同步盘最新事务id的能力、查询增量同步盘操作记录的能力、写入同步盘文件操作记录的能力、判断多种场景下同步盘操作冲突的能力。
同步盘文件记录模块:用于文件版本信息表的记录新增或者更新,更新时采用数据库表行锁,维护文件信息版本的version(版本)字段,解决操作并发带来的问题。
另一方面,本发明实施例还提供了一种电子设备,如图12所示,图12是本发明实施例提供的一种电子设备的示意图,包括:处理器以及存储器;存储器用于存储程序;处理器执行程序实现如前面所述的方法。
另一方面,本发明实施例还提供了一种计算机存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如前面所述的方法。
另一方面,本发明实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在前面所述的计算机可读存介质中;前面所述的计算机设备的处理器可以从前面所述的计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前面所述的基于事务的文件同步方法。
本发明实施例具有如下有益效果:
1、因操作记录写入是基于事务id的,减少用户同步盘数据丢失风险;本事务id基于数字由程序自动原子性递增,采用Redis的increase命令生成,针对同步盘下的单个用户的维度而言,用户的每一次操作行为都会促使事务id增长。与文件的唯一性标识md5的方法不同,本发明针对单个文件维度。
2、文件版本记录更新,文件版本字段version+1操作加数据库行锁,降低并发对同步盘文件同步功能的影响,改善了并发造成文件版本记录信息错误的情况。
3、提供自主的冲突判断解决逻辑,不同于行业已有的冲突判断关注的文件内容本身变化(文件操作时间或者文件内容)。本发明实施例依赖于原有文件夹id是否存在、原有的文件版本记录信息是否存在、原有文件版本记录版本号是否大于当前操作文件的版本号来进行判断冲突。
4、本发明实施例关注的是文件及文件夹统一的操作记录的存储与重放,操作记录的优先级是根据用户的操作顺序保持同步,并且不会丢弃任何的操作记录行为。文件和文件夹的同步处理方式是统一的,不需要单独分开文件,文件夹,也不用关注下载流程。同步盘功能只需维护好文件操作记录行为管理(根据Kafka的单个用户维度分区队列保证生产者消息顺序,根据Redis队列的先进先出原理保证消费者消息顺序消费),文件版本记录表的新增及更新以及用户与同步盘关系的管理。并且文件操作记录是有序且原子性的。
5、针对文件夹的操作服务端(云端)只记录当前层级的操作记录与版本信息管理,由终端去维护子文件的更新(根据路径模糊匹配删除,移动,重命名)。优化了服务端的资源占用。
下面介绍本发明实施例的一个应用实例:
构造基于事务的文件同步系统,对文件同步盘进行初始化处理,终端定时进行云端同步,获取第一设备对文件同步盘的文件操作记录;其中,所述文件操作记录是事务性的;所述第一设备为一个或多个;根据所述文件操作记录,对所述第一设备和云端进行冲突检查,以使得所述云端根据冲突检查的结果向所述第一设备返回冲突信息;若没有返回冲突,则按照时序,将文件操作记录通过消息队列上传到云端;将文件操作记录存入云端数据库的操作记录表中;每存入一个单位的文件操作记录,对文件版本信息表中文件操作记录对应的文件版本和云端事务id进行一次递增处理;其中,在并发时,对文件版本信息表的版本字段添加数据库行锁。
云端向终端进行同步,获取云端最新的第一事务id和第二设备前次同步的第二事务id;当所述第一事务id大于所述第二事务id时,获取所述第一事务id对应的第一操作记录;其中,所述第一操作记录存储在所述云端;所述第一操作记录是事务性的;根据所述第一操作记录,对所述云端与所述第二设备进行冲突检查;当没有返回冲突信息时,根据所述第一操作记录,按照时序,在所述第二设备的文件同步盘中进行重放操作,完成从所述云端到所述第二设备的同步;根据所述第一事务id,更新所述第二设备的第二事务id。
在进行冲突检查时,首先确定所述文件操作记录的操作类型;根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况;当出现冲突,则返回冲突信息。具体地,当所述操作类型为新增,则将待新增文件的父目录为空、原文件版本记录不存在或者云端删除上级文件夹的情况确定为冲突情况;当操作类型为更新,则将待更新文件的父目录为空、原文件版本记录不存在或者云端版本号大于当前版本号的情况确定为冲突情况;当操作类型为重命名,则将待重命名文件的父目录为空、云端删除了上级文件夹、重命名后的文件版本记录存在、原文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;当操作类型为移动,则将待移动文件的移动后的文件版本存在、移动前的文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;当操作类型为还原,则将待还原文件的原文件版本不存在的情况确定为冲突情况。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置)、便携式计算机盘盒(磁装置)、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编辑只读存储器(EPROM或闪速存储器)、光纤装置以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本发明权利要求所限定的范围内。
Claims (10)
1.一种基于事务的文件同步方法,其特征在于,包括:
获取第一设备对文件同步盘的文件操作记录;其中,所述文件操作记录是事务性的;所述第一设备为一个或多个;
根据所述文件操作记录,对所述第一设备和云端进行冲突检查,以使得所述云端根据冲突检查的结果向所述第一设备返回冲突信息;
若没有返回所述冲突信息,则根据所述文件操作记录,按照时序,更新所述云端的文件版本信息表、操作记录表和云端事务标识。
2.根据权利要求1所述的一种基于事务的文件同步方法,其特征在于,所述根据所述文件操作记录,对所述第一设备和云端进行冲突检查,以使得所述云端根据冲突检查的结果向所述第一设备返回冲突信息,包括:
确定所述文件操作记录的操作类型;
根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况;
当出现冲突,则返回冲突信息。
3.根据权利要求2所述的一种基于事务的文件同步方法,其特征在于,所述根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况,包括以下至少之一:
当所述操作类型为新增,则将待新增文件的父目录为空、原文件版本记录不存在或者云端删除上级文件夹的情况确定为冲突情况;
当所述操作类型为更新,则将待更新文件的父目录为空、原文件版本记录不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
当所述操作类型为重命名,则将待重命名文件的父目录为空、云端删除了上级文件夹、重命名后的文件版本记录存在、原文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
当所述操作类型为移动,则将待移动文件的移动后的文件版本存在、移动前的文件版本不存在或者云端版本号大于当前版本号的情况确定为冲突情况;
当所述操作类型为还原,则将待还原文件的原文件版本不存在的情况确定为冲突情况。
4.根据权利要求1所述的一种基于事务的文件同步方法,其特征在于,所述若没有返回所述冲突信息,则根据所述文件操作记录,按照时序,更新所述云端的文件版本信息表、操作记录表和云端事务标识,包括:
按照时序,将所述文件操作记录通过消息队列上传到所述云端;其中,同一个第一设备的所述文件操作记录通过同一个消息队列上传;
根据所述文件操作记录,对第一云端事务标识进行递增处理,得到第二云端事务标识;
根据所述第二云端事务标识,将所述文件操作记录存入云端数据库的操作记录表中;
每存入一个所述文件操作记录,对文件版本信息表中的所述文件操作记录对应的文件版本进行一次递增处理;其中,在并发时,对所述文件版本信息表的版本字段添加数据库行锁。
5.一种基于事务的文件同步方法,其特征在于,包括:
获取云端最新的第一事务标识和第二设备前次同步的第二事务标识;
当所述第一事务标识大于所述第二事务标识时,获取所述第一事务标识对应的第一操作记录;其中,所述第一操作记录存储在所述云端;所述第一操作记录是事务性的;
根据所述第一操作记录,对所述云端与所述第二设备进行冲突检查;
当没有返回冲突信息时,根据所述第一操作记录,按照时序,在所述第二设备的文件同步盘中进行重放操作,完成从所述云端到所述第二设备的同步;
根据所述第一事务标识,更新所述第二设备的第二事务标识。
6.根据权利要求5所述的一种基于事务的文件同步方法,其特征在于,所述根据所述第一操作记录,对所述云端与所述第二设备进行冲突检查,包括:
确定所述第一操作记录的操作类型;
根据所述操作类型,结合所述云端的文件版本信息表,确定冲突情况;
当出现冲突,则返回冲突信息。
7.根据权利要求5所述的一种基于事务的文件同步方法,其特征在于,所述当没有返回冲突信息时,根据所述第一操作记录,按照时序,在所述第二设备的文件同步盘中进行重放操作,完成从所述云端到所述第二设备的同步,包括:
按照时序,将所述第一操作记录通过消息队列发送到所述第二设备;
根据所述第一操作记录,对所述第二设备的文件同步盘的文件和文件夹进行重放操作,完成从所述云端到所述第二设备的同步。
8.一种基于事务的文件同步系统,其特征在于,包括:
文件同步盘,用于存储需要同步的文件和文件夹;
同步服务模块,用于执行如权利要求1所述的基于事务的文件同步方法;还用于执行如权利要求5所述的基于事务的文件同步方法;
数据库模块,用于存储操作记录表和文件版本信息表。
9.一种电子设备,其特征在于,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如权利要求1至7中任一项所述的方法。
10.一种计算机存储介质,其中存储有处理器可执行的程序,其特征在于,所述处理器可执行的程序在由所述处理器执行时用于实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311435478.2A CN117421290A (zh) | 2023-10-31 | 2023-10-31 | 一种基于事务的文件同步方法及同步系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311435478.2A CN117421290A (zh) | 2023-10-31 | 2023-10-31 | 一种基于事务的文件同步方法及同步系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117421290A true CN117421290A (zh) | 2024-01-19 |
Family
ID=89532287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311435478.2A Pending CN117421290A (zh) | 2023-10-31 | 2023-10-31 | 一种基于事务的文件同步方法及同步系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117421290A (zh) |
-
2023
- 2023-10-31 CN CN202311435478.2A patent/CN117421290A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117425B (zh) | 用于数字资产同步的方法、系统和介质 | |
US6873995B2 (en) | Method, system, and program product for transaction management in a distributed content management application | |
US6751635B1 (en) | File deletion and truncation using a zombie file space | |
US7631018B2 (en) | Flashback database | |
US8589363B2 (en) | Systems and methods for managing delta version chains | |
EP1654646B1 (en) | A method, apparatus and computer program for processing a queue of messages | |
US20070239725A1 (en) | Active cache offline access and management of project files | |
US20050187990A1 (en) | Reorganization and repair of an ICF catalog while open and in-use in a digital data storage system | |
US20090006500A1 (en) | Namespace replication program, namespace replication device, and namespace replication method | |
US8015155B2 (en) | Non-disruptive backup copy in a database online reorganization environment | |
CN1329840C (zh) | 文件归档 | |
JP2010522914A (ja) | 順次メディアのリクラメーション及びレプリケーション・システム、方法、及びコンピュータ・プログラム | |
US8762347B1 (en) | Method and apparatus for processing transactional file system operations to enable point in time consistent file data recreation | |
CN113254394B (zh) | 一种快照处理方法、系统、设备及存储介质 | |
Escriva et al. | The design and implementation of the warp transactional filesystem | |
US20100293143A1 (en) | Initialization of database for synchronization | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
US20090327355A1 (en) | System and method for coordinating a point-in-time copy among multiple data providers | |
CN117421290A (zh) | 一种基于事务的文件同步方法及同步系统 | |
CN115981921A (zh) | 一种备份方法 | |
US7739352B2 (en) | System and method for facilitating a consistent point-in time copy | |
WO2019231836A1 (en) | Hydration of a hierarchy of dehydrated files | |
CN115328696A (zh) | 一种数据库中的数据备份方法 | |
CN108874592B (zh) | 一种针对Log-structured存储引擎的数据冷备方法及系统 | |
Wirz et al. | A generic log-service supporting fast recovery in distributed fault-tolerant systems |
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 |