一种数据同步方法和装置与流程

文档序号:15980203发布日期:2018-11-17 00:14阅读:220来源:国知局

本发明涉及数据处理领域,尤其涉及一种数据同步方法和装置。

背景技术

目前,银行多采用“同城双活+异地灾备”的建设方案保证金融服务的可靠性,即在同一个城市部署两个能够同时对外提供服务的数据中心,彼此互为备份,一旦其中一个发生灾难时,另一个能够自动接管银行的所有交易请求,对客户无感知且无资金风险。一旦两个同城数据中心均发生灾难(如地域级灾难)时,则需要切换至异地备份的数据中心,由异地数据中心接管银行的所有交易请求。

由于现有的异地数据备份方式是基于数据库异步复制实现的,通常存在一定的延迟,在灾难发生之前的若干时间(目前一般为30分钟)的数据可能并未及时同步至异地数据中心,因此,基于目前的异地数据同步方式,一旦发生地域性灾难,切换至异地数据中心为客户提供金融服务存在较大问题。



技术实现要素:

有鉴于此,本申请提供了一种数据同步方法和装置,基于该数据同步方法能够将数据及时同步至异地数据中心,最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

第一方面,为实现上述发明目的,本申请提供了一种数据同步方法,所述方法应用于第一数据中心,所述第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群;

所述第一数据分发端接收来自客户端的请求报文后,将所述请求报文发送至第一数据写入端,并由所述第一数据写入端将所述请求报文写入所述第一本地kafka集群;

所述第一本地kafka集群将所述请求报文发送至第二数据中心,以便将所述请求报文同步至所述第二数据中心,所述第二数据中心为所述第一数据中心的异地数据中心;

当所述第一数据分发端接收到所述请求报文对应的响应报文,且接收到来自所述第二数据中心对所述请求报文的确认接收消息后,将所述响应报文写入所述第一数据写入端,并由所述第一数据写入端将所述响应报文写入所述第一本地kafka集群;

所述第一本地kafka集群将所述响应报文发送至所述第二数据中心,以便所述第二数据中心存储所述请求报文和所述响应报文的映射关系。

在一种可选的实现方式中,所述将所述请求报文发送至第一数据写入端之前,还包括:

所述第一数据分发端判断所述请求报文是否属于预设的待同步报文类型;

如果是,则继续执行所述将所述请求报文发送至第一数据写入端的步骤。

在一种可选的实现方式中,所述第一数据中心还包括第一监控中心;所述方法还包括:

所述第一监控中心记录在预设时间内未返回确认接收消息的请求报文,并在符合预设第一监控告警条件时进行告警。

第二方面,本申请提供了一种数据重放方法,所述数据重放方法应用于第二数据中心;所述第二数据中心包括第二数据分发端、第二数据写入端和第二本地kafka集群,所述第二本地kafka集群中存储有所述请求报文和所述响应报文的映射关系,所述请求报文和所述响应报文的映射关系是通过上述第一方面数据同步方法获得的,所述方法包括:

所述第二数据写入端从所述第二本地kafka集群中读取所述请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至所述第二数据分发端;

所述第二数据写入端接收来自所述第二数据分发端对所述请求报文的重放响应报文。

在一种可选的实现方式中,所述第二数据中心还包括第二监控中心,所述方法还包括:

所述第二数据写入端将所述重放响应报文与所述响应报文进行比对,如果不同,则所述第二监控中心记录所述请求报文,并在符合预设第二监控告警条件时进行告警。

第三方面,本申请还提供了一种数据同步装置,所述装置应用于第一数据中心,所述第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群;

所述第一数据分发端,用于接收来自客户端的请求报文后,将所述请求报文发送至第一数据写入端,并由所述第一数据写入端将所述请求报文写入所述第一本地kafka集群;

所述第一本地kafka集群,用于将所述请求报文发送至第二数据中心,以便将所述请求报文同步至所述第二数据中心,所述第二数据中心为所述第一数据中心的异地数据中心;

所述第一数据分发端,还用于在接收到所述请求报文对应的响应报文,且接收到来自所述第二数据中心对所述请求报文的确认接收消息后,将所述响应报文写入所述第一数据写入端,并由所述第一数据写入端将所述响应报文写入所述第一本地kafka集群;

所述第一本地kafka集群,还用于将所述响应报文发送至所述第二数据中心,以便所述第二数据中心存储所述请求报文和所述响应报文的映射关系。

在一种可选的实现方式中,所述第一数据分发端,还用于判断所述请求报文是否属于预设的待同步报文类型;如果是,则继续执行所述将所述请求报文发送至第一数据写入端的步骤。

在一种可选的实现方式中,所述第一数据中心还包括第一监控中心;

所述第一监控中心,用于记录在预设时间内未返回确认接收消息的请求报文,并在符合预设第一监控告警条件时进行告警。

第四方面,本申请还提供了一种数据重放装置,所述数据重放装置应用于第二数据中心;所述第二数据中心包括第二数据分发端、第二数据写入端和第二本地kafka集群,所述第二本地kafka集群中存储有所述请求报文和所述响应报文的映射关系,所述请求报文和所述响应报文的映射关系是通过上述第三方面提供的数据同步装置获得的;

所述第二数据写入端,用于从所述第二本地kafka集群中读取所述请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至所述第二数据分发端;以及接收来自所述第二数据分发端对所述请求报文的重放响应报文。

在一种可选的实现方式中,所述第二数据中心还包括第二监控中心;

所述第二数据写入端,还用于将所述重放响应报文与所述响应报文进行比对;

所述第二监控中心,用于在所述第二数据写入端将所述重放响应报文与所述响应报文进行比对的结果为不同时,记录所述请求报文,并在符合预设第二监控告警条件时进行告警。

第五方面,本申请还提供了一种数据同步系统,所述数据同步系统包括第一数据中心和第二数据中心,所述第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群;所述第二数据中心包括第二数据分发端、第二数据写入端和第二本地kafka集群;

所述第一数据分发端,用于接收来自客户端的请求报文后,将所述请求报文发送至第一数据写入端,并由所述第一数据写入端将所述请求报文写入所述第一本地kafka集群;

所述第一本地kafka集群,用于将所述请求报文发送至第二数据中心,以便将所述请求报文同步至所述第二数据中心,所述第二数据中心为所述第一数据中心的异地数据中心;

所述第一数据分发端,还用于在接收到所述请求报文对应的响应报文,且接收到来自所述第二数据中心对所述请求报文的确认接收消息后,将所述响应报文写入所述第一数据写入端,并由所述第一数据写入端将所述响应报文写入所述第一本地kafka集群;

所述第一本地kafka集群,还用于将所述响应报文发送至所述第二数据中心,以便所述第二数据中心将所述请求报文和所述响应报文的映射关系存储于所述第二本地kafka集群;

所述第二数据写入端,用于从所述第二本地kafka集群中读取所述请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至所述第二数据分发端;以及接收来自所述第二数据分发端对所述请求报文的重放响应报文。

由此可见,本申请实施例具有如下有益效果:

本申请提供的数据同步方法,应用于第一数据中心,该第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群,其中,第一数据分发端接收来自客户端的请求报文后,将请求报文发送至第一数据写入端,并由第一数据写入端将请求报文写入第一本地kafka集群,然后,第一本地kafka集群将请求报文发送至第二数据中心,以便将请求报文同步至第二数据中心,进而,当第一数据分发端接收到请求报文对应的响应报文,且接收到来自第二数据中心对请求报文的确认接收消息后,将响应报文写入第一数据写入端,并由第一数据写入端将响应报文写入第一本地kafka集群;接着,第一本地kafka集群将响应报文发送至第二数据中心,以便第二数据中心存储请求报文和响应报文的映射关系。可见,当第二数据中心为第一数据中心的异地备份数据中心时,可以利用本申请提供的数据同步方法,将本地数据中心的请求报文和响应报文的映射关系及时同步到异地数据中心,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

附图说明

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

图1为本申请实施例提供的数据同步方法在实际应用中的场景示例图;

图2为本申请实施例提供的一种数据同步方法的流程图;

图3为本申请实施例提供的kafka集群的原理结构示意图;

图4为本申请实施例提供的kafka集群中消息发送的流程图;

图5为本申请实施例提供的数据同步方法的交互流程图;

图6为本申请实施例提供的一种数据重放方法的流程图;

图7是本申请实施例提供的一种数据同步装置的结构示意图;

图8是本申请实施例提供的一种数据重放装置的结构示意图;

图9是本申请实施例提供的一种数据同步系统的结构示意图。

具体实施方式

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

为了便于理解本申请提供的技术方案,下面先对本申请技术方案的研究背景进行简单说明。

近年来,随着经济和互联网技术的高速发展,银行等金融机构的数据处理总量也在日益增多,为了确保在发生地域级灾难时,银行服务持续可用、数据不丢失且客户资金无损失,目前银行多采用“同城双活+异地灾备”的建设方案保证金融服务的可靠性,一旦两个同城数据中心均发生灾难(如地域级灾难)时,则需要切换至异地备份的数据中心,由异地数据中心接管银行的所有交易请求。

但是现有的异地数据备份方式是基于数据库异步复制实现的,通常存在一定的延迟,在地域级灾难发生之前的若干时间(一般为30分钟)的数据可能并未及时同步至异地数据中心,因此,基于目前的异地数据同步方式,一旦发生地域性灾难,切换至异地数据中心为客户提供金融服务存在较大问题。

基于此,本申请提出了一种数据同步方法和装置,基于该数据同步方法能够将数据及时同步至异地数据中心,最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

为了便于解释,下面先对本申请在实际中的应用场景进行介绍。

参见图1,其示出了本申请在实际应用中的场景示例图,如图1所示,本申请提供的数据同步方法可以应用于包括客户端101、第一数据中心,可以是本地数据中心102以及第二数据中心,可以是异地数据中心103中,其中,客户端101是指为用户提供本地银行相关服务的程序,如手机银行应用程序app、浏览器等,客户端可以搭载在终端中,终端例如智能手机、平板电脑、膝上型个人计算机、桌面型个人计算机、小型计算机、中型计算机、大型计算机等等;本地数据中心102指的是位于银行本地且对外提供金融服务的数据中心,能够通过任何形式的有线和/或无线连接(例如,wi-fi、lan、蜂窝、同轴电缆等)实现与客户端101的交互通信,包含有第一数据分发端、第一数据写入端和第一本地kafka集群;异地数据中心103指的是位于银行异地且对外提供金融服务的数据中心,能够通过任何形式的无线连接(例如,wi-fi等)实现与本地数据中心102的交互通信。

如图1所示,在本申请中,在由本地数据中心向异地数据中心同步数据时,客户端101首先向本地数据中心102发送请求报文,本地数据中心102中的第一数据分发端在接收到来自客户端101的请求报文后,会将该请求报文发送至第一数据写入端,并由第一数据写入端将该请求报文写入第一本地kafka集群,进而第一本地kafka集群可以将该请求报文发送至异地数据中心103,以便将该请求报文同步至异地数据中心103,接着,当本地数据中心102中的第一数据分发端接收到该请求报文对应的响应报文,且接收到来自异地数据中心对该请求报文的确认接收消息后,可以将该请求报文对应的响应报文写入第一数据写入端,并由第一数据写入端将该响应报文写入第一本地kafka集群,进而第一本地kafka集群可以将该响应报文发送至异地数据中心103,以便异地数据中心103存储该请求报文和响应报文的映射关系。

可见,本申请是将请求报文和响应报文的映射关系,从本地数据中心同步到异地数据中心,而不是通过数据库异步复制的实现数据同步,进而能够将数据及时同步至异地数据中心,最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

基于以上应用场景,本申请实施例提供了一种数据同步方法,以下将结合附图对该方法进行详细说明。

参见图2,其示出了本申请实施例提供的一种数据同步方法的流程图,如图2所示,该方法包括:

步骤201:第一数据分发端接收来自客户端的请求报文后,将请求报文发送至第一数据写入端,并由第一数据写入端将请求报文写入第一本地kafka集群。

在本申请实施例中,第一数据中心指的就是银行本地数据中心,包含有第一数据分发端、第一数据写入端和第一本地kafka集群,其中,第一数据分发端指的是进行数据处理的数据路由平台,用于接收客户端发送的数据请求报文,例如转账请求等;第一数据写入端用于接收第一数据分发端发送的请求报文,并将请求报文写入第一本地kafka集群,第一数据分发端和第一数据写入端可以为单独的设备,也可以集成到一个终端设备中,本申请对此不进行限制。

在实际应用中,第一数据分发端接收来自客户端的请求报文后,将请求报文发送至第一数据写入端,并由第一数据写入端将请求报文写入第一本地kafka集群。

在本申请一些可能的实现方式中,第一数据分发端将请求报文发送至第一数据写入端之前,还包括:

步骤a:第一数据分发端判断请求报文是否属于预设的待同步报文类型;

步骤b:如果是,则继续执行将所述请求报文发送至第一数据写入端的步骤。

在实际应用中,第一数据分发端接收来自客户端的请求报文后,将首先判断请求报文是否属于预设的待同步报文类型,其中预设的待同步报文类型指的是预先设置的需要从本地数据中心同步到异地数据中心的请求报文类型,例如,待同步报文类型可以包括转账请求报文等,如“查询”等报文请求就可以设置为非待同步报文类型等,如果第一数据分发端判断出接收到的请求报文属于预设的待同步报文类型,则继续将该请求报文发送至第一数据写入端。

步骤202:第一本地kafka集群将请求报文发送至第二数据中心,以便将请求报文同步至第二数据中心,该第二数据中心为第一数据中心的异地数据中心。

在实际应用中,通过步骤201,第一本地kafka集群接收到第一数据写入端写入的请求报文后,可将该请求报文发送至第二数据中心,以便将请求报文同步至第二数据中心,可以为异地数据中心,即将请求报文同步至异地数据中心。

在上述步骤201及步骤202中,本申请是通过本地数据中心中的第一本地kafka集群完成请求报文的获取及同步过程,以下将结合附图对kafka集群的原理及报文发送过程进行详细说明。

参见图3,其示出了本申请实施例提供的kafka集群的原理结构示意图,其中,kafka是一款开源的分布式消息发布和订阅的系统,具有高性能和高吞吐率,包括消息的发布端、消息的订阅端以及中间的存储阵列,并且三者之间通过分布式系统的可靠协调系统zookeeper来协调请求和转发。

其中,zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,也是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

如图3所示,在kafka集群中,消息的发布端产生和推送数据到存储阵列,以便消息的订阅端从存储阵列拉取数据并进行处理,在数据的传递过程中,直接使用磁盘进行报文存储,线性读写,速度快,并且避免了数据在java虚拟机(javavirtualmachine,检测jvm)内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收,同时,消息的发布端根据用户指定的算法,将消息发送到指定的分区partition,每个分区有自己的副本replica,每个副本分布在不同的存储阵列节点上。

进一步的,基于kafka集群的原理,在kafka集群中,消息的发送流程如下:

参见图4,其示出了本申请实施例提供的kafka集群中消息发送的流程图;在图4中,“主题”特指kafka处理的消息源(feedsofmessages)的不同分类,而分区1、分区2和分区3指的是“主题”物理上的分组,一个“主题”可以分为多个分区,每个分区是一个有序的队列,分区中的每条消息都会被分配一个有序的id(offset);“消息”是通信的基本单位,每个消息的发布端可以向一个“主题”发布一些消息,比如转账消息等;“消息的发布者”指的是消息和数据的生产者,向kafka的一个主题发布消息的过程叫做消息的发布。

“消息的订阅者”指的是消息和数据消费者,订阅主题并处理其发布的消息的过程叫做消息的订阅。

此外,kafka不仅能进行有效的数据存储,还可以确保消息在消息的发布端和消息的订阅端之间传输,其中,有以下三种可能的传输保障方式:

第一种方式是消息可能会丢,但绝不会重复传输;

第二种方式是消息绝不会丢,但可能会重复传输;

第三种方式是每条消息肯定会被传输一次且仅传输一次。

在实际应用中,kafka的消息传输保障机制非常直观。当消息的发布端向存储阵列发送消息时,一旦这条消息被提交(commit),由于副本机制(replication)的存在,它就不会丢失。但是如果消息的发布端发送数据给存储阵列后,遇到的网络问题而造成通信中断,那消息的发布端就无法判断该条消息是否已经提交。虽然kafka无法确定网络故障期间发生了什么,但是消息的发布端可以重试多次,确保消息已经正确传输到存储阵列中,所以目前kafka实现的是第二种方式,即实现消息绝不会丢,但可能会重复传输。

消息的订阅端从存储阵列中读取消息后,可以选择提交,该操作会在zookeeper中存下该消息的订阅端在该分区下读取的消息的id,即offset,该消息的订阅端下一次再读该分区时会从下一条开始读取。如未提交,下一次读取的开始位置会跟上一次提交之后的开始位置相同。当然也可以将消息的订阅端设置为自动提交,即消息的订阅端一旦读取到数据立即自动提交。如果只讨论这一读取消息的过程,那kafka是确保了每条消息肯定会被传输一次且仅传输一次,但是如果由于前面消息的发布端与存储阵列之间的某种原因导致消息的重复,那么这里就是第二种实现方式,即数据绝不会丢,但可能会重复传输。

读完消息先处理再提交。这种模式下,如果处理完了消息在提交之前消息的订阅端宕机了,下次重新开始工作时还会处理刚刚未提交的消息,实际上该消息已经被处理过了,这就对应于第二种方式,即实现消息绝不会丢,但可能会重复传输。

通过步骤202,将请求报文同步至异地数据中心后,可继续执行步骤203。

步骤203:当第一数据分发端接收到请求报文对应的响应报文,且接收到来自第二数据中心对请求报文的确认接收消息后,将响应报文写入第一数据写入端,并由第一数据写入端将响应报文写入第一本地kafka集群。

在实际应用中,第一数据分发端在接收到来自客户端的请求报文后,不仅将请求报文发送至第一数据写入端,以便后续同步至异地数据中心外,还会将请求报文发送到本地数据中心的核心系统等待响应结果,当第一数据分发端接收到本地数据中心的核心系统反馈的该请求报文对应的响应报文,且接收到来自第二数据中心即异地数据中心对该请求报文的确认接收消息后,会将该请求报文对应的响应报文写入第一数据写入端,并由第一数据写入端将该响应报文写入第一本地kafka集群。

其中,一种可选的实现方式是,本申请中的第一数据中心,即本地数据中心,还包括第一监控中心,则本申请还包括:

利用第一监控中心记录在预设时间内未返回确认接收消息的请求报文,并在符合预设第一监控告警条件时进行告警。

在实际应用中,本地数据中心通过第一数据分发端、第一数据写入端和第一本地kafka集群将来自客户端的请求报文发送至异地数据中心后,理论上,异地数据中心在接收到请求报文后,应该在预设时间内向本地数据中心发送该请求报文的确认接收消息,如果在预设时间内本地数据中心未收到异地数据中心发送的请求报文的确认接收消息或者接收到是异地数据中心发送的请求报文的接收失败的消息,则该请求报文对应的数据交易可能为可疑交易。

因此,本申请可以通过预先设置的第一监控中心,记录在预设时间内异地数据中心未返回确认接收消息的请求报文,并在符合预设第一监控告警条件时进行告警,其中,第一监控告警条件是预先在本地数据中心设置的可疑报文需要符合的条件,例如可以是请求报文接收失败的消息条数达到预设的阈值,如阈值可以设置为10条,则当请求报文接收失败的消息条数达到10条时,即可进行告警。

通过步骤203,将响应报文写入第一本地kafka集群后,可继续执行步骤204。

步骤204:第一本地kafka集群将响应报文发送至第二数据中心,以便第二数据中心存储请求报文和响应报文的映射关系。

在实际应用中,通过步骤203,将响应报文写入第一本地kafka集群后,进一步的,第一本地kafka集群可以将响应报文发送至第二数据中心,即异地数据中心,以便于异地数据中心存储请求报文和响应报文的映射关系。

可见,本申请实施例提供的数据同步方法,应用于第一数据中心,该第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群,其中,第一数据分发端接收来自客户端的请求报文后,将请求报文发送至第一数据写入端,并由第一数据写入端将请求报文写入第一本地kafka集群,然后,第一本地kafka集群将请求报文发送至第二数据中心,以便将请求报文同步至第二数据中心,进而,当第一数据分发端接收到请求报文对应的响应报文,且接收到来自第二数据中心对请求报文的确认接收消息后,将响应报文写入第一数据写入端,并由第一数据写入端将响应报文写入第一本地kafka集群;接着,第一本地kafka集群将响应报文发送至第二数据中心,以便第二数据中心存储请求报文和响应报文的映射关系。可见,当第二数据中心为第一数据中心的异地备份数据中心时,可以利用本申请提供的数据同步方法,将本地数据中心的请求报文和响应报文的映射关系及时同步到异地数据中心,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

为便于理解本申请提供的数据同步方法,参见图5,其示出了本申请实施例提供的数据同步方法的交互过程示意图,可以包括以下步骤:

步骤501:客户端将请求报文发送至本地数据中心的第一数据分发端。

步骤502:第一数据分发端接收来自客户端的请求报文后,将其发送至第一数据写入端。

步骤503:第一数据写入端将请求报文写入第一本地kafka集群。

步骤504:第一本地kafka集群将请求报文发送至异地数据中心,以便将请求报文同步至第二数据中心。

步骤505:异地数据中心将请求报文的确认接收消息发送至本地数据中心。

步骤506:第一数据分发端接收到请求报文的响应报文,且接收到来自异地数据中心对请求报文的确认接收消息后,将响应报文写入第一数据写入端。

步骤507:第一数据写入端将响应报文写入第一本地kafka集群。

步骤508:第一本地kafka集群将响应报文发送至异地数据中心。

步骤509:异地数据中心存储请求报文和响应报文的映射关系。

从而实现了将请求报文和响应报文的映射关系,从本地数据中心同步到异地数据中心,即及时将数据同步至异地数据中心,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

需要说明的是,与上述实施例中将请求报文和响应报文的映射关系,从第一数据中心同步到第二数据中心相类似,同理,也可以将请求报文和响应报文的映射关系,从第二数据中心同步到第一数据中心,具体实现过程可参照步骤201~步骤204,在此不再赘述。

通过本申请上述实施例,可以实现将请求报文和响应报文的映射关系,从本地数据中心同步到异地数据中心,进而在地域性灾难发生时,在进行异地数据中心切换时,不会出现延时,并且可以通过数据重放的方法,在异地数据中心的数据库中产生交易数据信息,从而才可以顺利由异地数据中心接管银行的所有交易请求,并基于数据库中产生的与本地数据中心相同的交易数据信息,为客户提供可靠的金融服务。

而为了在异地数据中心的数据库中产生与本地数据中心相同的交易数据信息,进而基于该交易数据信息,在完成切换后,为客户提供可靠的金融服务。异地数据中心需要对响应成功的请求报文进行数据重放,才能在数据库中产生与本地数据中心相同的交易数据信息,以下将结合附图对本申请提供的数据重放方法进行详细说明。

参见图6,其示出了本申请实施例提供的一种数据重放方法的流程图,如图6所示,该方法包括:

步骤601:第二数据写入端从第二本地kafka集群中读取请求报文和响应报文的映射关系,并将响应报文为响应成功的请求报文发送至第二数据分发端。

在本申请实施例中,第二数据中心指的就是银行异地数据中心,包含有第二数据分发端、第二数据写入端和第二本地kafka集群,其中,第一数据分发端指的是进行数据处理的数据路由平台,第二本地kafka集群中存储有请求报文和响应报文的映射关系,该请求报文和响应报文的映射关系是通过上述实施例中的数据同步方法获得的。

在实际应用中,当本地数据中心发生地域级灾难时,手工触发数据中心灾难处理,通过异地数据中心的注册中心调用数据重放应用,即执行数据重放方法,通过第二数据写入端从第二本地kafka集群中读取请求报文和响应报文的映射关系后,对该响应报文的响应码进行判断,如果判断为成功响应,则进行交易的数据重放,也就是将响应成功的请求报文发送至第二数据分发端;若为失败响应或响应结果为空,则进行下一对请求报文和响应报文的处理。

也就是说,为了在地域性灾难发生时,可以切换至异地数据中心,为客户提供可靠的金融服务,异地数据中心需要在数据库中产生与本地数据中心相同的交易数据信息,进而才可以基于该交易数据信息,在完成切换后,为客户提供可靠的金融服务。因此,异地数据中心为了在数据库中产生与本地数据中心相同的交易数据信息,需要对响应成功的请求报文进行数据重放,才能在数据库中产生与本地数据中心相同的交易数据信息,而对于响应不成功的请求报文则不需要进行数据重放,这是因为响应不成功的请求报文对在数据库中产生的交易数据信息没有任何影响,所以异地数据中心也不需要存储其对应的交易数据信息,所以,不需要对响应不成功的请求报文进行数据重放。

步骤602:第二数据写入端接收来自第二数据分发端对请求报文的重放响应报文。

在实际应用中,通过步骤601,第二数据分发端获取到响应报文为响应成功的请求报文后,将该请求报文发送至异地数据中心的核心系统等待响应结果,进一步的,可以将接收到异地数据中心的核心系统反馈的该请求报文的重放响应报文与该请求报文的响应报文进行对比,如果对比结果一致,则说明异地数据中心对该请求报文的处理结果与本地数据中心对该请求报文的处理结果一致,表明该请求报文是正常报文数据,可以将该数据重放结果反馈到异地数据中心的第二数据写入端,进而,第二数据写入端接收到来自第二数据分发端对请求报文的重放响应报文后,可以用页面方式将数据重放结果汇总展示,结束流程。

在本申请一些可能的实现方式中,本申请的第二数据中心,即异地数据中心还包括第二监控中心,则本申请还包括:

第二数据写入端将重放响应报文与响应报文进行比对,如果不同,则第二监控中心记录这些请求报文,并在符合预设第二监控告警条件时进行告警。

在上述步骤602中,如果异地数据中心的核心系统反馈的请求报文的重放响应报文与响应报文对比结果不一致,则说明异地数据中心对该请求报文的处理结果与本地数据中心对该请求报文的处理结果不一致,表明该请求报文为可疑报文,需要进行监控,则第二监控中心可以将这些响应报文不一致的请求报文作为可疑报文记录下来,并在符合预设第二监控告警条件时进行告警,其中,第二监控告警条件是预先在异地数据中心设置的可疑报文需要符合的条件,例如可以是请求报文重放失败的次数达到预设的阈值,如阈值可以设置为3次,则当请求报文重放失败的次数达到3次时,即可进行告警,表明该请求报文对应的交易为可疑交易,需要进行人工处理。

这样,在本申请提供的数据重放方法中,第二数据中心的第二数据写入端从第二本地kafka集群中读取请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至第二数据分发端,接着,第二数据写入端接收来自第二数据分发端对所述请求报文的重放响应报文,可见,本申请实施例通过在异地数据中心进行数据重放的方法,在异地数据中心数据库中产生了与本地数据中心数据库相同的数据信息,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

基于上述数据同步方法,本申请还提供了一种数据同步装置,如图7所示,所述装置应用于第一数据中心700,所述第一数据中心700包括第一数据分发端701、第一数据写入端702和第一本地kafka集群703;

所述第一数据分发端701,用于接收来自客户端的请求报文后,将所述请求报文发送至第一数据写入端702,并由所述第一数据写入端702将所述请求报文写入所述第一本地kafka集群703;

所述第一本地kafka集群703,用于将所述请求报文发送至第二数据中心,以便将所述请求报文同步至所述第二数据中心,所述第二数据中心为所述第一数据中心的异地数据中心;

所述第一数据分发端701,还用于在接收到所述请求报文对应的响应报文,且接收到来自所述第二数据中心对所述请求报文的确认接收消息后,将所述响应报文写入所述第一数据写入端702,并由所述第一数据写入端702将所述响应报文写入所述第一本地kafka集群703;

所述第一本地kafka集群703,还用于将所述响应报文发送至所述第二数据中心,以便所述第二数据中心存储所述请求报文和所述响应报文的映射关系。

可选地,所述第一数据分发端701,还用于判断所述请求报文是否属于预设的待同步报文类型;如果是,则继续执行所述将所述请求报文发送至第一数据写入端702的步骤。

可选地,所述第一数据中心700还包括第一监控中心;

所述第一监控中心,用于记录在预设时间内未返回确认接收消息的请求报文,并在符合预设第一监控告警条件时进行告警。

可见,本申请实施例提供的数据同步装置,应用于第一数据中心,该第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群,其中,第一数据分发端接收来自客户端的请求报文后,将请求报文发送至第一数据写入端,并由第一数据写入端将请求报文写入第一本地kafka集群,然后,第一本地kafka集群将请求报文发送至第二数据中心,以便将请求报文同步至第二数据中心,进而,当第一数据分发端接收到请求报文对应的响应报文,且接收到来自第二数据中心对请求报文的确认接收消息后,将响应报文写入第一数据写入端,并由第一数据写入端将响应报文写入第一本地kafka集群;接着,第一本地kafka集群将响应报文发送至第二数据中心,以便第二数据中心存储请求报文和响应报文的映射关系。可见,当第二数据中心为第一数据中心的异地备份数据中心时,可以利用本申请提供的数据同步方法,将本地数据中心的请求报文和响应报文的映射关系及时同步到异地数据中心,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

基于上述数据重放方法,本申请还提供了一种数据重放装置,如图8所示,所述装置应用于第二数据中心800;所述第二数据中心800包括第二数据分发端801、第二数据写入端802和第二本地kafka集群803,所述第二本地kafka集群803中存储有所述请求报文和所述响应报文的映射关系,所述请求报文和所述响应报文的映射关系是通过上述数据同步装置获得的;

所述第二数据写入端802,用于从所述第二本地kafka集群803中读取所述请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至所述第二数据分发端801;以及接收来自所述第二数据分发端801对所述请求报文的重放响应报文。

可选地,所述第二数据中心800还包括第二监控中心;

所述第二数据写入端802,还用于将所述重放响应报文与所述响应报文进行比对;

所述第二监控中心,用于在所述第二数据写入端802将所述重放响应报文与所述响应报文进行比对的结果为不同时,记录所述请求报文,并在符合预设第二监控告警条件时进行告警。

这样,在本申请提供的数据重放装置中,第二数据中心的第二数据写入端从第二本地kafka集群中读取请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至第二数据分发端,接着,第二数据写入端接收来自第二数据分发端对所述请求报文的重放响应报文,可见,本申请实施例通过在异地数据中心进行数据重放的方式,在异地数据中心数据库中产生了与本地数据中心数据库相同的数据信息,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

参见图9,本申请提供了一种数据同步系统实施例,所述数据同步系统900包括第一数据中心700和第二数据中心800,所述第一数据中心700包括第一数据分发端701、第一数据写入端702和第一本地kafka集群703;所述第二数据中心800包括第二数据分发端801、第二数据写入端802和第二本地kafka集群803;

所述第一数据分发端701,用于接收来自客户端的请求报文后,将所述请求报文发送至第一数据写入端702,并由所述第一数据写入端702将所述请求报文写入所述第一本地kafka集群703;

所述第一本地kafka集群703,用于将所述请求报文发送至第二数据中心800,以便将所述请求报文同步至所述第二数据中心800,所述第二数据中心800为所述第一数据中心700的异地数据中心;

所述第一数据分发端701,还用于在接收到所述请求报文对应的响应报文,且接收到来自所述第二数据中心800对所述请求报文的确认接收消息后,将所述响应报文写入所述第一数据写入端702,并由所述第一数据写入端702将所述响应报文写入所述第一本地kafka集群703;

所述第一本地kafka集群703,还用于将所述响应报文发送至所述第二数据中心800,以便所述第二数据中心800将所述请求报文和所述响应报文的映射关系存储于所述第二本地kafka集群803;

所述第二数据写入端802,用于从所述第二本地kafka集群803中读取所述请求报文和所述响应报文的映射关系,并将响应报文为响应成功的请求报文发送至所述第二数据分发端801;以及接收来自所述第二数据分发端801对所述请求报文的重放响应报文。

可见,本申请实施例提供的数据同步系统,包括第一数据中心和第二数据中心,第一数据中心包括第一数据分发端、第一数据写入端和第一本地kafka集群;第二数据中心包括第二数据分发端、第二数据写入端和第二本地kafka集群,其中,第一数据分发端接收来自客户端的请求报文后,将请求报文发送至第一数据写入端,并由第一数据写入端将请求报文写入第一本地kafka集群,然后,第一本地kafka集群将请求报文发送至第二数据中心,以便将请求报文同步至第二数据中心。

进而,当第一数据分发端接收到请求报文对应的响应报文,且接收到来自第二数据中心对请求报文的确认接收消息后,将响应报文写入第一数据写入端,并由第一数据写入端将响应报文写入第一本地kafka集群;接着,第一本地kafka集群将响应报文发送至第二数据中心,以便第二数据中心存储请求报文和响应报文的映射关系存储于第二本地kafka集群;最后,第二数据写入端可以从第二本地kafka集群中读取请求报文和响应报文的映射关系,并将响应报文为响应成功的请求报文发送至第二数据分发端,还可以接收来自第二数据分发端对请求报文的重放响应报文。可见,当第二数据中心为第一数据中心的异地备份数据中心时,可以利用本申请提供的数据同步系统,将本地数据中心的请求报文和响应报文的映射关系及时同步到异地数据中心,并且可以利用数据重放的方式,在异地数据中心数据库中产生与本地数据中心数据库相同的数据信息,进而最大程度的保证在地域性灾难发生时,异地数据中心能够为客户提供可靠的金融服务。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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