一种业务的处理方法、装置、设备及系统
技术领域
本说明书涉及计算机技术领域,尤其涉及一种业务的处理方法、装置、设备及系统。
背景技术
容灾能力是一个核心系统必须具备的能力,容灾能力需要具备在部分区域发生某功能或业务等不可用时可以利用容灾能力进行功能或业务切换,而通过另一个机房中的服务器的能力提供相关服务的能力。
目前,同城容灾能力在大型的金融公司或者银行等机构已经基本具备,这样,当同城内的某一个机房中的服务器无法提供某功能或业务的相关服务时,可以直接切换到同城内的另一个机房继续提供某功能或业务的相关服务。而对于异地容灾能力的建设也非常重要,在发生城市级灾难导致某功能或业务等在某个城市内无法提供相关服务(或相关服务不可用)时,需要同样具备能力恢复全部或者绝大部分该相关服务,因此,异地容灾能力的建设也显得非常必要,基于此,需要提供一种异地容灾机制以应对如发生城市级灾难而导致相关服务不可用等问题。
发明内容
本说明书实施例的目的是提供一种业务的处理方法、装置、设备及系统,以提供一种异地容灾机制以应对如发生城市级灾难而导致相关服务不可用等问题。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种业务的处理方法,应用于处于预定区域范围内的第一服务器,所述方法包括:
接收目标业务的业务请求,所述业务请求中包括账户标识;
基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,以使所述第二服务器存储或更新所述目标账户信息,其中,所述第二服务器处于所述预定区域范围之外。
可选地,所述基于所述业务请求执行所述目标业务,包括:
基于所述业务请求执行所述目标业务,得到执行结果;
回调所述第二服务器存储或更新所述目标账户信息的状态信息,并根据回调的所述状态信息和所述执行结果,确定执行所述目标业务是否成功,其中,所述状态信息包括存储或更新成功,或者存储或更新失败,或者超时。
可选地,所述基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,包括:
如果所述状态信息为存储或更新失败或超时,基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
可选地,所述基于所述业务请求执行所述目标业务,得到执行结果,包括:
根据所述业务请求,调用所述目标业务的第三服务器执行所述目标业务,得到执行结果,其中,所述第三服务器是所述预定区域范围内除所述第一服务器之外的其它服务器。
可选地,所述将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,包括:
通过异步RPC接口,将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
本说明书实施例提供的一种业务的处理方法,应用于处于预定区域范围之外的第二服务器,所述方法包括:
接收目标业务的第一服务器发送的目标账户信息,所述目标账户信息是所述第一服务器在接收到所述目标业务的业务请求时,根据所述业务请求中包含的账户标识获取并发送的信息,所述第一服务器处于所述预定区域范围内;
如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;
如果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
可选地,所述方法还包括:
当到达预定的数据库同步周期时,将所述目标业务对应的主数据库中的数据与本地的备份数据库中的数据进行同步处理,其中,所述主数据库中包括所述账户标识对应的账户信息。
可选地,所述方法还包括:
当所述第一服务器异常时,获取发送给所述第一服务器的所述目标业务的业务请求,所述业务请求中包括所述账户标识;
根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;
如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
可选地,所述根据所述账户标识对所述账户标识对应的账户信息进行初始化处理,包括:
根据所述账户标识,查找所述冗余数据库和所述备份数据库中是否包含所述账户标识;
如果所述冗余数据库中包含所述账户标识,所述备份数据库中未包含所述账户标识,则将所述冗余数据库中所述账户标识对应的所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
可选地,所述方法还包括:
如果所述冗余数据库中未包含所述账户标识,所述备份数据库中包含所述账户标识,则获取所述备份数据库对应的延迟时长;
如果所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功。
可选地,所述方法还包括:
如果所述冗余数据库和所述备份数据库中均包含所述账户标识,则确定所述冗余数据库存储所述目标账户信息的第一时间,以及所述备份数据库存储所述账户标识对应的账户信息的第二时间;
如果所述第二时间在所述第一时间之前,且所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功;
如果所述第一时间在所述第二时间之前,则将所述冗余数据库中所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例提供的一种业务的处理装置,所述装置包括:
请求接收模块,用于接收目标业务的业务请求,所述业务请求中包括账户标识;
处理模块,用于基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,以使所述第二服务器存储或更新所述目标账户信息,其中,所述第二服务器处于所述预定区域范围之外。
可选地,所述处理模块,包括:
业务执行单元,用于基于所述业务请求执行所述目标业务,得到执行结果;
回调单元,用于回调所述第二服务器存储或更新所述目标账户信息的状态信息,并根据回调的所述状态信息和所述执行结果,确定执行所述目标业务是否成功,其中,所述状态信息包括存储或更新成功,或者存储或更新失败,或者超时。
可选地,所述处理模块,用于如果所述状态信息为存储或更新失败或超时,基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
可选地,所述业务执行单元,用于根据所述业务请求,调用所述目标业务的第三服务器执行所述目标业务,得到执行结果,其中,所述第三服务器是所述预定区域范围内除所述第一服务器之外的其它服务器。
可选地,所述处理模块,用于通过异步RPC接口,将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
本说明书实施例提供的一种业务的处理装置,所述装置包括:
信息接收模块,用于接收目标业务的第一服务器发送的目标账户信息,所述目标账户信息是所述第一服务器在接收到所述目标业务的业务请求时,根据所述业务请求中包含的账户标识获取并发送的信息,所述第一服务器处于所述预定区域范围内;
存储模块,用于如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;
更新模块,用于如果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
可选地,所述装置还包括:
同步模块,用于当到达预定的数据库同步周期时,将所述目标业务对应的主数据库中的数据与本地的备份数据库中的数据进行同步处理,其中,所述主数据库中包括所述账户标识对应的账户信息。
可选地,所述装置还包括:
请求获取模块,用于当所述第一服务器异常时,获取发送给所述第一服务器的所述目标业务的业务请求,所述业务请求中包括所述账户标识;
第一初始化模块,用于根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;
业务执行模块,用于如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
可选地,所述第一初始化模块,包括:
查找单元,用于根据所述账户标识,查找所述冗余数据库和所述备份数据库中是否包含所述账户标识;
初始化单元,用于如果所述冗余数据库中包含所述账户标识,所述备份数据库中未包含所述账户标识,则将所述冗余数据库中所述账户标识对应的所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
可选地,所述装置还包括:
延迟获取模块,用于如果所述冗余数据库中未包含所述账户标识,所述备份数据库中包含所述账户标识,则获取所述备份数据库对应的延迟时长;
第二初始化模块,用于如果所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功。
可选地,所述装置还包括:
存储时间确定模块,用于如果所述冗余数据库和所述备份数据库中均包含所述账户标识,则确定所述冗余数据库存储所述目标账户信息的第一时间,以及所述备份数据库存储所述账户标识对应的账户信息的第二时间;
第三初始化模块,用于如果所述第二时间在所述第一时间之前,且所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功;
第四初始化模块,用于如果所述第一时间在所述第二时间之前,则将所述冗余数据库中所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例提供的一种业务的处理设备,所述业务的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
接收目标业务的业务请求,所述业务请求中包括账户标识;
基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,以使所述第二服务器存储或更新所述目标账户信息,其中,所述第二服务器处于所述预定区域范围之外。
本说明书实施例提供的一种业务的处理设备,所述业务的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
接收目标业务的第一服务器发送的目标账户信息,所述目标账户信息是所述第一服务器在接收到所述目标业务的业务请求时,根据所述业务请求中包含的账户标识获取并发送的信息,所述第一服务器处于所述预定区域范围内;
如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;
如果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
本说明书实施例提供的一种业务的处理系统,所述业务的处理系统包括处于预定区域范围内的至少一个第一服务器、处于所述预定区域范围之外的至少一个第二服务器和流量管控设备,其中;
所述流量管控设备,用于接收目标业务的业务请求,如果所述目标业务的第一服务器正常,则将所述业务请求发送给所述第一服务器,所述业务请求中包括账户标识;
所述第一服务器,用于基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器;
所述第二服务器,用于如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
可选地,所述流量管控设备,还用于当所述目标业务的所述第一服务器出现异常时,将所述业务请求发送给所述第二服务器;
所述第二服务器,还用于根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
可选地,所述流量管控设备,还用于当所述目标业务的所述第一服务器出现异常时,根据预定选取规则,从所述第二服务器中选取一个第二服务器,并将所述业务请求发送给选取的所述第二服务器。
由以上本说明书实施例提供的技术方案可见,本说明书实施例可以应用于处于预定区域范围内的第一服务器,通过在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一种业务的处理方法实施例;
图2为本说明书一种业务的处理系统的结构示意图;
图3为本说明书另一种业务的处理方法实施例;
图4为本说明书又一种业务的处理方法实施例;
图5为本说明书一种业务的处理装置实施例;
图6为本说明书一种业务的处理装置实施例;
图7为本说明书一种业务的处理设备实施例;
图8为本说明书一种业务的处理设备实施例;
图9为本说明书另一种业务的处理系统的结构示意图。
具体实施方式
本说明书实施例提供一种业务的处理方法、装置、设备及系统。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
实施例一
如图1所示,本说明书实施例提供一种业务的处理方法,该方法的执行主体可以为处于预定区域范围内的第一服务器,例如某城市内的服务器等,其中,第一服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,第一服务器可以是某网站(如网络购物网站或购物应用等)的后台服务器或某业务(如金融业务等)的服务器等。该方法可以提供一种异地容灾机制以应对如发生城市级灾难而导致相关服务不可用等问题。该方法具体可以包括以下步骤:
在步骤S102中,接收目标业务的业务请求,该业务请求中包括账户标识。
其中,目标业务可以是任意业务,例如支付业务、转账业务、充值业务或收款业务等金融类业务,还可以是如网站登录或信息修改等其它业务等。账户标识可以是用户账户的名称或编码等,例如用户设定的用户名、昵称,或者用户的姓名、身份证号码、社保卡号码或银行卡号码等。不同的用户,其账户标识可以不同。
在实施中,容灾能力是一个核心系统必须具备的能力,容灾能力需要具备在部分区域发生某功能或业务等不可用时可以利用容灾能力进行功能或业务切换,而通过另一个机房中的服务器的能力提供相关服务的能力。其中,容灾可以是在无法正常提供服务时通过备份或者其他手段将某功能或业务等对应的服务恢复的手段和能力。目前,同城容灾能力在大型的金融公司或者银行等机构已经基本具备,这样,当同城内的某一个机房中的服务器无法提供某功能或业务的相关服务时,可以直接切换到同城内的另一个机房继续提供某功能或业务的相关服务。而对于异地容灾能力的建设也非常重要,在发生城市级灾难导致某功能或业务等在某个城市内无法提供相关服务(或相关服务不可用)时,需要同样具备能力恢复全部或者绝大部分该相关服务,因此,可以通过一定的技术手段,实现城市级别的容灾能力,即当一个城市的服务器和数据库无法提供某功能或某业务等相关服务时,能够通过另一个城市的服务器提供相关服务,且能够达到基本无损,基于此,异地容灾能力的建设也显得非常必要,为此,本说明书实施例提供一种异地容灾机制,具体可以包括以下内容:
技术人员可以基于某功能或业务开发相应的应用程序,例如用于支付的应用程序等,如果用户需要使用该应用程序执行相应的业务,则用户可以通过该应用程序提供的注册机制进行注册,通过注册,该用户可以提交用户的姓名、身份证件信息(可以包括身份证号码、住址等信息),该用户还可以设置用户名、昵称和登录账号等,该应用程序的后台服务器可以将上述注册信息进行存储,并可以通过上述信息生成该用户的账户信息,该用户的账户信息中可以包括账户标识和账户的其它相关信息(例如账户中的余额信息、绑定的信息(如绑定的银行卡号码和/或绑定的手机号码等)和支付方式等)。
当用户需要请求某项业务(即目标业务)的相关服务时,可以启动终端设备中安装的该应用程序,该应用程序可以从其后台服务器中获取该应用程序首页的数据,其中的后台服务器可以从距离该用户较近的区域内选取的,为该用户提供相关服务的服务器(通常可以是同城服务器),具体如,可以通过终端设备使用的IP地址确定用户所处的区域(如城市等),然后,在该区域内选取一个机房中的服务器为该用户提供相应服务。该首页中可以包括用户需要请求的目标业务的服务入口,用户可以先通过登录账号等进行登录,并可以通过上述服务入口进入目标业务的页面,目标业务中可以包括多项事务,当用户需要进行某项事务时,可以点击目标业务的页面中提供的该事务的链接,终端设备可以获取该用户的账户标识(如用户名、昵称,或者用户的姓名、身份证号码或银行卡号码等)等,并可以通过上述信息生成目标业务的业务请求发送给处于预定区域范围内(如某城市范围内或预先指定的某地理区域范围内等)的第一服务器,第一服务器可以接收该目标业务的业务请求。
在步骤S104中,基于上述业务请求执行上述目标业务,并将上述账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新该目标账户信息,其中,第二服务器处于预定区域范围之外。
其中,目标账户信息可以上述账户标识对应的账户信息,目标账户信息可以包括多种不同的信息,例如,可以包括如账户标识和账户的其它相关信息,其中的其它相关信息可以如账户中的余额信息、绑定的银行卡信息、绑定的手机号码和支付方式等。预定区域范围可以根据实际情况设定,例如以城市为划分基准的区域范围,则预定区域范围内,可以为某城市范围内,可以称为同城,相应的,预定区域范围之外,可以为某城市范围之外的其它城市(可以包括一个或多个城市),可以称为异地,在实际应用中,区域范围的划分并不限于上述以城市为划分基准的方式,还可以通过其它多种方式进行划分,本说明书实施例对此不做限定。第二服务器可以是为用户提供目标业务的相关服务的服务器,并且,第二服务器与第一服务器未处于同一预定区域范围内,例如,第一服务器为上海市某机房中的服务器,第二服务器可以是深圳市某机房中的服务器等。
在实施中,如图2所示,第一服务器接收到目标业务的业务请求后,可以分析该业务请求所针对的事务,然后,可以开启该事务,可以通过该事务的处理逻辑执行相应的处理,从而执行目标业务。例如,该业务请求可以指示向用户B转账100元,第一服务器通过分析该业务请求,可以确定该业务请求所针对的事务为转账事务,此时,可以通过账户标识获取相应的目标账户信息,并启动转账事务,并通过转账事务的处理逻辑,通过目标账户信息向用户B的账户进行转账,从而达到执行目标业务的目的。同时,第一服务器还可以将账户标识对应的目标账户信息发送给异地的第二服务器进行存储。
由于经常使用第一服务器的用户的账户信息被备份到异地的第二服务器中,当预定区域范围内的服务器(如同城的服务器)均出现异常时,可以将预定区域范围内的业务请求切换到异地的第二服务器,从而使得预定区域范围内的用户仍然可以正常访问目标业务,提高用户体验。
如图3所示,本说明书实施例提供一种业务的处理方法,该方法的执行主体可以为处于预定区域范围之外的第二服务器,其中的预定区域范围可以是某城市内等,则预定区域范围之外可以是某城市外的其它一个或多个城市等,其中的第二服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,第二服务器可以是某网站(如网络购物网站或购物应用等)的后台服务器或可以是某业务(如金融业务等)的服务器等。该方法可以提供一种异地容灾机制以应对如发生城市级灾难而导致相关服务不可用等问题。该方法具体可以包括以下步骤:
在步骤S302中,接收目标业务的第一服务器发送的目标账户信息,该目标账户信息是第一服务器在接收到目标业务的业务请求时,根据该业务请求中包含的账户标识获取并发送的信息,第一服务器处于预定区域范围内。
在实施中,可以为与第一服务器对应的预定区域范围之外的第二服务器设置冗余数据存储机制,通过该冗余数据存储机制可以接收第一服务器发送的账户信息,并将其存储在指定存储区域内。为了能够很好的实现上述冗余数据存储机制,可以在第二服务器中设置数据冗余模块,可以通过该数据冗余模块执行接收第一服务器发送的账户信息,并将其存储在指定存储区域内等处理。
在步骤S304中,如果冗余数据库中不包含上述账户标识对应的账户信息,则将目标账户信息存储到冗余数据库中。
其中,冗余数据库可以是设置于异地(即预定区域范围之外)的服务器上,用于存储属于预定区域范围内的服务器的账户信息的数据库,其中,对于预定区域范围之外的服务器来说,预定区域范围内的服务器中的数据是不常用的。
在实施中,第二服务器接收到目标账户信息后,可以提取该目标账户信息中包含的账户标识,然后,可以通过该账户标识在冗余数据库中进行查找,确定冗余数据库中是否包含该账户标识,以及该账户标识对应的账户信息,如果冗余数据库中不包含该账户标识,或不包含该账户标识对应的账户信息,则可以将目标账户信息存储到冗余数据库中。
在步骤S306中,如果冗余数据库中包含上述账户标识对应的账户信息,则使用目标账户信息对冗余数据库中该账户标识对应的账户信息进行更新。
在实施中,第二服务器接收到目标账户信息后,可以提取该目标账户信息中包含的账户标识,然后,可以通过该账户标识在冗余数据库中进行查找,确定冗余数据库中是否包含该账户标识,以及该账户标识对应的账户信息,如果冗余数据库中包含该账户标识,并且包含该账户标识对应的账户信息,则可以获取冗余数据库中包含的该账户标识对应的账户信息的时间戳,以及目标账户信息的时间戳,可以将上述两个时间戳进行比对,如果目标账户信息的时间戳距离当前时刻最近,则可以使用目标账户信息对冗余数据库中该账户标识对应的账户信息进行更新替换,否则,可以丢弃目标账户信息。
由于经常使用第一服务器的用户的账户信息被备份到异地的第二服务器中,且第二服务器中存储的用户的账户信息往往是最新的,因此,当预定区域范围内的服务器(如同城的服务器)均出现异常时,可以将预定区域范围内的业务请求切换到异地的第二服务器,从而使得预定区域范围内的用户仍然可以正常访问目标业务,提高用户体验。
本说明书实施例提供一种业务的处理方法,可以应用于处于预定区域范围内的第一服务器,通过在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
实施例二
如图4所示,本说明书实施例提供一种业务的处理方法,该方法可以由处于预定区域范围内的第一服务器和处于预定区域范围之外的第二服务器共同执行,其中,其中的预定区域范围可以是某城市内等,则预定区域范围之外可以是某城市外的其它一个或多个城市等,第一服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,第一服务器可以是某网站(如网络购物网站或购物应用等)的后台服务器或某业务(如金融业务等)的服务器等。第二服务器也可以是独立的服务器,还可以是由多个服务器组成的服务器集群,而且,第二服务器也可以是某网站(如网络购物网站或购物应用等)的后台服务器或可以是某业务(如金融业务等)的服务器等该方法可以提供一种异地容灾机制以应对如发生城市级灾难而导致相关服务不可用等问题。
第一服务器和第二服务器可以是提供相同业务服务的服务器,仅是两服务器的所处的区域范围不同。第二服务器为预定区域范围之外的服务器,在实际应用中,预定区域范围之外的区域还可以划分为多个不同的区域,第二服务器可以是其中划分出的一个区域内的服务器,还可以是划分出的多个区域内的服务器,例如,第一服务器是位于上海市的服务器,第二服务器可以是位于深圳市的服务器,或者,第二服务器可以包括位于深圳市的服务器和位于北京市的服务器等。不同的第一服务器可以预先设置不同区域范围的第二服务器,当选择使用第二服务器时,可以通过预定的选取规则(如根据与第一服务器之间的距离远近选取等)进行选取,也可以随机选取等。该方法具体可以包括以下步骤:
在步骤S402中,第一服务器接收目标业务的业务请求,该业务请求中包括账户标识。
在步骤S404中,第一服务器通过异步RPC接口,将上述账户标识对应的目标账户信息发送给目标业务的第二服务器。
其中,异步RPC(Remote Procedure Call,远程过程调用)接口可以是一种服务调用方式接口,异步RPC接口可以通过异步线程的方式调用服务,但不阻断主处理流程,从而达到降级时延的目的。
在实施中,可以为第一服务器设置异步处理机制,为此,可以在第一服务器中设置异步RPC模块,通过异步RPC模块可以设置异步RPC接口。第一服务器可以从接收到的业务请求中提取账户标识,然后,可以从目标业务对应的主数据库中获取该账户标识对应的目标账户信息,异步RPC模块可以将该目标账户信息通过异步RPC接口以RPC异步方式发送到异地的第二服务器。这样,通过异步的方式可以不影响主处理流程(即下述步骤S406的处理过程)的执行,从而可以达到降级时延的目的。
在步骤S406中,第一服务器基于上述业务请求执行目标业务,得到执行结果。
在实施中,如果接收业务请求的第一服务器未出现异常,则第一服务器基于上述业务请求执行目标业务,得到执行结果,具体处理过程可以参见上述实施例一中步骤S104的相关内容,在此不再赘述。
如果接收业务请求的第一服务器出现异常,则可以检测预定区域范围内的其它服务器是否正常,如果检测到预定区域范围内存在正常的服务器,则上述步骤S406的处理可以通过以下方式处理,具体可以包括以下内容:根据上述业务请求,调用目标业务的第三服务器执行目标业务,得到执行结果,其中,第三服务器是处于预定区域范围内除第一服务器之外的其它服务器。
在实施中,通常,预定区域范围内会包含多个服务器机房,例如可以在一个城市中的多个不同位置分别设置服务器机房,从而实现同城容灾,具体地,如果第一服务器出现异常,则第一服务器可以调用目标业务的第三服务器,以使得第三服务器根据该业务请求执行目标业务,其中根据该业务请求执行目标业务的具体处理过程可以参见上述实施例一中步骤S104的相关内容,在此不再赘述。
需要说明的是,如果第一服务器在接收到业务请求之前就已经出现异常,则可以由预定区域范围内的网关等流量管控设备将发送给第一服务器的业务请求转发给第三服务器,第三服务器根据该业务请求执行目标业务,得到相应的执行结果。
为了保证存储到主数据库中的成功交易的数据一定能够通过异步RPC接口写入异地的第二服务器的能力,可以通过回调第二服务器存储或更新目标账户信息的状态信息进行相应的处理,具体可以参见下述步骤S408和步骤S410的处理。
在步骤S408中,第一服务器回调第二服务器存储或更新目标账户信息的状态信息,并根据回调的上述状态信息和上述执行结果,确定执行目标业务是否成功,其中,该状态信息包括存储或更新成功,或者存储或更新失败,或者超时。
其中,超时可以是超过预定时长,例如超过3分钟或5分钟等。
在实施中,可以预先设定回调周期或回调时长,当到达预定的回调周期或回调时长时,可以回调第二服务器存储或更新目标账户信息的状态信息,该状态信息可以包括存储或更新成功、存储或更新失败和超时等。如果上述状态信息为存储或更新成功,则表明第二服务器已经成功存储或更新了目标账户信息,此时,可以确定执行目标业务成功,第一服务器可以继续执行后续的其它处理过程。如果上述状态信息为存储或更新失败,则表明第二服务器存储或更新目标账户信息失败,此时,可以确定执行目标业务失败,从而可以保证第一服务器和第二服务器中存储的账户信息的一致性。如果上述状态信息为超时,则表明第二服务器存储或更新目标账户信息失败,此时,可以确定执行目标业务失败。
在步骤S410中,如果上述状态信息为存储或更新失败或超时,第一服务器基于上述业务请求执行目标业务,并将上述账户标识对应的目标账户信息发送给目标业务的第二服务器。
在实施中,基于上述内容,如果上述状态信息为存储或更新失败或超时,则表明第二服务器存储或更新目标账户信息失败,此时,可以确定执行目标业务失败,然后,第一服务器可以回滚处理,即可以重新执行上述步骤S404,以及步骤S404之后的处理,即第一服务器基于上述业务请求执行目标业务,并将上述账户标识对应的目标账户信息发送给目标业务的第二服务器,具体处理过程可以参见上述相关内容,在此不再赘述。
需要说明的是,上述步骤S404的处理与上述步骤S406~步骤S410的处理是以先后顺序说明的,在实际应用中,步骤S404的处理与上述步骤S406~步骤S410的处理可以同时执行,还可以先执行步骤S406~步骤S410的处理,之后再执行步骤S404,本说明书实施例对上述两个部分的执行顺序不做限定。
在步骤S412中,第二服务器接收目标业务的第一服务器发送的目标账户信息。
在步骤S414中,如果冗余数据库中不包含上述账户标识对应的账户信息,则第二服务器将目标账户信息存储到冗余数据库中。
在步骤S416中,如果冗余数据库中包含上述账户标识对应的账户信息,则第二服务器使用目标账户信息对冗余数据库中该账户标识对应的账户信息进行更新。
在步骤S418中,当到达预定的数据库同步周期时,第二服务器将目标业务对应的主数据库中的数据与本地的备份数据库中的数据进行同步处理,其中,主数据库中包括上述账户标识对应的账户信息。
其中,数据库同步周期可以根据实际情况设定,具体如1秒钟等。
在实施中,可以预先设定主数据库与第二服务器中的备份数据库之间的数据库同步周期。当到达该数据库同步周期时,可以将目标业务对应的主数据库与备份数据库进行数据同步,以使得备份数据库中的数据与主数据库中的数据保持一致。由于主数据库是用户存储目标业务执行的过程中使用和产生的数据的数据库,因此,主数据库中可以存储有上述账户标识对应的账户信息。此外,考虑到备份数据库仅用于数据的备份,因此,可以将备份数据库设置为只读数据库,从而使得其他用户无法修改备份数据库中的数据,以保证用户数据的安全,在实际应用中,该备份数据库还可以称为读库等。
通过上述处理,冗余数据库和备份数据库中均可以存储有用户的账户信息,但是,由于备份数据库与主库数据进行数据同步的过程中会产生同步延迟(一般在毫秒级别),因此,冗余数据库的目的可以是保存那些来不及同步到备份数据库中的账号信息,这样可以保证用户账户信息的准确性。
可以预先设置流量管控设备(如网关等),当某用户发送业务请求时,该流量管控设备可以接收该业务请求,并可以确定该业务请求所属的区域范围,如果该业务请求属于预定区域范围内,则可以检测预定区域范围内的服务器是否正常,如果检测带预定区域范围内的服务器均异常,则可以获取预先设定预定区域范围内的服务器对应的设定预定区域范围之外的服务器(即第二服务器),然后,该流量管控设备可以将该业务请求转发给第二服务器,从而达到异地容灾的目的,具体可以参见下述步骤S420~步骤S424的处理。
在步骤S420中,当第一服务器异常时,第二服务器获取发送给第一服务器的目标业务的业务请求,该业务请求中包括账户标识。
在步骤S422中,第二服务器根据上述账户标识,对该账户标识对应的账户信息进行初始化处理。
在实施中,由于第二服务器需要执行目标业务,而在执行目标业务之前,需要确定请求执行目标业务的用户的账户信息,该账户信息中不仅仅可以包括账户标识,还需要包括账户中的余额信息、绑定的银行卡信息、绑定的手机号码和默认的支付方式等信息,这样,就需要对该账户标识对应的账户信息进行初始化处理。在实际应用中,初始化处理的方式可以包括多种,针对本说明书实施例中的情况,初始化处理的数据来源可以包括两个,一个是冗余数据库,另一个是备份数据库,基于此,可以通过上述冗余数据库中的账户信息进行初始化处理,和/或,可以通过上述备份数据库中的账户信息进行初始化处理等,如果通过冗余数据库或备份数据库无法进行初始化处理,则可以确定无法响应该业务请求,此时,可以向相应的用户发送初始化失败的通知消息。
通过冗余数据库和/或备份数据库中的账户信息进行初始化处理的方式可以多种多样,以下提供一种可选的处理方式,具体可以包括以下步骤一和步骤二。
步骤一,根据上述账户标识,查找冗余数据库和备份数据库中是否包含该账户标识。
步骤二,如果冗余数据库中包含上述账户标识,备份数据库中未包含该账户标识,则将冗余数据库中该账户标识对应的目标账户信息作为初始化数据,并确定上述初始化处理成功。
在实施中,如果只有冗余数据库中包含上述账户标识,备份数据库还未来得及从主数据库中同步到该账户标识,以及该账户标识对应的账户信息,而且,冗余数据库中的数据是第一服务器每次执行业务请求时存储或更新的,因此,冗余数据库中数据应该是最新的,此时,可以将冗余数据库中该账户标识对应的目标账户信息作为初始化数据,以便后续第二服务器可以基于该初始化数据执行目标业务。同时,第二服务器可以确定对该账户标识对应的账户信息进行初始化处理成功。
如果上述账户标识不满足上述步骤二中的条件(即冗余数据库中包含上述账户标识,备份数据库中未包含该账户标识),则第二服务器可以确定无法响应该业务请求,此时,可以向相应的用户发送初始化失败的通知消息。此外,还可以通过其它方式进行初始化处理,具体可以参见下述步骤一和步骤二的处理。
步骤一,如果冗余数据库中未包含上述账户标识,备份数据库中包含该账户标识,则获取备份数据库对应的延迟时长。
在实施中,基于上述相关内容,备份数据库与主数据库之间进行数据同步的过程中存在同步延迟,因此,如果上述账户标识仅包含在备份数据库中,则需要判断备份数据库中的数据是否已同步到最新版本,基于此,可以获取备份数据库对应的延迟时长。
步骤二,如果备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将备份数据库中该账户标识对应的账户信息作为初始化数据,并确定上述初始化处理成功。
其中,延迟阈值范围可以根据实际情况设定,本说明书实施例对此不做限定。
在实施中,可以预先设定延迟阈值范围,如果备份数据库对应的延迟时长未在预定的延迟阈值范围内,则表明备份数据库中的数据可能未同步到最新版本,此时,备份数据库中的数据可能不是最新的数据,因此,可以确定上述初始化处理失败,并可以确定该账户标识对应的账户信息不可记账。如果备份数据库对应的延迟时长处于预定的延迟阈值范围内,则表明备份数据库中的数据已同步到最新版本,此时,备份数据库中的数据是最新的数据,第二服务器可以将备份数据库中该账户标识对应的目标账户信息作为初始化数据,以便后续第二服务器可以基于该初始化数据执行目标业务。同时,第二服务器可以确定对该账户标识对应的账户信息进行初始化处理成功。
针对除了上述情况外的其它情况,第二服务器可以确定无法响应该业务请求,此时,可以向相应的用户发送初始化失败的通知消息。此外,还可以通过其它方式进行初始化处理,具体可以参见下述步骤一~步骤三的处理。
步骤一,如果冗余数据库和备份数据库中均包含上述账户标识,则确定冗余数据库存储目标账户信息的第一时间,以及备份数据库存储账户标识对应的账户信息的第二时间。
步骤二,如果第二时间在第一时间之前,且备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将备份数据库中该账户标识对应的账户信息作为初始化数据,并确定上述初始化处理成功。
在实施中,例如,第二时间为2018年10月25日16:00:00,第一时间为2018年10月24日10:39:00,则可以确定(在时间轴上)第二时间在第一时间之前,此时可以继续判断备份数据库对应的延迟时长是否处于预定的延迟阈值范围内,如果是,则表明备份数据库中的数据已同步到最新版本,此时,备份数据库中的数据是最新的数据,第二服务器可以将备份数据库中该账户标识对应的目标账户信息作为初始化数据,以便后续第二服务器可以基于该初始化数据执行目标业务。同时,第二服务器可以确定对该账户标识对应的账户信息进行初始化处理成功。
步骤三,如果第一时间在第二时间之前,则将冗余数据库中目标账户信息作为初始化数据,并确定上述初始化处理成功。
在实施中,例如,第二时间为2018年10月25日16:00:00,第一时间为2018年10月25日16:01:00,则可以确定(在时间轴上)第一时间在第二时间之前,此时,可以确定冗余数据库中数据应该是最新的,可以将冗余数据库中该账户标识对应的目标账户信息作为初始化数据,以便后续第二服务器可以基于该初始化数据执行目标业务。同时,第二服务器可以确定对该账户标识对应的账户信息进行初始化处理成功。
针对除了上述情况外的其它情况,第二服务器可以确定无法响应该业务请求,此时,可以向相应的用户发送初始化失败的通知消息。
在步骤S424中,如果上述初始化处理成功,则第二服务器基于上述业务请求执行目标业务。
本说明书实施例提供一种业务的处理方法,预定区域范围内的第一服务器通过在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
实施例三
以上为本说明书实施例提供的业务的处理方法,基于同样的思路,本说明书实施例还提供一种业务的处理装置,如图5所示。
该业务的处理装置包括:请求接收模块501和处理模块502,其中:
请求接收模块501,用于接收目标业务的业务请求,所述业务请求中包括账户标识;
处理模块502,用于基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,以使所述第二服务器存储或更新所述目标账户信息,其中,所述第二服务器处于所述预定区域范围之外。
本说明书实施例中,所述处理模块502,包括:
业务执行单元,用于基于所述业务请求执行所述目标业务,得到执行结果;
回调单元,用于回调所述第二服务器存储或更新所述目标账户信息的状态信息,并根据回调的所述状态信息和所述执行结果,确定执行所述目标业务是否成功,其中,所述状态信息包括存储或更新成功,或者存储或更新失败,或者超时。
本说明书实施例中,所述处理模块502,用于如果所述状态信息为存储或更新失败或超时,基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
本说明书实施例中,所述业务执行单元,用于根据所述业务请求,调用所述目标业务的第三服务器执行所述目标业务,得到执行结果,其中,所述第三服务器是所述预定区域范围内除所述第一服务器之外的其它服务器。
本说明书实施例中,所述处理模块502,用于通过异步RPC接口,将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
本说明书实施例提供一种业务的处理装置,通过在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
实施例四
以上为本说明书实施例提供的业务的处理方法,基于同样的思路,本说明书实施例还提供一种业务的处理装置,如图6所示。
该业务的处理装置包括:信息接收模块601、存储模块602和更新模块603,其中:
信息接收模块601,用于接收目标业务的第一服务器发送的目标账户信息,所述目标账户信息是所述第一服务器在接收到所述目标业务的业务请求时,根据所述业务请求中包含的账户标识获取并发送的信息,所述第一服务器处于所述预定区域范围内;
存储模块602,用于如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;
更新模块603,用于如果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
本说明书实施例中,所述装置还包括:
同步模块,用于当到达预定的数据库同步周期时,将所述目标业务对应的主数据库中的数据与本地的备份数据库中的数据进行同步处理,其中,所述主数据库中包括所述账户标识对应的账户信息。
本说明书实施例中,所述装置还包括:
请求获取模块,用于当所述第一服务器异常时,获取发送给所述第一服务器的所述目标业务的业务请求,所述业务请求中包括所述账户标识;
第一初始化模块,用于根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;
业务执行模块,用于如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
本说明书实施例中,所述第一初始化模块,包括:
查找单元,用于根据所述账户标识,查找所述冗余数据库和所述备份数据库中是否包含所述账户标识;
初始化单元,用于如果所述冗余数据库中包含所述账户标识,所述备份数据库中未包含所述账户标识,则将所述冗余数据库中所述账户标识对应的所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例中,所述装置还包括:
延迟获取模块,用于如果所述冗余数据库中未包含所述账户标识,所述备份数据库中包含所述账户标识,则获取所述备份数据库对应的延迟时长;
第二初始化模块,用于如果所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例中,所述装置还包括:
存储时间确定模块,用于如果所述冗余数据库和所述备份数据库中均包含所述账户标识,则确定所述冗余数据库存储所述目标账户信息的第一时间,以及所述备份数据库存储所述账户标识对应的账户信息的第二时间;
第三初始化模块,用于如果所述第二时间在所述第一时间之前,且所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功;
第四初始化模块,用于如果所述第一时间在所述第二时间之前,则将所述冗余数据库中所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例提供一种业务的处理装置,通过预定区域范围内的第一服务器在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
实施例五
以上为本说明书实施例提供的业务的处理装置,基于同样的思路,本说明书实施例还提供一种业务的处理设备,如图7所示。
所述业务的处理设备可以为上述实施例提供的第一服务器。
业务的处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器701和存储器702,存储器702中可以存储有一个或一个以上存储应用程序或数据。其中,存储器702可以是短暂存储或持久存储。存储在存储器702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对业务的处理设备中的一系列计算机可执行指令。更进一步地,处理器701可以设置为与存储器702通信,在业务的处理设备上执行存储器702中的一系列计算机可执行指令。业务的处理设备还可以包括一个或一个以上电源703,一个或一个以上有线或无线网络接口704,一个或一个以上输入输出接口705,一个或一个以上键盘706。
具体在本实施例中,业务的处理设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对业务的处理设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
接收目标业务的业务请求,所述业务请求中包括账户标识;
基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,以使所述第二服务器存储或更新所述目标账户信息,其中,所述第二服务器处于所述预定区域范围之外。
本说明书实施例中,所述基于所述业务请求执行所述目标业务,包括:
基于所述业务请求执行所述目标业务,得到执行结果;
回调所述第二服务器存储或更新所述目标账户信息的状态信息,并根据回调的所述状态信息和所述执行结果,确定执行所述目标业务是否成功,其中,所述状态信息包括存储或更新成功,或者存储或更新失败,或者超时。
本说明书实施例中,所述基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,包括:
如果所述状态信息为存储或更新失败或超时,基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
本说明书实施例中,所述基于所述业务请求执行所述目标业务,得到执行结果,包括:
根据所述业务请求,调用所述目标业务的第三服务器执行所述目标业务,得到执行结果,其中,所述第三服务器是所述预定区域范围内除所述第一服务器之外的其它服务器。
本说明书实施例中,所述将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器,包括:
通过异步RPC接口,将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器。
本说明书实施例提供一种业务的处理设备,通过在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
实施例六
基于同样的思路,本说明书实施例还提供一种业务的处理设备,如图8所示。
所述业务的处理设备可以为上述实施例提供的第二服务器,上述实施例五中的第一服务器和该第二服务器可以是提供相同业务服务的服务器,仅是两服务器的所处的区域范围不同。
业务的处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器801和存储器802,存储器802中可以存储有一个或一个以上存储应用程序或数据。其中,存储器802可以是短暂存储或持久存储。存储在存储器802的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对业务的处理设备中的一系列计算机可执行指令。更进一步地,处理器801可以设置为与存储器802通信,在业务的处理设备上执行存储器802中的一系列计算机可执行指令。业务的处理设备还可以包括一个或一个以上电源803,一个或一个以上有线或无线网络接口804,一个或一个以上输入输出接口805,一个或一个以上键盘806。
具体在本实施例中,业务的处理设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对业务的处理设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
接收目标业务的第一服务器发送的目标账户信息,所述目标账户信息是所述第一服务器在接收到所述目标业务的业务请求时,根据所述业务请求中包含的账户标识获取并发送的信息,所述第一服务器处于所述预定区域范围内;
如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;
如果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
本说明书实施例中,还包括:
当到达预定的数据库同步周期时,将所述目标业务对应的主数据库中的数据与本地的备份数据库中的数据进行同步处理,其中,所述主数据库中包括所述账户标识对应的账户信息。
本说明书实施例中,还包括:
当所述第一服务器异常时,获取发送给所述第一服务器的所述目标业务的业务请求,所述业务请求中包括所述账户标识;
根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;
如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
本说明书实施例中,所述根据所述账户标识对所述账户标识对应的账户信息进行初始化处理,包括:
根据所述账户标识,查找所述冗余数据库和所述备份数据库中是否包含所述账户标识;
如果所述冗余数据库中包含所述账户标识,所述备份数据库中未包含所述账户标识,则将所述冗余数据库中所述账户标识对应的所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例中,还包括:
如果所述冗余数据库中未包含所述账户标识,所述备份数据库中包含所述账户标识,则获取所述备份数据库对应的延迟时长;
如果所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例中,还包括:
如果所述冗余数据库和所述备份数据库中均包含所述账户标识,则确定所述冗余数据库存储所述目标账户信息的第一时间,以及所述备份数据库存储所述账户标识对应的账户信息的第二时间;
如果所述第二时间在所述第一时间之前,且所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功;
如果所述第一时间在所述第二时间之前,则将所述冗余数据库中所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例提供一种业务的处理设备,预定区域范围内的第一服务器通过在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
实施例七
基于同样的思路,本说明书实施例还提供一种业务的处理系统,如图9所示。
所述业务的处理系统所述业务的处理系统包括处于预定区域范围内的至少一个第一服务器902、处于所述预定区域范围之外的至少一个第二服务器903和流量管控设备901,其中:流量管控设备901分别与所述第一服务器902和所述第二服务器903通信连接(如通过线缆连接或通过无线网络连接等)。
所述流量管控设备901,用于接收目标业务的业务请求,如果所述目标业务的第一服务器902正常,则将所述业务请求发送给所述第一服务器902,所述业务请求中包括账户标识;
所述第一服务器902,用于基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器903;
所述第二服务器903,用于如果冗余数据库中不包含所述账户标识对应的账户信息,则将所述目标账户信息存储到所述冗余数据库中;果所述冗余数据库中包含所述账户标识对应的账户信息,则使用所述目标账户信息对所述冗余数据库中所述账户标识对应的账户信息进行更新。
本说明书实施例中,所述流量管控设备901,还用于当所述目标业务的所述第一服务器902出现异常时,将所述业务请求发送给所述第二服务器903;
所述第二服务器903,还用于根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
本说明书实施例中,所述流量管控设备901,还用于当所述目标业务的所述第一服务器902出现异常时,根据预定选取规则,从所述第二服务器903中选取一个第二服务器903,并将所述业务请求发送给选取的所述第二服务器903。
其中,流量管控设备901可以用于流量管控,例如某一区域范围内的服务器出现异常时,将来自于该区域范围内的业务请求转发到其它预先设定的该区域范围之外的相应业务的服务器。第一服务器902和第二服务器903可以是提供相同业务服务的服务器,仅是两服务器的所处的区域范围不同。第二服务器903为预定区域范围之外的服务器,在实际应用中,预定区域范围之外的区域还可以划分为多个不同的区域,第二服务器903可以是其中划分出的一个区域内的服务器,还可以是划分出的多个区域内的服务器,例如,第一服务器902是位于上海市的服务器,第二服务器903可以是位于深圳市的服务器,或者,第二服务器903可以包括位于深圳市的服务器和位于北京市的服务器等。不同的第一服务器902可以预先设置不同区域范围的第二服务器903,当选择使用第二服务器903时,可以通过预定选取规则进行选取,也可以随机选取等。预定选取规则可以根据实际情况设定,例如根据与第一服务器902之间的距离远近选取,也可以随机选取等,本说明书实施例对此不做限定。
本说明书实施例中,所述第一服务器902,还用于基于所述业务请求执行所述目标业务,得到执行结果;回调所述第二服务器903存储或更新所述目标账户信息的状态信息,并根据回调的所述状态信息和所述执行结果,确定执行所述目标业务是否成功,其中,所述状态信息包括存储或更新成功,或者存储或更新失败,或者超时。
本说明书实施例中,所述第一服务器902,还用于如果所述状态信息为存储或更新失败或超时,基于所述业务请求执行所述目标业务,并将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器903。
本说明书实施例中,所述第一服务器902,还用于根据所述业务请求,调用所述目标业务的第三服务器执行所述目标业务,得到执行结果,其中,所述第三服务器是所述预定区域范围内除所述第一服务器902之外的其它服务器。
本说明书实施例中,所述第一服务器902,还用于通过异步RPC接口,将所述账户标识对应的目标账户信息发送给所述目标业务的第二服务器903。
其中,第一服务器902的上述处理的具体处理过程可以参见上述实施例一和实施例二中的相关内容,在此不再赘述。
本说明书实施例中,所述第二服务器903,还用于当到达预定的数据库同步周期时,将所述目标业务对应的主数据库中的数据与本地的备份数据库中的数据进行同步处理,其中,所述主数据库中包括所述账户标识对应的账户信息。
本说明书实施例中,所述第二服务器903,还用于当所述第一服务器902异常时,获取发送给所述第一服务器902的所述目标业务的业务请求,所述业务请求中包括所述账户标识;根据所述账户标识,对所述账户标识对应的账户信息进行初始化处理;如果所述初始化处理成功,则基于所述业务请求执行所述目标业务。
本说明书实施例中,所述第二服务器903,还用于根据所述账户标识,查找所述冗余数据库和所述备份数据库中是否包含所述账户标识;如果所述冗余数据库中包含所述账户标识,所述备份数据库中未包含所述账户标识,则将所述冗余数据库中所述账户标识对应的所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例中,所述第二服务器903,还用于如果所述冗余数据库中未包含所述账户标识,所述备份数据库中包含所述账户标识,则获取所述备份数据库对应的延迟时长;如果所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功。
本说明书实施例中,所述第二服务器903,还用于如果所述冗余数据库和所述备份数据库中均包含所述账户标识,则确定所述冗余数据库存储所述目标账户信息的第一时间,以及所述备份数据库存储所述账户标识对应的账户信息的第二时间;如果所述第二时间在所述第一时间之前,且所述备份数据库对应的延迟时长处于预定的延迟阈值范围内,则将所述备份数据库中所述账户标识对应的账户信息作为初始化数据,并确定所述初始化处理成功;如果所述第一时间在所述第二时间之前,则将所述冗余数据库中所述目标账户信息作为初始化数据,并确定所述初始化处理成功。
其中,第二服务器903的上述处理的具体处理过程可以参见上述实施例一和实施例二中的相关内容,在此不再赘述。
本说明书实施例提供一种业务的处理系统,通过预定区域范围内的第一服务器在接收到目标业务的业务请求时,基于该业务请求执行目标业务,并将该业务请求中包含的账户标识对应的目标账户信息发送给目标业务的第二服务器,以使第二服务器存储或更新目标账户信息,其中,第二服务器处于预定区域范围之外,这样,将属于预定区域范围内的第一服务器的业务请求对应的目标账户信息发送给预定区域范围之外的第二服务器存储,当预定区域范围内的服务器(如同城服务器)出现异常时,可以通过预定区域范围之外第二服务器(如异地服务器),基于相应的账户信息执行请求的目标业务,从而不会中断目标业务的执行,达到了异地容灾的目的,提高用户体验。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。