数据同步方法及装置与流程

文档序号:22627666发布日期:2020-10-23 19:36阅读:119来源:国知局
数据同步方法及装置与流程

本公开涉及互联网技术领域,特别是涉及一种数据同步方法及装置。



背景技术:

随着互联网及大数据技术的迅速发展,各种业务需求日益更新,业务数据的更新频率也越来越快。数据同步是保证业务安全正常运行的重要手段之一。

在实现本公开发明构思的过程中,发明人发现相关技术中的数据同步,主要依赖数据库源定期向应用端推送更新后的数据,或者应用端定期向数据库源请求更新后的数据的方式完成,该种数据同步方式存在实时性差、同步效果不佳的问题。



技术实现要素:

本公开的一个方面提供了一种数据同步方法,应用于存储服务端,该方法包括在业务服务端生成的第一消息队列中,获取第一数据变更消息;获取与上述第一数据变更消息关联的待同步数据;利用上述待同步数据,对本地数据进行更新操作;生成针对上述更新操作的第二数据变更消息;将上述第二数据变更消息发布至第二消息队列中,以供与上述存储服务端关联的应用服务端,根据上述第二数据变更消息进行数据更新。

可选地,上述在业务服务端生成的第一消息队列中,获取第一数据变更消息,包括在上述第一消息队列中,获取具有最新时间戳的第一数据变更消息;上述获取与上述第一数据变更消息关联的待同步数据,包括在上述第一消息队列中,获取与上述具有最新时间戳的第一数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述在业务服务端生成的第一消息队列中,获取第一数据变更消息,包括在上述第一消息队列中,获取至少一个未处理的第一数据变更消息;上述获取与上述第一数据变更消息关联的待同步数据,包括在上述第一消息队列中,获取与各上述未处理的第一数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述利用上述待同步数据,对本地数据进行更新操作,包括根据各上述未处理的第一数据变更消息的时间戳顺序,依次利用与各上述第一数据变更消息关联的数据,对本地最新数据进行更新操作。

可选地,上述生成针对上述更新操作的第二数据变更消息,包括根据成功更新数据的第一数据标识,生成上述第二数据变更消息。

本公开的另一方面提供了一种数据同步方法,应用于业务服务端,该方法包括根据待更新数据的第二数据标识,生成第一数据变更消息;确定与上述第二数据标识关联的更新后数据,以作为待同步数据;将上述第一数据变更消息和上述待同步数据发布至第一消息队列中,以供与上述业务服务端关联的存储服务端,根据上述第一数据变更消息进行数据更新。

可选地,还包括在发布上述第一数据变更消息后的预设时长内,确定是否接收到针对上述存储服务端的响应消息,其中,上述响应消息指示上述存储服务端成功获取上述待同步数据;以及在未接收到针对上述存储服务端的响应消息的情况下,向上述存储服务端发送上述第一数据变更消息。

可选地,还包括在发布上述第一数据变更消息之前,存储上述待同步数据;以及在接收到针对上述存储服务端的响应消息后,对存储的上述待同步数据进行释放。

本公开的另一方面提供了一种数据同步方法,应用于应用服务端,该方法包括在存储服务端生成的第二消息队列中,获取第二数据变更消息;获取与上述第二数据变更消息关联的待同步数据;利用上述待同步数据,对本地数据进行更新操作。

可选地,上述在存储服务端生成的第二消息队列中,获取第二数据变更消息,包括在上述第二消息队列中,获取具有最新时间戳的第二数据变更消息;上述获取与上述第二数据变更消息关联的待同步数据,包括在上述存储服务端中,获取与上述具有最新时间戳的第二数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述在存储服务端生成的第二消息队列中,获取第二数据变更消息,包括在上述第二消息队列中,获取至少一个未处理的第二数据变更消息;上述获取与上述第二数据变更消息关联的待同步数据,包括在上述存储服务端中,获取与各上述未处理的第二数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述利用上述待同步数据,对本地数据进行更新操作,包括根据各上述未处理的第二数据变更消息的时间戳顺序,依次利用与各上述第二数据变更消息关联的数据,对本地最新数据进行更新操作。

本公开的另一方面提供了一种存储服务端中的数据同步装置,包括第一获取模块,用于在业务服务端生成的第一消息队列中,获取第一数据变更消息;第二获取模块,用于获取与上述第一数据变更消息关联的待同步数据;第一更新模块,用于利用上述待同步数据,对本地数据进行更新操作;第一处理模块,用于生成针对上述更新操作的第二数据变更消息;第二处理模块,用于将上述第二数据变更消息发布至第二消息队列中,以供与上述存储服务端关联的应用服务端根据上述第二数据变更消息进行数据更新。

可选地,第一获取模块包括第一获取子模块,用于在上述第一消息队列中,获取具有最新时间戳的第一数据变更消息;第二获取模块包括第二获取子模块,用于在上述第一消息队列中,获取与上述具有最新时间戳的第一数据变更消息关联的数据,以得到上述待同步数据。

可选地,第一获取模块包括第三获取子模块,用于在上述第一消息队列中,获取至少一个未处理的第一数据变更消息;第二获取模块包括第四获取子模块,用于在上述第一消息队列中,获取与各上述未处理的第一数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述第一更新模块包括第一更新子模块,用于根据各上述未处理的第一数据变更消息的时间戳顺序,依次利用与各上述第一数据变更消息关联的数据,对本地最新数据进行更新操作。

可选地,上述第一处理模块包括第一处理子模块,用于根据成功更新数据的第一数据标识,生成上述第二数据变更消息。

本公开的另一方面提供了一种业务服务端中的数据同步装置,包括第三处理模块,用于根据待更新数据的第二数据标识,生成第一数据变更消息;第四处理模块,用于确定与上述第二数据标识关联的更新后数据,以作为待同步数据;第五处理模块,用于将上述第一数据变更消息和上述待同步数据发布至第一消息队列中,以供与上述业务服务端关联的存储服务端根据上述第一数据变更消息进行数据更新。

可选地,上述装置还包括第六处理模块,用于在发布上述第一数据变更消息后的预设时长内,确定是否接收到针对上述存储服务端的响应消息,其中,上述响应消息指示上述存储服务端成功获取上述待同步数据;以及第七处理模块,用于在未接收到针对上述存储服务端的响应消息的情况下,向上述存储服务端发送上述第一数据变更消息。

可选地,上述装置还包括还包括第八处理模块,用于在发布上述第一数据变更消息之前,存储上述待同步数据;以及第九处理模块,用于在接收到针对上述存储服务端的响应消息后,对存储的上述待同步数据进行释放。

本公开的另一方面提供了一种应用服务端中的数据同步装置,包括第三获取模块,用于在存储服务端生成的第二消息队列中,获取第二数据变更消息;第四获取模块,用于获取与上述第二数据变更消息关联的待同步数据;第二更新模块,用于利用上述待同步数据,对本地数据进行更新操作。

可选地,上述第三获取模块包括第五获取子模块,用于在上述第二消息队列中,获取具有最新时间戳的第二数据变更消息;上述第四获取模块包括第六获取子模块,用于在上述存储服务端中,获取与上述具有最新时间戳的第二数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述第三获取模块包括第七获取子模块,用于在上述第二消息队列中,获取至少一个未处理的第二数据变更消息;上述第四获取模块包括第八获取子模块,用于在上述存储服务端中,获取与各上述未处理的第二数据变更消息关联的数据,以得到上述待同步数据。

可选地,上述第二更新模块,包括第二更新子模块,用于根据各上述未处理的第二数据变更消息的时间戳顺序,依次利用与各上述第二数据变更消息关联的数据,对本地最新数据进行更新操作。

本公开的另一方面提供了一种网络系统,包括上述业务服务端、至少一个上述存储服务端和至少一个上述应用客户端。

本公开的另一方面提供了一种电子设备,包括一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现本公开实施例的方法。

本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现本公开实施例的方法。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中,

图1示意性示出了根据本公开实施例的数据同步方法和装置的系统架构;

图2示意性示出了根据本公开实施例的数据同步的网络系统的示意图;

图3示意性示出了根据本公开实施例的一种数据同步方法的流程图;

图4示意性示出了根据本公开实施例的另一数据同步方法的流程图;

图5示意性示出了根据本公开实施例的再一数据同步方法的流程图;

图6示意性示出了根据本公开实施例的存储服务端中的数据同步装置的框图;

图7示意性示出了根据本公开实施例的业务服务端中的数据同步装置的框图;

图8示意性示出了根据本公开实施例的应用服务端中的数据同步装置的框图;

图9示意性示出了根据本公开实施例的电子设备的框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性地,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了特征、操作、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、操作、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。

本公开的实施例提供了一种数据同步方法以及能够运用该方法的数据同步装置。当数据同步方法应用于存储服务端时,该方法例如可以包括如下操作。在业务服务端生成的第一消息队列中,获取第一数据变更消息,和获取与第一数据变更消息关联的待同步数据,然后利用待同步数据,对本地数据进行更新操作,并生成针对更新操作的第二数据变更消息,最后将第二数据变更消息发布至第二消息队列中,以供与存储服务端关联的应用服务端,根据第二数据变更消息进行数据更新。

图1示意性示出了根据本公开实施例的数据同步方法和装置的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

如图1所示,该系统架构包括业务服务端101、至少一个存储服务端(图中示出了多个,如存储服务端102、103、104)和至少一个应用服务端(图中示出了多个,如应用服务端105、106、107),应用服务端105、106、107为与存储服务端102关联的应用服务端。在该系统架构100中,存储服务端(如存储服务端102)在业务服务端101生成的第一消息队列中,获取第一数据变更消息,和获取与第一数据变更消息关联的待同步数据,然后利用待同步数据,对本地数据进行更新操作,并生成针对更新操作的第二数据变更消息,最后将第二数据变更消息发布至第二消息队列中,以供与存储服务端(如存储服务端102)关联的应用服务端(如应用服务端105、106、107),根据第二数据变更消息进行数据更新。

需要说明的是,本公开实施例的数据同步方法和装置可用于金融领域,也可用于除金融领域之外的任意领域。以下将结合附图和具体实施例详细阐述本公开。

图2示意性示出了根据本公开实施例的数据同步的网络系统的示意图。

如图2所示,该网络系统可以包括业务服务端101、至少一个存储服务端(图中示出了多个,如存储服务端102、103、104)和至少一个应用服务端(图中示出了多个,如应用服务端105、106、107),应用服务端105、106、107为与存储服务端102关联的应用服务端。存储服务端103、104也具有关联的应用服务端,图2未示出。

业务服务端可以是产品发布系统、产品管理系统等,业务服务端用于更新产品数据和发布更新后的产品数据。产品数据具体可以是业务系统中产品的参数数据,产品是面向客户的可独立管理的服务划分,其可以包括实体产品和虚拟产品,虚拟产品例如可以包括基金、证券、保险等理财产品,产品数据可以包括产品名称、产品代码、产品发布日期、产品销售日期、产品价格等参数数据。业务服务端在对产品数据进行更新后,存储服务端和应用服务端及时进行数据同步是保证业务安全正常运行的关键因素之一。

业务服务端根据已更新数据的数据标识,生成第一数据变更消息,并将更新后的数据作为待同步数据,连同第一数据变更消息发布至第一消息队列(如图示出的201)中。业务服务端为第一消息队列的生产者,存储服务端为第一消息队列的消费者,存储服务端能够从第一消息队列中获取第一数据变更消息和待同步数据,进行本地数据的更新操作,第一消息队列有利于实现业务服务端与存储服务端的业务解耦。

存储服务端具体可以是数据库服务器、数据库配套程序等,数据库配套程序具体可以是数据库线程。网络系统中可以设置多个存储服务端,多个存储服务端中存储相同的产品数据,该种设计有利于实现业务系统的扩容,和减小单个数据库服务端的数据请求压力。每个存储服务端对应多个应用服务端,存储服务端中数据更新的实时性,直接影响应用服务端中数据更新的实时性,进而影响用户从应用服务端中获取到的产品数据的实时性和准确性。

存储服务端从第一消息队列中获取第一数据变更消息,并获取与第一数据变更消息关联的待同步数据,然后利用待同步数据,对本地存储的数据进行更新操作。为实现应用服务端的数据同步,存储服务端生成针对数据更新操作的第二数据变更消息,并把第二数据变更消息发布至第二消息队列(如图示出的202,每个存储服务端对应一个第二消息队列,图2未示出)中。存储服务端为第二消息队列的生产者,应用服务端为第二消息队列的消费者,应用服务端能够从第二消息队列中获取第二数据变更消息,并根据第二数据变更消息从存储服务端中获取待同步数据,进行本地数据的更新,第二消息队列有利于实现存储服务端与应用服务端的业务解耦。

应用服务端具体可以是应用服务器、应用处理器等,在用户通过终端请求产品数据时,终端向应用服务端发起数据获取请求,用于请求获取产品数据。为提高业务处理效率,和减小对存储服务端和业务服务端的数据请求压力,应用服务端中缓存有产品数据。因此,应用服务端中数据同步的实时性,影响用户获取到的产品数据的准确性和有效性。应用服务端根据第二消息队列进行本地数据的更新操作,有利于实现对本地数据进行及时更新,有利于保证业务的安全正常运行。

相比于相关技术中,业务服务端在进行产品数据更新后,通过批量文件方式定期向存储服务端发送更新后的数据,或者业务服务端定期向某个存储服务端发送更新后的数据,再由该存储服务端向其他存储服务端同步更新后的数据,再或者由某个存储服务端定期向业务服务端请求更新后的数据,然后由该存储服务端向其他存储服务端同步更新后的数据,本公开实施例在业务服务端与至少一个存储服务端之间设置第一消息队列,在各存储服务端与关联的至少一个应用服务端之间设置第二消息队列。

一方面,存储服务端与业务服务端之间可以无需直接进行数据变更消息和待同步数据的交换,有利于实现存储服务端与业务服务端之间的解耦(同理,有利于实现存储服务端与应用服务端之间的解耦),有利于减小网络系统变更(例如,增删某个存储服务端)、网络系统异常(例如,某个存储服务端发生异常)、网络异常(例如,网络延迟造成请求延时)等对数据同步造成的影响,有利于保证数据同步的实时性;另一方面,该种数据同步方式有利于减小数据同步对业务系统造成的压力,在流量过大的业务场景中,例如在秒杀或团抢活动中,该种设计有利于实现流量削锋,有利于提高业务处理效率和提高业务吞吐量。

本公开实施例中的消息队列例如可以采用activemq、rabbitmq、zeromq、metamq、rocketmq、kafka等。

图3示意性示出了根据本公开实施例的一种数据同步方法的流程图,该方法应用于存储服务端。

如图3所示,该方法可以包括操作s310~s350。

在操作s310,在业务服务端生成的第一消息队列中,获取第一数据变更消息。

在本公开实施例中,具体地,存储服务端作为第一消息队列的消费者,在第一消息队列中获取第一数据变更消息,第一数据变更消息指示待更新数据的第二数据标识。可选地,存储服务端可以通过消息监听器,监听第一消息队列中的新发布消息。此外,存储服务端还可以通过receive():message方法同步接收第一消息队列中的新发布消息。

第一消息队列中的第一数据消息具有时间戳,时间戳表征第一数据变更消息的发布时间。作为一种可选的实施例,存储服务端获取第一消息队列中具有最新时间戳的第一数据变更消息。即,存储服务端根据最新的第一数据变更消息,进行本地数据的更新操作。

第一消息队列中包含与各第一数据变更消息关联的状态信息,状态信息描述第一数据变更消息的消费者信息,即描述了已对各第一数据变更消息做出处理的存储服务端的信息。通过与第一数据变更消息关联的状态信息,可以确定已对该第一数据变更消息做出处理的存储服务端。因此,作为一种可选的实施例,存储服务端可以在第一消息队列中获取其未处理的至少一个第一数据变更消息。

接下来,在操作s320,获取与第一数据变更消息关联的待同步数据。

在本公开实施例中,具体地,由于业务服务端将待同步数据也同步发布至第一消息队列中,存储服务端可以在第一消息队列中获取与第一数据变更消息关联的待同步数据。具体可以根据第一数据变更消息指示的待更新数据的第二数据标识,在第一消息队列中获取与第二数据标识关联的数据,以得到待同步数据。

可选地,存储服务端在第一消息队列中,获取与具有最新时间戳的第一数据变更消息关联的数据,以得到待同步数据。或者,存储服务端在第一消息队列中,获取与各未处理的第一数据变更消息关联的数据,以得到待同步数据。

可选地,在第一数据变更消息发布后的预设时长内,如果存储服务端成功获取待同步数据,第一消息队列向业务服务端发送针对存储服务端的响应消息,响应消息指示存储服务端成功获取待同步数据,响应消息具体可以是ack消息(acknowledgement消息,确认消息)。当在第一数据变更消息发布后的预设时长内,存储服务端未能成功获取待同步数据,第一消息队列向业务服务端发送针对存储服务端的否定响应消息,否定响应消息指示存储服务端未能成功获取待同步数据,否定响应消息具体可以是nack消息(negativeacknowledgement消息,非确认消息)。

接下来,在操作s330,利用待同步数据,对本地数据进行更新操作。

在本公开实施例中,具体地,利用获取的待同步数据,对存储服务端中存储的本地数据进行更新操作。根据第一数据变更消息指示的待更新数据的第二数据标识,利用获取的待同步数据,对第二数据标识指示的本地数据进行替换处理。

可选地,利用与具有最新时间戳的第一数据变更消息关联的待同步数据,对存储服务端中存储的本地数据进行更新操作。或者,利用与至少一个未处理的第一数据变更消息关联的待同步数据,对存储服务端中存储的本地数据进行更新操作。具体地,根据各未处理的第一数据变更消息的时间戳顺序,依次利用与各第一数据变更消息关联的待同步数据,对本地最新数据进行更新操作。即,根据各未处理的第一数据变更消息的时间戳顺序,利用与未处理的第一数据变更消息关联的待同步数据,对前一次更新后的数据进行更新操作。

示例性地,第一数据变更消息a指示修改产品m的产品名称、产品代码,第一数据变更消息b指示修改产品m的产品名称,第一数据变更消息a的时间戳早于第一数据变更消息b的时间戳。此时,先根据与第一数据变更消息a关联的待同步数据,对存储服务端中存储的本地数据进行更新,然后,再根据与第一数据变更消息b关联的待同步数据,对前一次更新后的数据进行更新。如果,数据更新操作的顺序发生更改,可能导致针对第一数据变更消息b的数据更新被覆盖,因此需要利用各未处理的第一数据变更消息的时序信息,即根据各未处理的第一数据变更消息的时间戳顺序,进行针对本地数据的更新操作。

接下来,在操作s340,生成针对更新操作的第二数据变更消息。

在本公开实施例中,具体地,根据成功更新数据的第一数据标识,生成第二数据变更消息。大部分情况下,待更新数据的第二数据标识与成功更新数据的第一数据标识相同,但也可能存在部分数据未能成功更新的情况,因此,根据成功更新数据的第一数据标识,生成第二数据变更消息。

接下来,在操作s350,将第二数据变更消息发布至第二消息队列中,以供与存储服务端关联的应用服务端,根据第二数据变更消息进行数据更新。

在本公开实施例中,具体地,存储服务端可能对应多个应用服务端,存储服务端将第二数据变更消息发布至第二消息队列中,以供与存储服务端关联的各应用服务端从第二消息队列中,获取第二数据变更消息,并根据第二数据变更消息从存储服务端中获取待同步数据,然后利用待同步数据对应用服务端中存储的本地数据进行数据更新,以实现业务服务端、存储服务端和应用服务端的数据同步。

在本公开实施例中,通过利用存储服务端,从业务服务端生成的第一消息队列中获取第一数据变更消息,并从第一消息队列中获取与第一数据变更消息关联的待同步数据,利用待同步数据对存储服务端中本地存储的数据进行更新操作,相比于业务服务端定期向存储服务端发送更新后的数据,或者存储服务端定期向业务服务端请求更新后的数据,本方法有利于提高存储服务端中数据同步的实时性;存储服务端在完成数据更新后,生成针对数据更新操作的第二数据变更消息,并把第二数据变更消息发布至第二消息队列中,以供与存储服务端关联的应用服务端根据第二数据变更消息进行数据更新,该种设计同样有利于提高应用服务端中数据同步的实时性,有利于实现业务服务端、存储服务端和应用服务端中的数据保持一致,数据同步效果显著,有利于保证业务系统中业务的安全正常运行。

图4示意性示出了根据本公开实施例的另一数据同步方法的流程图,该方法应用于存储服务端。

如图4所示,该方法可以包括操作s410~s430。

在操作s410,根据待更新数据的第二数据标识,生成第一数据变更消息。

在本实施例中,具体地,待更新数据可以是待更新的产品数据,具体可以是由业务管理人员指定的待更新的产品数据,也可以是由业务服务端确定出的待更新的产品数据,例如可以是某款基金的基金名称、基金代码、基金发售时间等数据。业务服务端根据待更新数据的第二数据标识,生成第一数据变更消息。

接下来,在操作s420,确定与第二数据标识关联的更新后数据,以作为待同步数据。

在本实施例中,具体地,根据待更新数据的第二数据标识,确定针对第二数据标识的更新后数据,以作为待同步数据。示例性地,基金a的发布时间由2020年5月1日更改为2020年5月3日,则确定“基金a的发布时间:2020年5月3日”为待同步数据。

接下来,在操作s430,将第一数据变更消息和待同步数据发布至第一消息队列中,以供与业务服务端关联的存储服务端,根据第一数据变更消息进行数据更新。

在本实施例中,具体地,将第一数据变更消息和待同步数据发布至第一消息队列中,以供与业务服务端关联的至少一个存储服务端,从第一消息队列中获取第一数据变更消息,和获取与第一数据变更消息关联的待同步数据,进行本地存储数据的数据更新。

可选地,在发布第一数据变更消息后的预设时间内,确定是否接收到针对各存储服务端的响应消息,响应消息指示存储服务端成功获取待同步数据。响应消息可以由第一消息队列发送,也可由存储服务端发送。在未获取到针对某存储服务端的响应消息的情况下,向该存储服务端发送第一数据变更消息。该种设计有利于保证第一数据变更消息被全部存储服务端获取并处理,有利于保证数据同步的实时性,和改善数据同步效果。

作为一种可选的方式,业务服务端在发布第一数据变更消息之前,存储待同步数据;在接收到针对存储服务端的响应消息后,对存储的待同步数据进行释放。具体地,业务服务端在发布第一数据变更消息之前,将待同步数据持久化到磁盘中。在第一消息队列发生异常的情况下,该种设计有利于有效减少待同步数据的丢失,有利于保证数据同步的实时性和同步效果。在获取到针对所有存储服务端的响应消息后,业务服务端对存储的待同步数据进行释放。

图5示意性示出了根据本公开实施例的再一数据同步方法的流程图,该方法应用于应用服务端。

如图5所示,该方法可以包括操作s510~s530。

在操作s510,在存储服务端生成的第二消息队列中,获取第二数据变更消息。

在本实施例中,具体地,在存储服务端生成的第二消息队列中,获取第二数据变更消息,第二数据变更消息指示存储服务端中发生更新的数据的数据标识,具体指示存储服务端中成功更新数据的第一数据标识。可选地,利用应用服务端在第二消息队列中,获取具有最新时间戳的第二数据变更消息,或者获取至少一个其未处理的第二数据变更消息。

接下来,在操作s520,获取与第二数据变更消息关联的待同步数据。

在本实施例中,具体地,根据获取的第二数据变更消息,从存储服务端中获取与第二数据变更消息关联的待同步数据。与第一消息队列不同的是,第二消息队列中未存储与第二数据变更消息关联的待同步数据,应用服务端需从存储服务端中获取待同步数据。具体地,应用服务端可以在存储服务端中,获取与具有最新时间戳的第二数据变更消息关联的数据,以得到待同步数据,或者在存储服务端中,获取与各未处理的第二数据变更消息关联的数据,以得到待同步数据。

接下来,在操作s530,利用待同步数据,对本地数据进行更新操作。

在本实施例中,具体地,利用从存储服务端中获取的待同步数据,对本地存储的原数据进行替换,进行针对应用服务端的数据更新,以实现业务服务端、存储服务端和应用服务端中的数据同步。在用户通过终端触发业务选项时,终端通过负载均衡设备向某个应用服务端发送数据获取请求,应用服务端向终端返回针对数据获取请求的最新的产品数据。应用服务端中实时进行数据同步,有利于保证用户获取到的产品数据的实时性和准确性,有利于保证业务的正常健康开展。

同样地,存储终端也可在发布第二数据变更消息后的预设时间内,确定是否接收到针对各应用服务端的响应消息,响应消息指示应用服务端成功获取第二数据变更消息。响应消息可以由第二消息队列发送,也可由应用服务端发送。在未获取到针对某应用服务端的响应消息的情况下,存储服务端向该应用服务端发送第二数据变更消息。该种设计有利于保证第二数据变更消息被全部应用服务端获取,有利于提高数据同步的实时性,和改善数据同步效果。

作为一种可选的方式,存储服务端在发布第二数据变更消息之前,存储第二数据变更消息;在接收到针对应用服务端的响应消息后,对存储的第二数据变更消息进行释放。具体地,存储服务端在发布第二数据变更消息之前,将第二数据变更消息持久化到磁盘中,该种设计有利于在第二消息队列发生异常的情况下,有效减少对应用服务端数据同步造成的影响,有利于保证数据同步的实时性和同步效果。在获取到针对所有应用服务端的响应消息后,对存储的第二数据变更消息进行释放。

图6示意性示出了根据本公开实施例的存储服务端中的数据同步装置的框图。

如图6所示,存储服务端600包括第一获取模块601、第二获取模块602、第一更新模块603、第一处理模块604和第二处理模块605,该存储服务端可以执行参考方法实施例部分描述的方法。

具体地,第一获取模块601,用于在业务服务端生成的第一消息队列中,获取第一数据变更消息;第二获取模块602,用于获取与第一数据变更消息关联的待同步数据;第一更新模块603,用于利用待同步数据,对本地数据进行更新操作;第一处理模块604,用于生成针对更新操作的第二数据变更消息;第二处理模块605,用于将第二数据变更消息发布至第二消息队列中,以供与存储服务端关联的应用服务端根据第二数据变更消息进行数据更新。

作为一种可选的实施例,第一获取模块包括第一获取子模块,用于在第一消息队列中,获取具有最新时间戳的第一数据变更消息;第二获取模块包括第二获取子模块,用于在第一消息队列中,获取与具有最新时间戳的第一数据变更消息关联的数据,以得到待同步数据。

作为一种可选的实施例,第一获取模块包括第三获取子模块,用于在第一消息队列中,获取至少一个未处理的第一数据变更消息;第二获取模块包括第四获取子模块,用于在第一消息队列中,获取与各未处理的第一数据变更消息关联的数据,以得到待同步数据。

作为一种可选的实施例,第一更新模块包括第一更新子模块,用于根据各未处理的第一数据变更消息的时间戳顺序,依次利用与各第一数据变更消息关联的数据,对本地最新数据进行更新操作。

作为一种可选的实施例,第一处理模块包括第一处理子模块,用于根据成功更新数据的第一数据标识,生成第二数据变更消息。

在本公开实施例中,通过利用存储服务端,从业务服务端生成的第一消息队列中获取第一数据变更消息,并从第一消息队列中获取与第一数据变更消息关联的待同步数据,利用待同步数据对存储服务端中本地存储的数据进行更新操作,相比于业务服务端定期向存储服务端发送更新后的数据,或者存储服务端定期向业务服务端请求更新后的数据,本方法有利于提高存储服务端中数据同步的实时性;存储服务端在完成数据更新后,生成针对数据更新操作的第二数据变更消息,并把第二数据变更消息发布至第二消息队列中,以供与存储服务端关联的应用服务端根据第二数据变更消息进行数据更新,该种设计同样有利于提高应用服务端中数据同步的实时性,有利于实现业务服务端、存储服务端和应用服务端中的数据保持一致,数据同步效果显著,有利于保证业务系统中业务的安全正常运行。

图7示意性示出了根据本公开实施例的业务服务端中的数据同步装置的框图。

如图7所示,存储服务端700包括第三处理模块701、第四处理模块702和第五处理模块703,该业务服务端可以执行参考方法实施例部分描述的方法。

具体地,第三处理模块701,用于根据待更新数据的第二数据标识,生成第一数据变更消息;第四处理模块702,用于确定与第二数据标识关联的更新后数据,以作为待同步数据;第五处理模块703,用于将第一数据变更消息和待同步数据发布至第一消息队列中,以供与业务服务端关联的存储服务端根据第一数据变更消息进行数据更新。

作为一种可选的实施例,本装置还包括第六处理模块,用于在发布第一数据变更消息后的预设时长内,确定是否接收到针对存储服务端的响应消息,其中,响应消息指示存储服务端成功获取待同步数据;以及第七处理模块,用于在未接收到针对存储服务端的响应消息的情况下,向存储服务端发送第一数据变更消息。

作为一种可选的实施例,本装置还包括还包括第八处理模块,用于在发布第一数据变更消息之前,存储待同步数据;以及第九处理模块,用于在接收到针对存储服务端的响应消息后,对存储的待同步数据进行释放。

图8示意性示出了根据本公开实施例的应用服务端中的数据同步装置的框图。

如图8所示,存储服务端800包括第三获取模块801、第四获取模块802和第二更新模块803,该应用服务端可以执行参考方法实施例部分描述的方法。

具体地,第三获取模块801,用于在存储服务端生成的第二消息队列中,获取第二数据变更消息;第四获取模块802,用于获取与第二数据变更消息关联的待同步数据;第二更新模块803,用于利用待同步数据,对本地数据进行更新操作。

作为一种可选的实施例,第三获取模块包括第五获取子模块,用于在第二消息队列中,获取具有最新时间戳的第二数据变更消息;第四获取模块包括第六获取子模块,用于在存储服务端中,获取与具有最新时间戳的第二数据变更消息关联的数据,以得到待同步数据。

作为一种可选的实施例,第三获取模块包括第七获取子模块,用于在第二消息队列中,获取至少一个未处理的第二数据变更消息;第四获取模块包括第八获取子模块,用于在存储服务端中,获取与各未处理的第二数据变更消息关联的数据,以得到待同步数据。

作为一种可选的实施例,第二更新模块,包括第二更新子模块,用于根据各未处理的第二数据变更消息的时间戳顺序,依次利用与各第二数据变更消息关联的数据,对本地最新数据进行更新操作。

需要说明的是,在本公开实施例中,装置部分的实施方式与方法部分的实施方式相同或类似,在此不再赘述。

根据本公开的实施例的模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者根据本公开实施例的模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,第一获取模块601、第二获取模块602、第一更新模块603、第一处理模块604和第二处理模块605中,或者第三处理模块701、第四处理模块702和第五处理模块703中,或者第三获取模块801、第四获取模块802和第二更新模块803中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块601、第二获取模块602、第一更新模块603、第一处理模块604和第二处理模块605中,或者第三处理模块701、第四处理模块702和第五处理模块703中,或者第三获取模块801、第四获取模块802和第二更新模块803中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。第一获取模块601、第二获取模块602、第一更新模块603、第一处理模块604和第二处理模块605中,或者第三处理模块701、第四处理模块702和第五处理模块703中,或者第三获取模块801、第四获取模块802和第二更新模块803中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图9示意性示出了根据本公开实施例的电子设备的框图。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图9所示,电子设备900包括处理器910、计算机可读存储介质920。该电子设备900可以执行根据本公开实施例的方法。

具体地,处理器910例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器910还可以包括用于缓存用途的板载存储器。处理器910可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理模块或者是多个处理模块。

计算机可读存储介质920,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;等等。

计算机可读存储介质920可以包括计算机程序921,该计算机程序921可以包括代码/计算机可执行指令,其在由处理器910执行时使得处理器910执行根据本公开实施例的方法或其任何变形。

计算机程序921可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序921中的代码可以包括一个或多个程序模块,例如包括921a、模块921b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器910执行时,使得处理器910可以执行根据本公开实施例的方法或其任何变形。

根据本公开的实施例,第一获取模块601、第二获取模块602、第一更新模块603、第一处理模块604和第二处理模块605中,或者第三处理模块701、第四处理模块702和第五处理模块703中,或者第三获取模块801、第四获取模块802和第二更新模块803中的至少一个可以实现为参考图9描述的计算机程序模块,其在被处理器910执行时,可以实现上面描述的相应操作。

本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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