一种将数据更新快速同步到业务系统的装置及方法与流程

文档序号:14609434发布日期:2018-06-05 20:30阅读:156来源:国知局
一种将数据更新快速同步到业务系统的装置及方法与流程

本发明涉及计算机网络及计算机软件领域,具体涉及一种将数据更新快速同步到业务系统的装置及方法。



背景技术:

增值税发票(以下简称增票)资质信息是开具增票的唯一且必需的凭证,其中资质信息包括资质税号、单位名称等。每个与增票相关的业务系统和用户都有权对资质信息进行新增、修改等操作。因此,在开具增票的过程中,用户在各个业务系统提交开具增票请求之后,还需要负责增票业务的相关人员进行逐级审核,最终统一由企业发票系统进行审核处理,在审核通过之后才能够正式开具增票。如果各个业务系统各自的资质信息与企业发票系统数据库一致,在各个业务系统提交开具增票请求之后,正式开具增票的效率必定大为增加。

为便于能够提高开具增票的效率,各个业务系统各自保存有一份资质信息。然而,由于各个业务系统拥有各自的业务数据并且执行各自的业务流程,彼此之间不可避免会存在大量不同状态、不同内容的资质信息。虽然资质状态变更频繁,并且采用定时任务查询资质数据库的方式,仍然不能实时保证资质信息的一致。

在现有技术中,为保证各个业务系统中的资质信息与企业发票系统中的资质信息保持一致,各个业务系统需要频繁查询企业发票系统的资质数据库。但是,随着业务量的增长,增票开具量也随之越来越大,资质信息的数据量也同样随之陡增。在大量开具发票的情况下,各个业务系统的查询请求对企业发票系统数据库造成巨大的读压力,甚至在高峰时期可能会造成企业发票系统数据库的宕机,严重影响了开具增票的工作效率,增加了开票的机器资源消耗,甚至导致客户的投诉。

因此,如何快速准确地将最新的资质信息和资质状态同步给上游的各个业务系统,并且避免频繁的查询发票系统的资质数据库已成为当前急需解决的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种将数据更新快速同步到业务系统的装置及方法,以达到快速准确地将数据更新同步到业务系统。

本发明的技术方案是提供一种将数据更新快速同步到业务系统的装置,该装置包括数据更新模块和数据同步模块,其中,

所述数据更新模块在发生数据的更新时,向所述数据同步模块发送数据更新消息,所述数据更新消息包括所述数据的标识和更新时间;

所述数据同步模块包括缓存,所述缓存保存所述数据的标识和对应的最后更新时间,

其中,当接收到所述数据更新消息时,所述数据同步模块根据接收的所述数据更新消息中的所述标识确定所述缓存中保存的所述标识对应的最后更新时间,如果所述数据更新消息中的所述更新时间晚于所述最后更新时间,则从所述数据更新模块获取对应的数据并作为数据消息发送至所述业务系统,并且把所述缓存中的所述最后变更时间替换为所述数据更新消息中的所述更新时间。

可选地,所述数据是增值税发票资质信息。

可选地,所述数据同步模块由多套MQ消息集群组成,并且还包括监控模块,所述监控模块用于定期检测各所述MQ消息集群的可用率和发送时间,并将发送时间最快且可用的所述MQ消息集群的编号保存至所述缓存中,使得在接收和发送消息时利用发送时间最快且可用的所述MQ消息集群。

本发明还提供一种将数据更新快速同步到业务系统的方法,所述方法,其中,

当数据更新模块发生数据的更新时,向数据同步模块发送数据更新消息,所述数据更新消息包括所述数据的标识和更新时间,所述数据同步模块包括缓存,所述缓存保存数据的数据标识和对应的最后更新时间,

当所述数据同步模块接收到数据更新消息时,所述数据同步模块根据接收的所述数据更新消息中的所述标识确定所述缓存中保存的所述标识对应的最后更新时间,如果所述数据更新消息中的所述更新时间晚于所述最后更新时间,则从所述数据更新模块获取对应的所述数据并作为数据消息发送至所述业务系统,并且把所述缓存中的所述最后变更时间替换为所述数据更新消息中的更新时间。

可选地,所述数据是增值税发票资质信息。

可选地,该方法还包括:定期检测各MQ消息集群的可用率和发送时间,并将发送时间最快且可用的所述MQ消息集群的编号保存至所述缓存中,使得在接收和发送消息时利用发送时间最快且可用的所述MQ消息集群。

通过本发明提供的将数据更新快速同步到业务系统的装置及方法,能够有效减少数据更新同步到业务系统的时间,实现了实时数据更新,显著提高了数据更新的工作效率,由此避免了由于大量的查询需求对系统数据库和服务器的压力。此外,由于采用多套MQ消息集群和监控功能,有效保证了MQ消息集群的高可用性。

附图说明

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

图1为本发明一实施例的将数据更新快速同步到业务系统的装置的示意图;

图2为本发明一实施例的将数据更新快速同步到业务系统的方法的流程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

在本文中,需要理解的是,所涉及的术语中:

增值税专用发票:是由国家税务总局监制设计印制的,只限于增值税一般纳税人领购使用的,既作为纳税人反映经济活动中的重要会计凭证又是兼记销货方纳税义务和购货方进项税额的合法证明;是增值税计算和管理中重要的决定性的合法的专用发票。

缓存:本发明使用的Redis,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

MQ消息:消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ从设计上保证了高性能的集群,客户端-服务器,点对点。

下面参考图1对本发明示例性实施方式的将数据更新快速同步到业务系统的装置的示意图进行介绍,其中,该装置1包括:数据更新模块11和数据同步模块12,其中,所述数据更新模块11在发生数据的更新时,向所述数据同步模块12发送数据更新消息,所述数据更新消息包括所述数据的标识和更新时间;所述数据同步模块12包括缓存13,所述缓存保存所述数据的标识和对应的最后更新时间,其中,当接收到所述数据更新消息时,所述数据同步模块12根据接收的所述数据更新消息中的所述标识确定所述缓存中保存的所述标识对应的最后更新时间,如果所述数据更新消息中的所述更新时间晚于所述最后更新时间,则从所述数据更新模块11获取对应的数据并作为数据消息发送至所述业务系统,并且把所述缓存中的所述最后变更时间替换为所述数据更新消息中的所述更新时间。

可选地,所述数据是增值税发票资质信息。

可选地,所述数据同步模块12由多套MQ消息集群组成,并且还包括监控模块14,所述监控模块14用于定期检测各所述MQ消息集群的可用率和发送时间,并将发送时间最快且可用的所述MQ消息集群的编号保存至所述缓存中,使得在接收和发送消息时利用发送时间最快且可用的所述MQ消息集群。

实施例

下面结合一个具体实施例对本发明进行具体描述,然而值得注意的是该具体实施例仅是为了更好地描述本发明,并不构成对本发明的不当限定。

对于增值税发票资质信息的维护操作包括用户资质操作模块15、资质初步审核模块16、资质最终审核模块17,这三个模块都会涉及到对资质信息的状态和信息的变更,其中用户资质操作模块15用于对该资质信息进行新增、修改和删除操作;资质初步审核模块16,用于对该资质信息进行初步审核通过和驳回操作;资质最终审核模块17,用于对该资质信息进行最终审核通过和驳回操作。

在发生资质信息的更新时,数据更新模块11向数据同步模块12发送资质信息的更新消息,该资质信息的更新消息包括资质信息的标识和该资质信息的更新时间,并将该资质信息的标识和对应的最后更新时间保存至缓存13中。

在本发明一实施例中,缓存13使用的是Redis。缓存Redis在本发明中的作用为两个,第一个是存储当前最优可用的消息集群编号(缓存键“BEST_MQ_CODE”);第二个是存储发送消息的资质的标识和对应的最后更新时间,用于解决因消息并发时的顺序性问题。值得一提的是,Redis单独搭建到一台服务器上,用于各个系统的使用。通过Redis的set(key,value)方法来保存键值对类型的内容;通过Redis的get(key)方法获取键值为key的内容。

当接收到资质信息变更的消息时,该数据同步模块根据接收的资质信息变更的消息中的该资质信息的标识确定缓存中保存的该标识对应的最后更新时间,如果该资质信息变更的消息中的更新时间晚于该最后更新时间,则从该数据更新模块获取对应的资质信息并作为MQ消息通过MQ消息集群发送至各个业务系统,并且将缓存中的最后变更时间替换为资质信息变更的消息中的更新时间。

为了保证MQ消息的高可用,在本发明一实施例中,部署了多套MQ消息集群,并且引入了MQ消息集群的监控模块14,每隔5分钟发送测试MQ消息给每个集群,检测每个集群的可用率和发送时间,然后统计得出发送时间最快且可用的集群编号,将可用编号放置缓存中。

由于涉及多套消息集群,并且需要在某个机房网络或其他原因导致不可用时,能自动的切换到可用消息集群上,保障系统的高可用,就需要有检测系统,以实时检测当前最优的消息集群,用于各个系统之间消息的发送。

具体来说,利用java本身的Timer类,通过设置schedule方法,每隔2分钟执行一次探测集群的动作。探测动作包括给A机房消息集群和B机房消息集群发送测试验证消息,记录各自是否发送成功,发送的时间。如A机房5ms,B机房100ms(或者B机房发送失败),通过比较,得出当前最优的消息集群A机房,将此机房编号存储至缓存Redis中(存储键值对为“BEST_MQ_CODE:A”),其他应用服务发送消息前,通过缓存Redis获取当前最优的消息集群“A”,然后连接此机房的集群发送MQ消息。

由于MQ消息并不完全保证消息发送和接收的顺序性,例如在并发情况下,很容易发生,先发送的消息,后接收到,那么上游的业务系统就有可能把信息更新为过期的状态和信息。本发明利用数据同步模块就可以很好的解决此问题,通过比较接收到的资质信息和缓存中此资质信息最后发送的更新时间,并且进行对比,然后判断是否需要发送,实现了针对由于并发顺序性问题,而不应该发送给业务系统的资质信息的过滤目的。

例如,资质信息A经过两次审核,审核时间分别为TIME_1“2016-10-10 10:10:10”和TIME_2“2016-10-10 10:11:11”,TIME_1先于TIME_2发送操作后的资质信息给数据同步模块,资质信息包括资质的唯一ID(如13245)、操作时间、状态和其他资质内容)。然而,数据同步模块先接收到了TIME_2,该数据同步模块通过缓存获取这个资质信息A的上一次发送资质信息的变更时间(Redis键“A_LAST_TIME_13245”),由于之前没有审核过,所以缓存中没有操作时间,那么认为TIME_2就是当前最新的资质操作时间,将TIME_2这次的信息通过MQ消息的方式发送给业务系统,并且将TIME_2存储到缓存Redis中,用于后续的资质过滤(键值对“A_LAST_TIME_13245:2016-10-10 10:11:11”)。再之后接受到TIME_1的资质审核信息,再查询缓存中资质A最后的操作时间,键值对“A_LAST_TIME_13245:2016-10-10 10:11:11”,然后对比时间发现TIME_1是早于之前已经发送过的资质信息的,因此认为当前接收到的TIME_1的审核资质信息是过期的,不再发送给业务系统,造成数据错误。这种方式保证了在并发情况下,由于消息的顺序性问题发生的信息错误的问题。

由于本发明是多套消息集群提供消息的发送服务,因此应用中须将A和B两个机房的消息集群配置都加载进来,以便随时切换使用。多个消息发送producer,如“MQ_SEND_A”和“MQ_SEND_B”分别对应了两个机房的发送对象,在需要发送消息的时候,根据检测MQ消息集群的结果(即缓存Redis中最优的消息集群,如A),通过“MQ_SEND_A”消息集群,将需要发送的内容发送出去。MQ消息发送模式采用队列形式,即发送时声明队列名为“MQ_QUALICATON”,那么接收方监听此队列名的消息队列,就能接收到之前发出的消息了。

MQ消息的接收,则是两个机房都进行接收操作,因为发送消息方,随时可能切换发送消息的集群,因此接收消息的应用,配置两个消费消息的consumer。“MQ_RECEIVE_A”和“MQ_RECEIVE_B”,同时接收队列“MQ_QUALICATON”中的消息。

图2为本发明一实施例的将数据更新快速同步到业务系统的方法的流程示意图,其中,该方法包括:

步骤S201:新模块发生数据的更新时,向数据同步模块发送数据更新消息,所述数据更新消息包括所述数据的标识和更新时间,所述数据同步模块包括缓存,所述缓存保存数据的数据标识和对应的最后更新时间;

步骤S202:所述数据同步模块接收到数据更新消息时,所述数据同步模块根据接收的所述数据更新消息中的所述标识确定所述缓存中保存的所述标识对应的最后更新时间,如果所述数据更新消息中的所述更新时间晚于所述最后更新时间,则从所述数据更新模块获取对应的所述数据并作为数据消息发送至所述业务系统,并且把所述缓存中的所述最后变更时间替换为所述数据更新消息中的更新时间。

可选地,所述数据是增值税发票资质信息。

可选地,该方法还包括:定期检测各MQ消息集群的可用率和发送时间,并将发送时间最快且可用的所述MQ消息集群的编号保存至所述缓存中,使得在接收和发送消息时利用发送时间最快且可用的所述MQ消息集群。

由于本发明提供的将数据更新快速同步到业务系统的方法是上述装置的方法,故不在此赘述。

通过本发明提供的将数据更新快速同步到业务系统的装置及方法,能够有效减少数据更新同步到业务系统的时间,实现了实时数据更新,显著提高了数据更新的工作效率,由此避免了由于大量的查询需求对系统数据库和服务器的压力。此外,由于采用多套MQ消息集群和监控功能,有效保证了MQ消息集群的高可用性。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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