一种数据同步方法、系统、同步获取方法及相关装置与流程

文档序号:12377516阅读:249来源:国知局
一种数据同步方法、系统、同步获取方法及相关装置与流程

本发明涉及通信技术领域,特别涉及一种数据同步方法、系统、同步获取方法及相关装置。



背景技术:

在现有的云储存系统中,会部署主备服务器,当主用服务器故障时,切换到在备用服务器上储存用户通过客户端上传的数据。这就需要主用服务器和备用服务器上基于客户端上传的数据保持一致性,这样在主备服务器切换后,客户端之前上传的数据也不会丢失。

现有技术中,在主备服务器上进行数据同步时,当主用服务器接收到客户端的上传请求后,会将给上传请求同时传送给主用服务器和备用服务器上的公共网关接口(Common Gateway Interface,CGI)模块以对上传请求进行处理,当主用服务器和备用服务器的CGI模块分别对上传请求都处理完后,主用服务器才会响应该上传请求。如果在主备服务器之间跨地域、跨运营商的情况下,会对用户体验产生严重的负面影响;并且这种方案的可控性比较低,无法应对各种突发情况,例如流量陡升出现大量主备服务器之间的同步错误,以及主备服务器之间断网,断网期间的数据完全无法同步到备用服务器的情况。



技术实现要素:

本发明实施例提供一种数据同步方法、系统、同步获取方法及相关装置,实现了在对上传请求进行处理后,异步地将大小不大于预置的值的上传数据传送给备用服务器进行同步。

本发明实施例提供一种数据同步方法,应用于主用服务器,所述方法包括:

接收客户端发送的上传请求,所述上传请求中包括上传数据;

根据所述上传请求储存所述上传数据,响应所述客户端的上传请求;

如果所述储存的上传数据的大小不大于预置的值,向备用服务器发起对所述上传数据的同步请求,以便所述备用服务器储存所述上传数据;

如果所述上传数据的大小大于所述预置的值,记录第二类工作日志,所述第二类工作日志中包括向所述备用服务器同步失败的所述上传数据的信息。

本发明实施例还提供一种数据获取方法,应用于备用服务器,所述方法包括:

接收客户端发送的数据获取请求,所述数据获取请求中包括待获取数据的信息;

获取本地储存与所述待获取数据的信息对应的上传数据的第三验证码;其中,所述本地储存的上传数据是根据主用服务器发送的同步请求储存的;

获取所述主用服务器储存的与所述待获取数据的信息对应的上传数据的第四验证码;

如果所述第三验证码与第四验证码不一致,或所述第三验证码为空且所述第四验证码不为空,从所述主用服务器获取与所述待获取数据的信息对应的上传数据,并向所述客户端响应与所述待获取数据的信息对应的上传数据。

本发明实施例还提供一种数据同步装置,包括:

上传接收单元,用于接收客户端发送的上传请求,所述上传请求中包括上传数据;

请求处理单元,用于根据所述上传请求储存所述上传数据,响应所述客户端的上传请求;

同步单元,用于如果储存的所述上传数据的大小大于预置的值,向备用服务器发起对所述上传数据的同步请求,以便所述备用服务器储存所述上传数据;

第一记录单元,用于如果所述上传数据的大小大于预置的值,记录第二类工作日志,所述第二类工作日志中包括向所述备用服务器同步失败的所述上传数据的信息。

本发明实施例还提供一种数据同步获取装置,其特征在于,包括:

获取接收单元,用于接收客户端发送的数据获取请求,所述数据获取请求中包括待获取数据的信息;

验证单元,用于获取本地储存与所述待获取数据的信息对应的上传数据的第三验证码,其中,所述本地储存的上传数据是根据主用服务器发送的同步请求储存的;获取所述主用服务器储存的与所述待获取数据的信息对应的上传数据的第四验证码;如果所述第三验证码与第四验证码不一致,或所述第三验证码为空且所述第四验证码不为空,通知验证处理单元响应所述客户单;

验证处理单元,用于从所述主用服务器获取与所述待获取数据的信息对应的上传数据,并向所述客户端响应与所述待获取数据的信息对应的上传数据。

本发明实施例还提供一种数据同步系统,包括主用服务器和备用服务器,其中,所述主用服务器包括:

上传接收单元,用于接收客户端发送的上传请求,所述上传请求中包括上传数据;

请求处理单元,用于根据所述上传请求储存所述上传数据,响应所述客户端的上传请求;

同步单元,用于如果储存的所述上传数据的大小不大于预置的值,向备用服务器发起对所述上传数据的同步请求,以便所述备用服务器储存所述上传数据;

第一记录单元,用于如果所述上传数据的大小大于预置的值,记录第二类工作日志,所述第二类工作日志中包括向所述备用服务器同步失败的所述上传数据的信息;

所述备用服务器,用于接收到对所述上传数据的同步请求,储存所述上传数据。

可见,在本实施例的方法中,主用服务器接收到客户端发送的上传请求,对上传请求进行处理即储存上传数据后,会立即响应客户端的上传请求,且异步地将大小不大于预置的值的上传数据同步给备用服务器。由于主用服务器对于上传请求的处理步骤与对于上传数据的同步步骤之间是异步进行的,主用服务器并不需要等待主用服务器和备用服务器都储存了上传数据后,才会响应客户端,实现了对于上传数据的同步不会影响上传业务流程。且对于大小大于预置的值的上传数据,主用服务器暂时不会进行同步操作,只是记录第二类工作日志,第二类工作日志中包括向备用服务器同步失败的上传数据的信息,这样主用服务器后续可以根据第二类工作日志完成该上传数据的同步,可以避免比较大的上传数据的同步影响其它上传数据的同步。

且客户端可以主动向备用服务器获取已经同步在备用服务器上的上传数据,这样备用服务器就会先验证备用服务器储存的上传数据与主用服务器储存的上传数据是否一致,如果不一致,则从主用服务器获取了上传数据返回给客户端。这样备用服务器可以根据客户端的请求验证备用服务器和主用服务器上储存的上传数据是否一致,进而可以采取一定的手段保证备用服务器和主用服务器上储存的数据的一致性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数据同步系统的结构示意图;

图2是本发明方法实施例一提供的一种数据同步方法的流程图;

图3是本发明方法实施例一中主用服务器发起的对账流程的流程图;

图4是本发明方法实施例二提供的一种数据同步获取方法的流程图;

图5是本发明方法实施例三提供的一种数据同步系统的结构示意图;

图6是本发明方法实施例三提供的一种数据同步方法的流程图;

图7是本发明方法实施例三中主用服务器执行的数据一致性的方法流程图;

图8是本发明方法实施例三中备用服务器执行的数据一致性的方法流程图;

图9是本发明设备实施例一提供的一种数据同步装置的结构示意图;

图10是本发明设备实施例一提供的另一种数据同步装置的结构示意图;

图11是本发明设备实施例二提供的一种数据同步获取装置的结构示意图;

图12是本发明设备实施例二提供的另一种数据同步获取装置的结构示意图;

图13是本发明设备实施例三提供的一种服务器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排它的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本发明方法实施例一

提供一种数据同步方法,主要应用于如图1所示的数据同步系统,比如云储存系统等,在系统中包括客户端,主用服务器和备用服务器,其中,客户端主要可以向主用服务器上传数据,由主用服务器将客户端上传的数据进行储存,并由备用服务器对主用服务器上储存的数据进行同步。一般情况下,客户端与备用服务器之间不进行通信,而是与主用服务器之间进行通信,在本实施例中,客户端可以与备用服务器之间进行通信,以验证主备服务器对于特定的上传数据的储存的一致性。

本实施例的方法是系统中的主用服务器所执行的方法,流程图如图2所示,包括:

步骤101,接收客户端发送的上传请求,在上传请求中包括上传数据。

步骤102,根据上传请求储存上传数据,响应客户端的上传请求。

步骤103,如果步骤102储存的上传数据的大小不大于预置的值,向备用服务器发起对该上传数据的同步请求,以便备用服务器储存上传数据。

可以理解,上述步骤102中响应客户端的上传请求,与本步骤103的同步步骤之间并没有绝对的顺序关系,可以同时执行,也可以顺序执行,图2中所示的只是一个具体的实施例。

步骤104,如果上传数据的大小大于预置的值,记录第二类工作日志,第二类工作日志中包括向备用服务器同步失败的上传数据的信息,比如上传数据的标识信息,及标识该上传数据同步失败的信息,且还可以包括上传数据的大小等。

本实施例中,对于比较大的上传数据,主用服务器不会根据对上传请求的处理来同步该上传数据给备用服务器,而是先记录第二类工作日志。进一步地,如果向备用服务器同步上传数据失败时,主用服务器也可以记录该第二类工作日志,这里向备用服务器同步上传数据失败可以指主用服务器向备用服务器发起同步请求失败。

如果向备用服务器同步上传数据成功,比如主用服务器向备用服务器发起的同步请求成功,主用服务器还可以记录第一类工作日志,一条第一类工作日志中具体可以包括:成功同步的上传数据的信息,比如上传数据的标识信息,存储路径比如储存上传数据的桶(Bucket)的名称及数据大小,且还可以包括客户端标识及上传路径等信息。

需要说明的是,一个上传请求对应一条第一类工作日志或对应一条第二类工作日志。

可见,在本实施例的方法中,主用服务器接收到客户端发送的上传请求,对上传请求进行处理即储存上传数据后,会立即响应客户端的上传请求,且异步地将大小不大于预置的值的上传数据同步给备用服务器。由于主用服务器对于上传请求的处理步骤与对于上传数据的同步步骤之间是异步进行的,主用服务器并不需要等待主用服务器和备用服务器都储存了上传数据后,才会响应客户端,实现了对于上传数据的同步不会影响上传业务流程。且对于大小大于预置的值的上传数据,主用服务器暂时不会进行同步操作,只是记录第二类工作日志,第二类工作日志中包括向备用服务器同步失败的上传数据的信息,这样主用服务器后续可以根据第二类工作日志完成该上传数据的同步,可以避免比较大的上传数据的同步影响其它上传数据的同步。

在一个具体的实施例中,如果在主用服务器上储存了上述第一类工作日志,主用服务器还可以定时地发起对账流程,具体可以如图3所示,包括:

步骤201,读取本地储存的多条第一类工作日志,分别针对每一条第一类工作日志,执行如下步骤202到205。

步骤202,获取主用服务器储存的与第一类工作日志对应的第一上传数据的第一验证码,具体地,主用服务器可以根据第一类型工作日志中的信息比如上传数据的标识信息,存储路径等读取到对应的第一上传数据,然后可以通过对第一上传数据进行哈希计算得到第一验证码。

步骤203,获取备用服务器储存的与该第一类型工作日志对应的第二上传数据的第二验证码,具体地,主用服务器可以向备用服务器发起请求,在请求中可以包括第一类型工作日志中的信息比如上传数据的标识信息等,备用服务器根据该请求获取到对应的第二上传数据,然后可以对第二上传数据进行哈希计算得到第二验证码,并返回给主用服务器。

步骤204,判断第一验证码与第二验证码是否一致,如果一致,则针对另一条第一类工作日志,返回执行步骤202;如果不一致,说明主用服务器与备用服务器上储存的上传数据不一致,需要重新进行同步,则执行步骤205。

步骤205,将第一上传数据发送给备用服务器,以便备用服务器储存第一上传数据。

需要说明的是,上述步骤202和203之间没有绝对的顺序关系,可以同时执行,也可以顺序执行,图3所示的只是一种具体的实施例。

通过上述步骤201到205,可以针对主用服务器和备用服务器上储存的不一致的同步数据,重新执行主用服务器到备用服务器的同步,保证了数据的一致性。

在另一个具体的实施例中,主用服务器可以不断地发起同步的重做流程,具体地:主用服务器会不断地逐条地读取本地储存的第二类工作日志,并针对读取的一条第二类工作日志,获取主用服务器储存的与该第二类工作日志对应的第三上传数据,将第三上传数据发送给备用服务器,以便备用服务器储存第三上传数据。

在其它具体的实施例中,主用服务器可以将各个上传请求对应的上传数据储存到该主用服务器之外部署的另一个存储服务器上,而主用服务器还是将第一类工作日志和第二类工作日志储存到该主用服务器上,且会将储存的第一类工作日志和第二类工作日志发送给日志备份机器,以便日志备份机器进行储存,且在主用服务器故障时,由日志备份机器发起如上的对账流程,即根据第一类工作日志确定主用服务器和备用服务器储存的上传数据不一致时,将主用服务器根据客户端的上传请求在另一存储服务器上储存的不一致的上传数据发送给备用服务器进行储存;或根据第二类工作日志将同步失败的上传数据发送给备用服务器进行储存。

本发明方法实施例二

提供一种数据同步获取方法,主要可以应用于如图1所示的数据同步系统,本实施例的方法是系统中的备用服务器所执行的对于已经同步的上传数据的获取方法,流程图如图4所示,包括:

步骤301,接收客户端发送的数据获取请求,在数据获取请求中包括待获取数据的信息。

可以理解,主用服务器根据客户端发送的上传请求储存上传数据后,发送对该上传数据的同步请求给备用服务器后,备用服务器根据同步请求储存对应的上传数据。而用户可以通过客户端直接向备用服务器发起对已经上传的特定上传数据的获取,以验证备用服务器与主用服务器上储存的该特定上传数据的一致性,则备用服务器会发起本实施例的流程。

步骤302,获取本地储存与待获取数据的信息对应的上传数据的第三验证码,其中,本地储存的上传数据是根据主用服务器发送的同步请求储存的。具体地,备用服务器可以根据待获取数据的信息比如待获取数据的标识信息等读取到对应的上传数据,然后可以通过对读取的上传数据进行哈希计算得到第三验证码。

步骤303,获取主用服务器储存的与待获取数据的信息对应的上传数据的第四验证码。具体地,备用服务器可以向主用服务器发起请求,在请求中可以包括待获取数据的标识信息等,主用服务器根据该请求获取到对应的上传数据,然后可以对上传数据进行哈希计算得到第四验证码,并返回给备用服务器。

步骤304,判断第三验证码与第四验证码是否一致,如果不一致,或第三验证码为空且第四验证码不为空,说明主用服务器和备用服务器上储存的数据不一致,则执行步骤305;如果第四验证码为空且第三验证码不为空,说明在主用服务器上已经删除了对应的上传数据,则执行步骤306;如果一致,则执行步骤307。

步骤305,从主用服务器获取与待获取数据的信息对应的上传数据,并向客户端响应与待获取数据的信息对应的上传数据。

在这种情况下,备用服务器可以记录针对该上传数据的第二类工作日志,在第二类工作日志中包括与该待获取数据的信息对应的上传数据同步失败的信息。比如上传数据的标识信息,及标识该上传数据同步失败的信息,且还可以包括上传数据的大小等。

这样,备用服务器还可以不断地发起重做流程,即读取备用服务器储存的第二类工作日志,从主用服务器获取与第二类工作日志对应的上传数据进行储存,即时地保证主用服务器和备用服务器上储存的数据的一致性。

步骤306,删除本地储存的与待获取数据的信息对应的上传数据,并向客户端响应与待获取数据的信息对应的上传数据不存在的信息。

步骤307,向客户端响应本地储存的与待获取数据的信息对应的上传数据。

需要说明的是,上述步骤302和303之间没有绝对的顺序关系,可以同时执行,也可以顺序执行,图4所示的只是一种具体的实施例。

可见,本实施例中,客户端可以主动向备用服务器获取已经同步在备用服务器上的上传数据,这样备用服务器就会先验证备用服务器储存的上传数据与主用服务器储存的上传数据是否一致,如果不一致,则从主用服务器获取了上传数据返回给客户端。这样备用服务器可以根据客户端的请求验证备用服务器和主用服务器上储存的上传数据是否一致,进而可以采取一定的手段保证备用服务器和主用服务器上储存的数据的一致性。

本发明方法实施例三

以一个具体的实施例来说明本实施例的数据同步方法,主要应用于如图5所示的数据同步系统,且本实施例的上传数据为上传文件,在本实施例的系统中:

主用服务器包括:CGI模块,同步(Syncer)模块,存储模块,对账模块和重做(Redoer)模块,备用服务器包括CGI模块,存储模块和重做模块。且在本实施例的数据在具体的同步过程中,流程图如图6所示,包括:

步骤401,客户端发送上传请求,在上传请求中包括上传文件。

步骤402,主用服务器的CGI模块接收到上传请求,对上传请求进行处理,即解析得到上传请求中的上传文件,如果上传文件的大小不大于预置的值,则将该上传文件储存到存储模块中。然后CGI模块将上传文件发送给主用服务器的同步模块。

步骤403,同步模块在接收到上传文件后,立即响应主用服务器的CGI模块,这样CGI模块会记录第一类工作日志并储存到存储模块中,在本实施例中为全量流水Binlog,具体可以包括文件的元(meta)信息,即文件名、上传路径、Bucket名称,客户端标识和文件大小等内容;如果同步模块向CGI模块返回了失败信息,或CGI模块与同步模块之间的通信出现错误时,CGI模块会记录第二类工作日志并储存到存储模块中,在本实施例中为错误Binlog,错误Binlog与全量流水Binlog的格式一样,不同的是,在错误Binlog中还包括标识上传文件同步失败的信息等。

其中,对于如果上传文件的大小比较大,比如大于预置的值,这种上传文件不经过同步模块,CGI模块会直接记录错误Binlog。

需要说明的是,针对一个上传请求会储存一条全量流水Binlog或错误Binlog。

步骤404,当主用服务器的CGI模块接收到同步模块的反馈后,会响应客户端的上传请求。

需要说明的是,同步模块给CGI模块的响应用来表示同步模块是否成功接收到上传文件,如果成功接收则同步模块就会发送成功响应给CGI模块,如果未成功接收上传数据则同步模块会发送失败响应给CGI模块。而CGI模块对客户端的上传请求的响应是用来表示主用服务器是否能成功对上传请求进行处理,并储存上传文件,CGI模块只要接收到同步模块的响应,就会响应客户端。

步骤405,主用服务器的同步模块还会向备用服务器的CGI模块发起同步请求,在同步请求中包括同步模块获取的上传文件。

备用服务器的CGI模块在接收到同步请求后,会将其中包括的上传文件储存到存储模块中(图6中未示出这个步骤)。

同步模块是多线程、全异步执行的模块,可以立即响应CGI模块,且异步地向备用服务器的CGI模块发起同步请求,从而尽快地将上传文件从主用服务器同步到备用服务器,并且不影响主业务流程即主用服务器与客户端之间的上传流程。

步骤406,如果同步模块向备用服务器的CGI模块发起的同步请求失败,则同步模块可以记录错误Binlog,并储存到存储模块中。

在本实施例中,为了保障主用服务器和备用服务器上储存数据的一致性,主用服务器可以按照如下步骤来进行,流程图如图7所示,包括:

步骤501,主用服务器的对账模块可以定时地发起对账流程,从存储模块中读取一段时间内储存的全量流水Binlog。

在具体实现时,对账模块可以在整点,拉起对存储模块四个小时之前储存的全量流水Binlog进行处理。

步骤502,对账模块针对每条全量流水Binlog,获取存储模块中储存的上传文件的验证码,本实施例中为消息摘要算法第五版(Message Digest Algorithm 5,MD5)-1;同时对账模块还会向备用服务器的CGI模块请求获取备用服务器的存储模块中储存的对应的上传文件的MD5-2值。

具体地,对账模块可以同时向主用服务器的CGI模块及备用服务器的CGI模块发送头部(HEAD)请求,以分别获取MD5-1和MD5-2值。

步骤503,如果MD5-1与MD5-2一致,说明主备服务器中储存的上传文件一致,则按照上述步骤502的步骤处理另一条全量流水Binlog;如果不一致,则对账模块可以通知重做模块重新同步。

在另一种情况下,对账模块中也具有重做模块的部分功能,即当MD5-1与MD5-2不一致时,将对应的上传文件发送给备用服务器的CGI模块的功能。

步骤504,重做模块会将主用服务器的存储模块中储存的对应的上传文件发送给备用服务器的CGI模块,由备用服务器的CGI模块储存到存储模块中。

步骤505,主用服务器的重做模块会不断地读取存储模块中储存的错误Binlog,并执行重做流程,即将对应的上传文件发送给备用服务器的CGI模块。如果重做模块读取不到错误Binlog,会等待30s后继续尝试读取错误Binlog,并进行重做流程。

如果重做模块对某一条错误Binlog执行的重做流程失败,可以针对该条错误Binlog进行最多三次的重做流程的重试,如果全部失败,就放弃发送上传文件。一般主备服务器之间网络出故障时会出现这种全部失败的情况,对于这种情况,可以采用另外一种途径,即在网络恢复后,可以由主用服务器的对账模块读取指定时间的错误Binlog,并由对账模块将对应的上传文件发送给备用服务器的CGI模块。

为了避免短时间内主用服务器大量获取上传文件的验证码(即上述发起的大量HEAD请求)对客户端的上传业务产生影响,对账模块可以把指定的一小时的任务尽量均匀地设置在当前这一小时执行。

在另一个具体的实施例中,针对主用服务器故障导致对账无法进行的问题,主用服务器的CGI模块在处理上传请求时,可以将上传文件储存到在该主用服务器之外部署的另一存储服务器(该存储服务器专用储存上传文件)中,而全量流水Binlog和错误Binlog还是储存在主用服务器的存储模块中。主用服务器的同步模块可以将存储模块中储存的全量流水Binlog和错误Binlog备份到另外部署的日志备份机器上。且日志备份机器也具有发起对账流程的功能,具体可以在备份了各条Binlog后,发起对备份操作之前的一个小时内储存的全量流水Binlog的处理,具体如何处理可以见上述步骤502到504中主用服务器的对账模块对全量流水Binlog的处理方法类似,不同的是,日志备份机器会从另外部署的存储服务器获取上传文件的MD5值。

在本实施例中,为了保障主用服务器和备用服务器上储存数据的一致性,备用服务器可以按照如下步骤来进行,流程图如图8所示,包括:

步骤601,客户端发送某个上传文件的获取(GET)请求给备用服务器,其中包括某个上传文件的信息。

步骤602,备用服务器的CGI模块根据该获取请求获取存储模块中储存的对应的上传文件的MD5值,并向主用服务器的CGI模块请求获取该获取请求对应的上传文件的MD5值。

具体地,备用服务器的CGI模块可以通过后端接口获取备用服务器的存储模块储存的对应的上传文件的MD5值,并向主用服务器的CGI模块发送HEAD请求,该HEAD请求用于获取主用服务器的存储模块上储存的对应的上传文件的MD5值。

步骤603,备用服务器的CGI模块会将获取的两个MD5值进行比较,如果两个MD5值一致,则向客户端返回备用服务器的存储模块中储存的对应的上传文件。

步骤604,如果两个MD5值不一致,或者从本地获取的MD5值为空,且从主用服务器的CGI模块获取的MD5值不为空,则备用服务器的CGI模块会从主用服务器的CGI模块获取对应的上传文件,并返回给客户端。且CGI模块可以记录该上传文件对应的错误Binlog储存到存储模块中。

步骤605,如果从本地获取的MD5值不为空,且从主用服务器的CGI模块获取的MD5值为空,则可以直接向客户端返回对应的上传文件不存在的信息。且备用服务器的CGI模块会删除存储模块中储存的该上传文件。

另外,如果备用服务器的CGI模块从本地获取上传文件的MD5值未成功,可以将从主用服务器获取的上传文件发送给客户端;如果备用服务器的CGI模块从备用服务器获取上传文件的MD5值未成功,可以直接将本地储存的上传文件发送给客户端。

步骤606,备用服务器的重做模块会不断地从存储模块中读取错误Binlog,执行重做流程,即向主用服务器的CGI模块获取错误Binlog对应的上传文件并储存到存储模块中。如果重做模块读取不到错误Binlog,会等待30s后继续尝试读取错误Binlog,并进行重做流程。

如果重做模块对某一条错误Binlog执行的重做流程失败,可以针对该条错误Binlog进行最多三次的重做流程的重试。

本发明设备实施例一

还提供一种数据同步装置,比如上述的主用服务器,其结构示意图如图9所示,具体可以包括:

上传接收单元10,用于接收客户端发送的上传请求,所述上传请求中包括上传数据;

请求处理单元11,用于根据所述上传接收单元10接收的上传请求储存所述上传数据,响应所述客户端的上传请求;

同步单元12,用于如果请求处理单元11储存的所述上传数据的大小不大于预置的值,向备用服务器发起对所述上传数据的同步请求,以便所述备用服务器储存所述上传数据。

第一记录单元13,用于如果请求处理单元11储存的所述上传数据大于预置的值,记录第二类工作日志,所述第二类工作日志中包括向所述备用服务器同步失败的所述上传数据的信息。

可见,在本实施例的数据同步装置中,上传接收单元10接收到客户端发送的上传请求,请求处理单元11对上传请求进行处理即储存上传数据后,会立即响应客户端的上传请求,同步单元12会异步地将大小不大于预置的值上传数据同步给备用服务器。由于数据同步装置对于上传请求的处理步骤与对于上传数据的同步步骤之间是异步进行的,数据同步装置并不需要等待数据同步装置和备用服务器都储存了上传数据后,才会响应客户端,实现了对于上传数据的同步不会影响上传业务流程。且对于大小大于预置的值的上传数据,数据同步装置暂时不会进行同步操作,只是第一记录单元13记录第二类工作日志,第二类工作日志中包括向备用服务器同步失败的上传数据的信息,这样数据同步装置后续可以根据第二类工作日志完成该上传数据的同步,可以避免比较大的上传数据的同步影响其它上传数据的同步。

参考图10所示,在一个具体的实施例中,数据同步装置除了可以包括如图9所示的结构外,还可以包括第一记录单元13,对账单元14,第一重做单元15和日志备份单元16,其中:

第一记录单元13,用于还用于如果向所述备用服务器同步所述上传数据成功,比如同步单元12向备用服务器发起的同步请求成功,记录第一类工作日志,所述第一类工作日志中包括所述上传数据的信息。该第一记录单元13,还用于如果向所述备用服务器同步所述上传数据失败,比如同步单元12向备用服务器发起的同步请求失败,记录第二类工作日志,所述第二类工作日志中包括向所述备用服务器同步失败的所述上传数据的信息。

对账单元14,用于定时地发起对账流程,即读取多条所述第一记录单元13记录的第一类工作日志;针对每条所述第一类工作日志,获取所述数据同步装置储存的与所述第一类工作日志对应的第一上传数据的第一验证码;获取所述备用服务器储存的与所述第一类工作日志对应的第二上传数据的第二验证码;如果所述第一验证码与第二验证码不一致,通知第一重做单元15发送所述第一上传数据;

第一重做单元15,用于将所述第一上传数据发送给所述备用服务器,以便所述备用服务器储存所述第一上传数据。

所述第一重做单元15,还用于不断地发起重做流程,即读取所述第一记录单元13记录的第二类工作日志;获取所述数据同步装置储存的与所述第二类工作日志对应的第三上传数据,将所述第三上传数据发送给所述备用服务器,以便所述备用服务器储存所述第三上传数据。

日志备份单元16,用于将所述第一记录单元13记录的第一类工作日志和第二类工作日志发送给日志备份机器,以便所述日志备份机器根据所述第一类工作日志确定主用服务器和备用服务器储存的上传数据不一致时,将所述数据同步装置储存的所述不一致的上传数据发送给所述备用服务器进行储存;或根据所述第二类工作日志将同步失败的上传数据发送给所述备用服务器进行储存。

本发明设备实施例二

还提供一种数据同步获取装置,比如上述的备用服务器,其结构示意图如图11所示,具体可以包括:

获取接收单元20,用于接收所述客户端发送的数据获取请求,所述数据获取请求中包括待获取数据的信息;

验证单元21,用于获取本地储存与所述获取接收单元20接收的数据获取请求包括的待获取数据的信息对应的上传数据的第三验证码,其中,所述本地储存的上传数据是根据主用服务器发送的同步请求储存的;获取所述主用服务器储存的与所述待获取数据的信息对应的上传数据的第四验证码;如果所述第三验证码与第四验证码不一致,或所述第三验证码为空且所述第四验证码不为空,通知验证处理单元22响应所述客户单;

验证处理单元22,用于从所述主用服务器获取与所述待获取数据的信息对应的上传数据,并向所述客户端响应与所述待获取数据的信息对应的上传数据。

所述验证处理单元22,还用于如果所述验证单21确定第四验证码为空,且所述第三验证码不为空,删除本地储存的与所述待获取数据的信息对应的上传数据,并向所述客户端响应与所述待获取数据的信息对应的上传数据不存在的信息。

可见,本实施例中,客户端可以主动向本实施例的数据同步获取装置获取已经同步在本地的上传数据,这样数据同步获取装置的验证单元21就会先验证备用服务器储存的上传数据与主用服务器储存的上传数据是否一致,如果不一致,则从主用服务器获取了上传数据返回给客户端。这样数据同步获取装置可以根据客户端的请求验证与主用服务器上储存的上传数据是否一致,进而可以采取一定的手段保证数据同步获取装置和主用服务器上储存的数据的一致性。

参考图12所示,在一个具体的实施例中,数据同步装置除了可以包括如图11所示的结构外,还可以包括第二记录单元23和第二重做单元24,其中:

第二记录单元23,用于如果所述验证单元21验证第三验证码与第四验证码不一致,或所述第三验证码为空且所述第四验证码不为空,记录第二类工作日志,所述第二类工作日志中包括与所述待获取数据的信息对应的上传数据同步失败的信息。

第二重做单元24,用于读取所述第二记录单元23记录第二类工作日志,从所述主用服务器获取与所述第二类工作日志对应的上传数据进行储存。从而保证数据同步获取装置和主用服务器上储存的数据的一致性。

本发明设备实施例三

还提供一种服务器,其结构示意图如图13所示,该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)30(例如,一个或一个以上处理器)和存储器31,一个或一个以上存储应用程序321或数据322的存储介质32(例如一个或一个以上海量存储设备)。其中,存储器31和存储介质32可以是短暂存储或持久存储。存储在存储介质32的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对语音数据的评价系统中的一系列指令操作。更进一步地,中央处理器30可以设置为与存储介质32通信,在语音数据的评价系统上执行存储介质32中的一系列指令操作。

服务器还可以包括一个或一个以上电源33,一个或一个以上有线或无线网络接口34,一个或一个以上输入输出接口35,和/或,一个或一个以上操作系统323,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

上述方法实施例中所述的由主用服务器或备用服务器所执行的步骤可以基于该图13所示的服务器的结构。

本发明实施例还提供一种数据同步系统,包括主用服务器和备用服务器,其中主用服务器的结构可以如上述设备实施例一所述的数据同步装置,或如上述设备实施例三所述的服务器的结构;所述备用服务器,用于接收到对所述上传数据的同步请求,储存所述上传数据。

进一步地,备用服务器的结构可以如上述设备实施例二所述的数据同步获取装置,或如上述设备实施例三所述的服务器的结构,在此不进行赘述。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器RAM)、磁盘或光盘等。

以上对本发明实施例所提供的数据同步方法、系统、同步获取方法及相关装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1