异步数据消耗的处理方法与流程

文档序号:12597281阅读:347来源:国知局

本申请涉及计算机数据处理技术领域,尤其涉及一种异步数据消耗的处理方法。



背景技术:

多服务器异步数据消耗处理,是指多服务器实现某一操作时,由服务器A进行数据消耗,再由服务器B进行具体的操作,从而完成整个操作流程。而数据的安全性,在服务器异常时就尤其重要。

其中,服务器A用于进行数据消耗的处理。所述数据消耗是指对数据系统中某指定的数据项的值进行删减处理,例如在电子支付等系统中,与实际货币对应的电子货币可以被存储在专门的服务器A中,每个用户都对应有电子货币账户,该账户中的金额就是一种数据消耗的数据项,一旦有支付行为发生或即将发生,则服务器A会从该账户中的金额数据项中扣除对应的金额,即所述金额值会减少,这就是数据消耗处理。再例如,在计算机网络游戏中,也存在有与账户金额类似的数据项,例如金钱、声望等,这些数据项可以由服务器A来进行数据消耗的处理,一旦有消耗行为,则服务器A就会从对应的数据项中扣除对应的数值,从而使得该数据项的值减少,这也是一种数据消耗的处理。

服务器B用于进行与服务器A所述数据消耗对应的具体的流程处理。当服务器A发生数据消耗后,则会触发服务器B进行与该数据消耗操作对应的具体业务流程操作。例如在电子支付等系统中,一旦有支付行为,则服务器A会从发生支付行为的账户中的金额数据项中扣除对应的金额,扣除成功后服务器A会发消息给服务器B,服务器B就会执行对应的业务操作流程,例如根据该支付行为对应的商品信息生成订单信息,将订单信息发送给交易双方,待订单信息确认后再继续执行物流系统的流程,等等。再例如,在计算机网络游戏中,一旦某个账户发出一个消耗请求,例如购买某一游戏装备,则服务器A会从该账户的金钱数据项中扣除对应的数值,扣除成功后服务器A会发消息给服务器B,服务器B就会执行对应的业务操作流程,例如服务器B会将相应的游戏装备的绑定到该账户中,等等。

目前,对于多服务器的大型多人在线网络游戏系统等计算机网络系统来说,多服务器异步数据消耗处理已经是很常规的操作,而异步操作数据的安全性问题也是异步操作的热门问题。由其是在服务器出现异常情况时,数据的安全性更加重要。

在现有技术中,多服务器异步数据消耗处理中,异步服务器之间的通信和操作主要是以消息的方式进行,消息的发送与处理都是实时的,一旦出现服务器异常,操作流程就会中断。

目前,主要存在两种多服务器异步数据消耗处理的技术方案。

第一种方案是,服务器A在数据消耗成功后,发送实时消息到服务器B,由服务器B进行对应的业务逻辑处理。

但是,上述第一种方案的缺陷是:当服务器A处理成功后,发送消息到服务器B时,服务器B崩溃。这时服务器A的数据已经变化,而服务器B的操作还没成功。最后造成整个流程的操作失败,而服务器A上的数据已经损失。例如某账户发出购买请求后,服务器A对该账户的金额已经进行扣费,发送消息给服务器B,服务器B应该执行后续的购买业务逻辑处理,包括生成订单,确认物流等操作。但是如果服务器B在业务处理时崩溃,则导致服务器A对账户的金额已经扣费,而购买操作实际没有执行成功,这样就会造成该账户的金额损失,导致业务事故。而在目前的互联网应用如电子商务、网络游戏中,数据量是巨大的,一旦发生上述业务事故,排查该业务事故需要调用log日志,并花费大量的人力物力,不但造成用户的金额损失,而且排查成本太高。

第二种方案是,服务器A在进行数据消耗处理之前,先进行消耗检测,所述消耗检测是指先不进行数据消耗处理,而是判断目标数据项中是否有足够的需要消耗的数据。例如当购买请求发生后,确定购买的金额,在判断对应账户的余额中是否有足够的金额,如果有则判定消耗检测成功,否则判定消耗检测失败。在消耗检测成功后发送消息到服务器B进行操作,否则不发送消息。服务器B在收到消息后进行业务逻辑处理,在处理成功后返回成功消息到服务器A,服务器A在收到成功消息后再进行真正的数据消耗处理,例如进行真正的扣费操作。

但是,上述第二种技术方案的缺陷是:当服务器B的业务逻辑处理成功后,发送消息到服务器A时,如果服务器A崩溃,可能造成服务器B的业务逻辑处理已经成功,但没有消耗数据的情况,使得用户免费进行了一次操作,造成商家的损失。例如在网络游戏系统中,如果用户希望购买某一件游戏装备,服务器A在消耗检测成功后发送消息给服务器B,服务器B执行对应的业务逻辑处理,即将相应的游戏装备绑定给该用户的账户中,但是服务器B返回成功消息后,服务器A却崩溃了,进而造成实际没有对用户扣费,用户无偿占有了该游戏装备。

综上所述,现有技术中,异步的服务器之间,从消息发送到执行都是内存操作,没有存盘,是不可逆的,一旦出现异常,无法重新模拟消息操作,造成不可恢复的数据错误,不是造成购买方的损失,就是造成售卖方的损失。而且一旦发生损失,在排查故障点的时候,需要耗费大量人力物力。



技术实现要素:

有鉴于此,本发明的主要目的是提供一种异步数据消耗的处理方法,以降低数据出错的几率,间接降低排查错误的人力成本。

本发明的技术方案是这样实现的:

一种异步数据消耗的处理方法,该方法包括:

第一服务器在成功执行数据项的数据消耗后,向第二服务器发送含有消耗数据的成功消耗邮件,并将该成功消耗邮件存储在指定存储设备;

所述第二服务器在收到所述含有消耗数据的成功消耗邮件后,解析出其中的消耗数据,进行与该消耗数据对应的业务逻辑处理;如果所述业务逻辑处理成功,则通知所述存储设备删除该成功消耗邮件;如果所述业务逻辑处理失败,则向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件,并通知所述存储设备删除该成功消耗邮件;

所述第一服务器在接收到所述第二服务器的业务逻辑处理失败邮件后,解析出其中的消耗数据,补回对应数据项的消耗数据。

在一种优选实施例中,该方法进一步包括:

所述第二服务器在崩溃重启后,从所述指定存储设备中读取发送给本第二服务器的成功消耗邮件,解析出其中的消耗数据,进行与该消耗数据对应的业务逻辑处理;如果所述业务逻辑处理成功,则通知所述存储设备删除该成功消耗邮件;如果所述业务逻辑处理失败,则向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件,并通知所述存储设备删除该成功消耗邮件。

在一种优选实施例中,该方法进一步包括:

所述第二服务器向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件后,进一步将该业务逻辑处理失败邮件存储在指定存储设备中;

所述第一服务器在接收到所述第二服务器的业务逻辑处理失败邮件后,解析出其中的消耗数据,补回对应数据项的消耗数据后,进一步通知所述指定存储设备将该业务逻辑处理失败邮件删除。

在一种优选实施例中,该方法进一步包括:

在所述第一服务器崩溃重启后,从所述指定存储设备中读取发送给本第一服务器的业务逻辑处理失败邮件,解析出其中的消耗数据,补回对应数据项的消耗数据,之后通知所述指定存储设备将该业务逻辑处理失败邮件删除。

在一种优选实施例中,该方法进一步包括:

如果所述第二服务器的所述业务逻辑处理成功,则向第一服务器返回针对所述成功消耗邮件的响应信息;

所述第一服务器如果在指定的时间内没有收到第二服务器的针对所述成功消耗邮件的任何响应邮件或响应信息,则补回对应数据项的消耗数据,并通知所述指定存储设备删除所述成功消耗邮件。

与现有技术相比,本发明用于消耗数据的服务器即第一服务器,在成功执行数据项的数据消耗后,向业务逻辑处理服务器即第二服务器发送含有消耗数据的成功消耗邮件,并将该成功消耗邮件存储在指定存储设备;所述第二服务器在收到所述含有消耗数据的成功消耗邮件后,解析出其中的消耗数据,进行与该消耗数据对应的业务逻辑处理;如果所述业务逻辑处理成功,则通知所述存储设备删除该成功消耗邮件;如果所述业务逻辑处理失败,则向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件,并通知所述存储设备删除该成功消耗邮件;所述第一服务器在接收到所述第二服务器的业务逻辑处理失败邮件后,解析出其中的消耗数据,补回对应数据项的消耗数据。

因此,本发明在第一服务器进行数据消耗后,一旦第二服务器的对应业务逻辑处理失败,可以通过本发明所述的处理方法将第一服务器所消耗掉的对应数据补回来,因此可以避免造成用户和游戏运营商的经济损失,使得数据错误率降低,进而间接地降低了排查异常数据错误的人力物力成本。

附图说明

图1为本发明所述异步数据消耗的处理方法的一种流程示意图。

具体实施方式

下面结合附图及具体实施例对本发明再作进一步详细的说明。

图1为本发明所述异步数据消耗的处理方法的一种流程示意图。参见图1,所述第一服务器和第二服务器是异步处理的服务器。所述第一服务器表示用于消耗数据处理的服务器,即现有技术的服务器A,所述第二服务器表示用于业务逻辑处理的服务器,即现有技术的服务器B。

参见图1,本发明所述的方法包括:

步骤101、第一服务器在成功执行数据项的数据消耗后,向第二服务器发送含有消耗数据的成功消耗邮件,并将该成功消耗邮件存储在指定存储设备。

例如在网络游戏系统中,所述第一服务器处理数据项的数据消耗例如可以是:第一服务器收到某账号的购买游戏装备的请求,会对该账号的金额数据项执行数据消耗,即将该账号的金额值扣除所述游戏装备需要耗费的金钱数,在扣除成功后,第一服务器会生成含有所扣除金额(即消耗数据)的成功消耗邮件,该成功消耗邮件中还包括对应的业务项目和用户账号,所述的业务项目即购买某游戏装备;然后第一服务器将该成功消耗邮件发送给第二服务器,并将该成功消耗邮件存储在指定存储设备。

步骤102、所述第二服务器在收到所述含有消耗数据的成功消耗邮件后,解析出其中的消耗数据,进行与该消耗数据对应的业务逻辑处理。

例如对于上述举例的成功消耗邮件来说,其中包含消耗数据即所扣除金额、以及对应的业务项目即购买某游戏装备、以及用户账户,那么第二服务器会执行对应的业务逻辑处理,即将该游戏装备分配给该用户账户。

步骤103、如果所述业务逻辑处理成功,则第二服务器通知所述存储设备删除所述成功消耗邮件。所述成功消耗邮件中都有邮件编号,所述第二服务器可以将包含该邮件编号的删除指令发送给所述存储设备,存储设备根据该删除指令删除该邮件编号对应的成功消耗邮件。

步骤104、如果所述业务逻辑处理失败,则向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件,并通知所述存储设备删除该成功消耗邮件。当然,所述业务逻辑处理失败邮件除了消耗数据即所扣除的金额,还包括对应的用户账户。

步骤105、所述第一服务器在接收到所述第二服务器的业务逻辑处理失败邮件后,解析出其中的消耗数据,补回对应数据项的消耗数据。

所述补回对应数据项的消耗数据,就是说将步骤101中所扣除的数据值再加回来。例如购买一个游戏装备需要花费100元,所述100元就是消耗数据。在步骤101中,第一服务器从用户账户中扣除100元,在此步骤105中,由于第二服务器实质上没有将对应的游戏装备分配给该用户账号,因此需要在该用户账户中再加上100元,即补回对应数据项(金额数据项)的消耗数据(100元)。

因此,本发明在第一服务器进行数据消耗后,一旦第二服务器的对应业务逻辑处理失败,可以通过本发明所述的处理方法将第一服务器所消耗掉的对应数据补回来,因此可以避免造成用户和游戏运营商的经济损失,使得数据错误率降低,进而间接地降低了排查异常数据错误的人力物力成本。

在本发明的一种优选实施例中,为了防止由于第二服务器的崩溃而发生数据错误,本发明的方法还进一步包括:

所述第二服务器如果在业务逻辑处理的过程中发生崩溃,则在崩溃重启后,从所述指定存储设备中读取发送给本第二服务器的成功消耗邮件,解析出其中的消耗数据,进行与该消耗数据对应的业务逻辑处理;如果所述业务逻辑处理成功,则通知所述存储设备删除该成功消耗邮件;如果所述业务逻辑处理失败,则向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件,并通知所述存储设备删除该成功消耗邮件。所述第一服务器在接收到所述第二服务器的业务逻辑处理失败邮件后,解析出其中的消耗数据,补回对应数据项的消耗数据。

通过上述流程的处理,可以保证:(1)邮件只有在处理完成后,再删除邮件。(2)服务器异常时,消息以邮件的形式进行了存盘,可以实现再次加载处理。(3)处理失败后,将已经消耗的数据再次加回来。实现整体流程是安全的。

在本发明的又一种优选实施例中,该方法还可以进一步包括:

所述第二服务器向所述第一服务器返回含有消耗数据的业务逻辑处理失败邮件后,进一步将该业务逻辑处理失败邮件存储在指定存储设备中;

所述第一服务器在接收到所述第二服务器的业务逻辑处理失败邮件后,解析出其中的消耗数据,补回对应数据项的消耗数据后,进一步通知所述指定存储设备将该业务逻辑处理失败邮件删除。

这样,一旦第一服务器也发生了崩溃事故而导致没有及时补回消耗数据,那么可以在所述第一服务器崩溃重启后,从所述指定存储设备中读取发送给本第一服务器的业务逻辑处理失败邮件,解析出其中的消耗数据,补回对应数据项的消耗数据,之后通知所述指定存储设备将该业务逻辑处理失败邮件删除。

另外,为了进一步保证数据的安全性,防止发生由于邮件在传输过程中的丢失而造成的故障,在本发明的又一种优选实施例中,该方法还可以进一步包括:

如果所述第二服务器的所述业务逻辑处理成功,则向第一服务器返回针对所述成功消耗邮件的响应信息,表示第二服务器成功接受并处理了所述成功消耗邮件;

所述第一服务器如果在指定的时间内没有收到第二服务器的针对所述成功消耗邮件的任何响应邮件(即所述业务逻辑处理失败邮件)或响应信息(即所述成功消耗邮件的响应信息),则补回对应数据项的消耗数据,并通知所述指定存储设备删除所述成功消耗邮件。就相当于本次数据消耗处理没有执行,虽然可能会引起用户的疑惑,但是不会导致数据上的错误。

另外需要说明的是,本发明的应用场景是巨量的异步数据消耗处理的场景。由于异步数据消耗处理在目前基于网络的计算机系统中大量存在,例如在电子商务系统、网络游戏系统中,所述异步数据消耗处理的数量是巨大的,在这种巨大的数据量的情况下,稍有一点数据错误,那么排查起错误来,需要花费的人力物力也是非常巨大的,因为工作人员需要对照log日志逐条进行排查。因此对于目前的巨量的异步数据消耗处理来说,要严格限制数据错误的发生几率,尽量将几乎所有发生数据错误的可能都设计出相应的弥补措施。

而本发明所述的异步数据消耗的处理方法,就可以严格降低数据错误的发生几率,在第一服务器进行数据消耗后,即使第二服务器的对应业务逻辑处理失败,也可以通过本发明所述的处理方法将第一服务器所消耗掉的对应数据补回来,因此可以避免造成用户和游戏运营商的经济损失,使得数据错误率降低,进而间接地降低了排查异常数据错误的人力物力成本。

而且,采用本发明所述的方法,由于涉及到邮件的存储,对于消耗数据处理量巨大的计算机系统来讲,本领域普通技术人员很容易担心邮件存储量也会十分巨大。但是,本发明的巧妙之处在于,由于服务器发生崩溃的情况毕竟是少数,第二服务器只要没有崩溃,不论其是否成功处理业务逻辑,该第二服务器都会通知所述存储设备删除第一服务器所存储的成功消耗邮件,因此大部分情况下,第一服务器向存储设备所存储的所述成功消耗邮件,都会在很短的时间内删除,其在存储设备上的存储时间其实很短,所以不会造成很大的存储量,不会造成过高的存储成本。

即使第二服务器发生崩溃,在一般情况下,在存储设备上积累的成功消耗邮件也是可控的。

但是,为了应对第二服务器发生崩溃后长时间未启动、但是第一服务器持续发出成功消耗邮件的特殊情况,在本发明的一种优选实施例中,还可以进一步增加一个检测模块,可以设置在指定的服务器上,该检测模块用于检测第二服务器的运行状况,一旦检测到所述第二服务器崩溃后超过指定时间(如30分钟)没有重启,则向所述第一服务器发送崩溃通知,所述第一服务器收到崩溃通知后停止进行消耗数据的处理;当所述检测模块检测到所述第二服务器重启后,则向所述第一服务器发送重启通知,所述第一服务器收到重启通知后重新启动消耗数据的处理。

另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。

因此本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。

另外,本发明所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入微控制器等来实现。因此这种可以实现本发明所述方法的硬件也可以构成本发明。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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