数据处理方法、装置及电子设备与流程

文档序号:24712309发布日期:2021-04-16 13:53阅读:75来源:国知局
1.本发明涉及计算机
技术领域
:,特别是涉及一种数据处理方法、装置及电子设备。
背景技术
::2.随着网络技术的发展,设备之间进行业务交互也变得越来越频繁。若网络不稳定或者服务响应方不可用等情况下,就可能会导致服务请求方无法与服务响应方通信,使得服务请求调用失败,无法进行业务交互。此时服务请求方则需要执行操作重试机制,再次尝试与服务响应方通信,调用服务请求保证业务运行。3.springretry(重试机制)是一种java组件,用于提供一种操作重试机制。目前服务请求方可以在服务请求调用失败时,通过调用springretry实现预次数的服务请求重试操作。4.而服务请求方调用springretry进行重试处理具有次数限制,若在重试处理过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等情况。则服务请求方在通过调用springretry执行完重试处理后,依旧会导致服务请求调用失败,使得业务逻辑执行不完整。技术实现要素:5.本发明实施例的目的在于提供一种数据处理方法、装置及电子设备,以实现持久性地服务请求重试处理。具体技术方案如下:6.在本发明实施的第一方面,首先提供了一种数据处理方法,所述方法包括:7.响应于服务请求的调用失败指令,获取缓存空间中的所述服务请求进行第一重试处理;8.当所述第一重试处理失败时,将所述服务请求存储至目标存储空间,所述目标存储空间存储的数据具有持久性;9.重复获取所述目标存储空间中的服务请求进行第二重试处理。10.可选的,所述当所述第一重试处理失败时,将所述服务请求存储至目标存储空间,包括:11.当所述第一重试处理失败时,获取第一重试处理失败的第一总数;12.当所述第一总数小于或者等于第一总数阈值时,返回执行所述获取缓存空间中的所述服务请求进行第一重试处理,13.当所述第一总数大于第一总数阈值时,将所述服务请求存储至目标存储空间。14.可选的,所述目标存储空间包括数据库或者消息队列。15.可选的,所述目标存储空间包括消息队列和数据库,所述重复获取所述目标存储空间中的服务请求进行第二重试处理,包括:16.获取所述目标存储空间中的服务请求进行第二重试处理;17.当所述第二重试处理失败时,获取第二重试处理失败的第二总数;18.当所述第二总数小于或者等于第二总数阈值时,返回执行所述获取所述目标存储空间中的服务请求进行第二重试处理;19.所述方法还包括:20.当所述第二总数大于第二总数阈值时,将所述服务请求存储至数据库;21.重复获取所述数据库中的服务请求进行第三重试处理。22.可选的,所述重复获取所述目标存储空间中的服务请求进行第二重试处理,包括:23.重复获取所述目标存储空间中的服务请求进行第二重试处理,直至所述第二重试处理成功或者所述第二重试处理失败的统计数据满足设定条件;24.所述方法还包括:当所述第二重试处理失败的统计数据满足设定条件时,发送报警信息,所述报警信息用于提醒服务请求调用失败。25.可选的,所述获取缓存空间中的所述服务请求进行第一重试处理,包括:26.获取所述缓存空间中存储的所述服务请求;27.执行重试注解对所述服务请求进行重试处理。28.可选的,在将所述服务请求存储至目标存储空间之前,所述方法还包括:29.获取所述服务请求对应处理的代理注解;30.基于所述代理注解生成代理对象;31.当执行服务请求对应的处理时,利用所述代理对象拦截所述服务请求;32.所述将所述服务请求存储至目标存储空间,包括:将拦截得到的所述服务请求存储至目标存储空间。33.在本发明实施的第二方面,还提供了一种数据处理装置,所述装置包括:34.第一重试处理模块,用于响应于服务请求的调用失败指令,获取缓存空间中的所述服务请求进行第一重试处理;35.第一存储模块,用于当所述服务请求的第一重试处理失败时,将所述服务请求存储至目标存储空间,所述目标存储空间存储的数据具有持久性;36.第二重试处理模块,用于重复获取所述目标存储空间中的服务请求进行第二重试处理。37.在本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;38.存储器,用于存放计算机程序;39.处理器,用于执行存储器上所存放的程序时,实现上述任一所述的方法步骤。40.在本发明实施的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的数据处理方法。41.在本发明实施的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据处理方法。42.本发明实施例提供的数据处理方法、装置及电子设备,可以通过响应于服务请求的调用失败指令,获取缓存空间中存储的服务请求进行第一重试处理,并在该第一重试处理失败时,将服务请求存储至目标存储空间,重复获取目标存储空间中存储的服务请求进行第二重试处理。其中,由于目标存储空间存储的数据具有持久性,使得服务请求方可以持久地重复获取该服务请求进行第二重试处理,实现了服务请求重试处理的持久性。因此即使在服务请求方重试过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等无法提供服务的情况下,持久性的重试处理机制,提高了服务请求方调用成功的概率,保障了业务逻辑执行的完整性。附图说明43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。44.图1为本发明实施例提供的一种业务系统的结构示意图;45.图2为本发明实施例提供的一种数据处理方法的流程图;46.图3为本发明实施例提供的另一种数据处理方法的流程图;47.图4为本发明实施例提供的一种持久化重试处理机制的框架图;48.图5为本发明实施例提供的又一种数据处理方法的流程图;49.图6为本发明实施例提供的一种数据处理装置的框图;50.图7为本发明实施例提供的另一种数据处理装置的框图;51.图8为本发明实施例提供的一种电子设备的结构图。具体实施方式52.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。53.随着网络技术的发展,设备之间进行业务交互也变得越来越频繁。若网络不稳定或者服务响应方不可用等情况下,就可能会导致服务请求方无法与服务响应方通信,使得服务请求调用失败,无法进行业务交互。此时服务请求方则需要执行操作重试机制,再次尝试与服务响应方通信,调用服务请求保证业务运行。54.springretry(重试机制)是一种java组件,用于提供一种操作重试机制。目前服务请求方可以在服务请求调用失败时,通过调用springretry实现预设次数的服务请求重试操作。55.而服务请求方调用springretry进行重试处理具有次数限制,若在重试过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等情况。则服务请求方在通过调用springretry执行完重试处理后,无法保存该服务请求,所以当服务请求方恢复、网络稳定或者服务响应方恢复等情况恢复后,依旧会导致服务请求调用失败,无法进行业务交互的问题。56.为了便于读者对本文的理解,本发明实施例在此先对本文中涉及的一些专业名词进行相应的解释:57.消息队列(messagequeue,mq):是基础数据结构中“先进先出”的一种数据结构。消息队列具有确认机制,也即是ack(acknowledgement)机制。该ack机制目的是用于告知生产者存储于消息队列中的当前消息是否成功消费。其中,生产者指的是向消息队列发送数据的一方;消费者指的是从消息队列中获取消息进行处理的一方。当消费者将存储于消息队列中的当前消息处理成功时,该消费者可以向该消息队列发送确认字符ack,以表示当前消息处理成功。当消费者将存储于消息队列中的当前消息处理失败时,该消费者可以向该消息队列发送非确定字符nack,以表示当前消息处理失败。消息队列可以在仅接收到确认字符ack,确定当前消息处理成功时,删除该当前消息。在接收到非确定字符nack,确定当前消息处理失败时,继续保留当前消息,直至该当前消息被处理成功。或者,消息队列也可以在接收到确认字符ack或者非确认字符nack时,均删除该当前消息,但是在接收到确认字符ack时,将删除的当前消息再次存储至消息队列中。58.消息中间件:提供消息队列的组件。例如,rabbitmq(rmq)。59.本发明实施例中下述的方法以java(一种面向对象的程序设计语言)语言实现为例进行说明。当然,本发明实施例还可以通过其他语言实现,对此不做限制。60.请参考图1,其示出了本发明实施例提供的一种业务系统的结构示意图,该业务系统具有微服务框架。如图1所示,该业务系统包括:业务服务器101以及与该业务服务器101连接的一个或多个第三方服务器102。其中,一个或多个第三方服务器102中,每个第三方服务器均可以提供一种或多种服务。业务服务器101可以采用服务请求调用第三方服务器,以获取该第三方服务器对应的服务,实现自身业务需求。需要说明的是,图1中以业务系统包括2个第三方服务器为例进行说明,也即是不难理解,图1中第三方服务器的数量并不对业务系统可以包括的第三方服务器的数据进行限定。61.可选的,业务系统还可以包括:终端103。该终端103与业务服务器101连接。业务服务器101用于为终端103提供服务。示例的,终端103上可以加载有软件客户端。业务服务器可以通过调用提供用户认证、站内通信通知以及活体识别等服务的一个或多个第三方服务器,以为终端提供该软件客户端所需的服务。62.请参考图2,其示出了本发明实施例提供的一种数据处理方法的流程图。该数据处理方法可以在一定程度上解决上述技术问题。其中,该数据处理方法可以由服务请求方执行,该服务请求方可以为图1所示的业务系统中业务服务器。如图2所示,该数据处理方法可以包括:63.步骤201、响应于服务请求的调用失败指令,获取缓存空间中的服务请求进行第一重试处理。64.其中,服务请求可以是服务请求方在第三方服务时生成的请求,用于调取第三方服务。65.可选的,服务请求方在通过服务请求调用第三方服务时,若服务响应方因网络不稳定或者服务响应方不可用等原因下未响应该服务请求,则服务请求方可能无法接收到任何响应,或者也可能接收到异常状态码,该异常状态码用于表示服务响应方未响应该服务请求。则服务请求方可以在发出服务请求一定时间后未接收到服务请求的响应的情况下,或者服务请求方在接收到异常状态码的情况下,确定服务请求调用失败,生成服务请求的调用失败指令。之后,服务请求方可以响应于该调用失败指令,获取缓存空间中的服务请求进行第一重试处理,以实现对该服务请求的第一次重试处理。66.本发明实施例中,服务请求方获取缓存空间中的服务请求进行第一重试处理的过程可以包括:服务请求方获取缓存空间中存储的服务请求。之后,执行重试注解对服务请求进行重试处理。67.步骤202、当第一重试处理失败时,将服务请求存储至目标存储空间,目标存储空间存储的数据具有持久性。68.数据持久性指的是数据持续性存在。在任何情况下,即使面临网络故障、内存泄露和设备崩溃,具有持久性的数据也依旧可以持续存在。69.可选的,目标存储空间可以指的是自身具有持久性的存储空间,则存储于该存储空间的数据可以具有持久性。或者,目标存储空间也可以指的是通过特定反馈机制,使得具有持久性的存储空间。70.示例的,目标存储空间可以为数据库和/或消息队列。数据库可以为mysql数据库,消息队列可以是基于rmq实现的消息队列。服务请求方可以将服务请求存储至数据库中,或者该服务请求方可以作为生产者将服务请求发送至消息队列中。其中,数据库自身具有持久性。消息队列具有ack机制。由于消息队列可以使得在仅接收到确认字符ack,确定存储于消息队列内的服务请求调用成功时,彻底删除存储于消息队列中的服务请求。因此该ack机制可以使得存储于该消息队列中的数据在未被成功处理时具有持久性。由于数据库中数据便于可视化处理,因此当存储空间为数据库时,因调用失败而存储于数据库中的服务请求可以通过可视化处理直观显示,有利用诸如开发者等相关人员基于调用失败的服务请求的类型等相关信息进行分析。71.本发明实施例中,服务请求方当第一重试处理失败时,将服务请求存储至目标存储空间的过程可以包括:当第一重试处理失败时,获取第一重试处理失败的第一总数。当第一总数小于或者等于第一总数阈值时,返回执行获取缓存空间中的服务请求进行第一重试处理,当第一总数大于第一总数阈值时,将服务请求存储至目标存储空间。72.步骤203、重复获取所述目标存储空间中的服务请求进行第二重试处理。73.可选的,服务请求方可以在对从目标存储空间中获取的服务请求进行第二重试处理,当该服务请求进行第二重试处理失败时,服务请求方可以间隔一定时长,再次从目标存储空间中获取该服务请求进行第二重试处理。在本发明实施例中,服务请求方可以直至从目标存储空间中获取的服务请求进行第二次重试处理成功或者服务请求进行第二次重试处理失败的统计数据满足设定条件时,停止执行重复对服务请求进行第二重试处理的操作。示例的,该设定条件可以为,服务请求进行第二次重试处理失败的总数大于总数阈值。其中,该总数阈值可以为10。74.可选的,当目标存储空间为消息队列时,消息队列可以在确定存储有服务请求后,将该服务请求发送至服务请求方,从而使得该服务请求方获取目标存储空间中的服务请求。或者,服务请求方可以周期性的轮训目标存储空间,从而在目标存储空间存储有服务请求时,获取该服务请求。当目标存储空间为数据库时,服务请求方可以周期性地从目标存储空间中获取服务请求。示例的,服务请求方可以通过注入定时任务,使得每个间隔指定时长执行从目标存储空间获取服务请求的操作。75.综上所述,本发明实施例提供的数据处理方法,可以通过响应于服务请求的调用失败指令,获取缓存空间中存储的服务请求进行第一重试处理,并在该第一重试处理失败时,将服务请求存储至目标存储空间,重复获取目标存储空间中存储的服务请求进行第二重试处理。其中,由于目标存储空间存储的数据具有持久性,使得服务请求方可以持久地重复获取该服务请求进行第二重试处理,实现了服务请求重试处理的持久性。因此即使在服务请求方重试过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等无法提供服务的情况下,持久性的重试处理机制,提高了服务请求方调用成功的概率,保障了业务逻辑执行的完整性。进一步的,当服务请求方和服务响应方对数据一致性要求较高时,由于本发明实施例提供的数据处理方法可以在一定程度上保障服务请求的成功,保障二者之间的数据交互,因此满足了二者数据一致性要求。76.本发明实施例还提供了另一种数据处理方法。该数据处理方法还可以通过多个阶段对服务请求进行多次重试处理,实现更为持久性的服务请求重试操作,以在很大程度上避免服务请求的调用失败,保障了业务逻辑执行的完整性。示例的,可以通过三个阶段对服务请求进行多次重试处理。其中,对于第一阶段,数据处理方法可以包括在响应于服务请求的调用失败指令时,获取缓存空间中存储的服务请求,采用重试机制对服务请求进行重试处理。若该重试处理失败,则可以进行第二阶段。对于第二阶段,数据处理方法可以包括通过将服务请求存储至消息队列,以通过消息队列实现对服务请求的重复重试处理,实现持久化的重试机制。若该重试处理失败,则可以进行第三阶段。对于第三阶段,数据处理方法还可以包括通过将服务请求存储至数据库,以通过对数据库调用实现对服务请求的重复重试处理,实现持久化的重试机制。下述实施例以数据处理方法包括三个阶段为例进行说明。当然,本发明实施例提供的数据处理方法,也可以通过两个阶段对服务请求进行多次重试处理。例如,该数据处理方法可以仅包括上述第一阶段和第二阶段,或者仅包括上述第一阶段和第三阶段等。本发明实施例对此不做限定。77.请参考图3,其示出了本发明实施例提供的另一种数据处理方法的流程图。该数据处理方法可以在一定程度上解决上述技术问题。其中,该数据处理方法可以由服务请求方执行,该服务请求方可以为图1所示的业务系统中业务服务器。且下述以存储空间为数据库为例进行说明。如图3所示,该数据处理方法可以包括:78.步骤301、响应于服务请求的调用失败指令,获取缓存空间中存储的服务请求。79.可选的,服务请求方可以在首次通过服务请求调用失败某一服务时,生成调用失败指令。之后,服务请求方可以响应于该调用失败指令,获取缓存空间中的存储的服务请求。示例的,服务请求方在通过服务请求调用第三方服务时,若服务响应方因网络不稳定或者服务响应方不可用等原因下未响应该服务请求,则服务请求方可能无法接收到任何响应,或者也可能接收到异常状态码,该异常状态码用于表示服务响应方未响应该服务请求。则服务请求方可以在发出服务请求一定时间后未接收到服务请求的响应的情况下,或者服务请求方在接收到异常状态码的情况下,确定服务请求调用失败,生成服务请求的调用失败指令。80.步骤302、采用重试机制对服务请求进行第一重试处理。81.可选的,服务请求方采用重试机制对服务请求进行重试处理的过程可以包括:服务请求方执行重试注解对服务请求进行重试处理。示例的,该重试注解可以为java重试注解。该java重试注解可以为retryable注解或者recover注解。其中,执行retryable注解进行重试处理的原理为:定义重试次数trycount的初始值为3。执行服务请求调用第三方服务invokemethod()。如果出现异常,则认为调用失败,继续执行服务请求调用第三方服务。每执行一次服务请求调用第三方服务,重试次数减1。若重试次数trycount小于0,则结束重试处理。82.示例的,服务请求方执行retryable注解进行重试处理的方式可以包括:83.@retryable(value={exception.class},maxattempts=5,backoff=@backoff(delay=5000l,multiplier=1))84.publicvoidxxx()throwsexception{85.…}86.@retryable表示注解的名称,进行重试处理的条件value为exception(异常),最大重试次数maxattempts为5,每次重试处理等待时间delay为5000毫秒(ms),重新发起延迟时间的基数multiplier为1。delay=5000l,multiplier=1表示:第一次重试处理延迟时间为5000ms,第二重试处理延迟时间为5000ms等。进行重试处理的服务请求对应的调用方法为xxx。服务请求方当检测到服务请求对应处理的异常exception时,在等待5000ms之后,执行一次服务请求对应处理xxx的调用,以进行第一次重试处理。当再次检测到服务请求对应处理的异常exception时,依旧在等待5000ms之后,执行一次服务请求对应处理xxx的调用,以进行第二次重试处理。若服务请求方检测到服务请求对应处理的一直为异常exception,则重复当检测到服务请求对应处理的异常exception时,在等待5000ms之后,执行一次服务请求对应处理xxx的调用,以进行一次重试处理。直至重试处理的次数超过最大重试次数maxattempts。若服务请求方在进行任一次重试处理后,未检测到服务请求对应处理的为异常exception,则停止执行retryable注解进行重试处理。87.步骤303、当第一重试处理成功时,结束服务请求重试处理。88.步骤304、当第一重试处理失败时,获取第一重试处理失败的第一总数。89.可选的,在服务请求方执行重试注解对服务请求进行第一重试处理的情况下,服务请求方获取第一重试处理失败的第一总数的过程可以包括:获取服务请求对应处理的代理注解,基于该代理注解生成代理对象。当通过重试注解调用服务请求对应的处理时,利用代理对象拦截重试注解中的第一总数。该第一数用于表示执行重试注解对服务请求进行重试处理时服务请求调用失败(即重试处理失败)的次数。其中,服务请求对应的处理指的是实现服务请求所需执行的方法。该方法可以具有代理注解,通过执行该代理注解可以拦截在通过重试注解调用服务请求对应的处理时,其服务请求调用失败的次数。90.示例的,代理注解可以基于面向切面编程(aspectorientedprogramming,aop)技术。服务请求方获取服务请求对应处理的代理注解,通过aop拦截执行重试注解。获取服务请求调用失败的第三总数。当第三总数大于或等于第三总数阈值时,确定采用重试机制对服务请求进行重试处理失败。该第三总数阈值可以为java重试注解中定义的最大重试次数。91.其中,本发明实施例中业务系统可以是基于spring框架开发的。该spring框架中可以提供aop技术。aop技术可以通过预编译方式和运行期间动态代理实现程序功能的统一维护。其提供一种机制,令开发者可以定义一段代码,该代码可以通过动态代理的方式在一个方法执行前后或者出现异常时被执行,以对该方法加入一定逻辑实现一些特定的功能。示例的,服务请求方可以通过加载方法拦截处理器,以实现aop拦截执行java重试注解的功能。92.示例的,本发明实施例中,开发人员可以在java重试注解(例如,retryable注解)中加入发送执行服务请求对应的调用方法的当前重试次数,以便于服务请求方在执行该java重试注解后,获取当前服务请求调用失败的总数。并且,通过将发送执行服务请求对应的调用方法的当前重试次数的功能写入java重试注解,对java重试注解进行增强,避免了该功能对业务逻辑的干扰。93.步骤305、判断第一总数是否大于第一总数阈值,当第一总数小于或者等于第一总数阈值时,返回执行步骤301;当第一总数大于第一总数阈值时,执行步骤306。94.服务请求方可以比较服务请求调用失败的第一总数与第一总数阈值的大小,确定该第一总数是否大于第一总数阈值。当第一总数大于第一总数阈值时,表明采用重试机制对服务请求进行第一重试处理失败。服务请求方可以将服务请求存储至消息队列,以便于后续对服务请求进行重复重试处理。当第一总数小于或等于第一总数阈值时,表明可以重复采用重试机制实现对服务请求的重试处理。此时可以继续执行获取存储空间中的服务请求进行第一重试处理的过程。95.步骤306、将服务请求存储至消息队列。96.可选的,服务请求方在执行上述步骤301至步骤305之后,确定采用缓存空间中服务请求进行多次第一重试处理失败,此时服务请求方可以将服务请求存储至消息队列。或者,服务请求方可以在响应于服务请求的调用失败指令之后,直接将服务请求存储至消息队列,即服务请求方不执行上述步骤301至步骤303,。该消息队列存储的数据具有持久性。97.可选的,本发明实施例中业务系统可以是基于spring框架开发的,服务请求方处理的从终端获取的服务请求为将其对应的对象。为了将服务请求存储至消息队列,则需要将服务请求转换成可存储的形式。因此服务请求方将服务请求存储至消息队列的过程可以包括步骤a1和步骤a2。98.在步骤a1中,将服务请求序列化处理,得到序列化后的服务请求信息。99.序列化是将对象的状态信息转换为可以存储或传输的形式的过程。其中,序列化可以指把对象转换为字节序列,使得在传递和保存对象的时候,保证对象的完整性和可传递性,便于在网络上传输或者保存在本地文件中。示例的,服务请求方可以加载有fastjson(一个java库),fastjson用于java对象与json格式之间的转换。tojsonstring()函数用于将java对象转换成json格式。服务请求方可以利用fastjson调用tojsonstring方法,将服务请求序列化处理,得到序列化后的服务请求信息,该序列化后的服务请求信息的数据格式为json格式,便于实现服务请求的存储。100.其中,序列化后的服务请求信息为消息体,该服务请求信息可以包括序列化前的服务请求的调用方法以及该服务请求的请求参数。可选的,该服务请求信息还可以包括该服务请求的类名等信息。101.步骤a2、将服务请求信息存储至消息队列。102.服务请求方可以作为生产者将序列化后的服务请求信息发送至消息队列。103.本发明实施例中,在执行步骤306将服务请求存储至消息队列之前,服务请求方还可以获取服务请求对应处理的代理注解,基于代理注解生成代理对象。当执行该服务请求对应的处理时,利用代理对象拦截服务请求,以便服务请求方将拦截得到的服务请求发送至消息队列。可选的,该代理注解用于拦截服务请求。其可以与上述步骤403中的代理注解为同一代理注解。则该代理注解基于面向切面编程(aspectorientedprogramming,aop)技术。服务请求方获取服务请求对应处理的代理注解,通过aop拦截服务请求,以获取服务请求。104.步骤307、获取消息队列中的服务请求进行第二重试处理。105.可选的,服务请求方可以作为消费者,周期性的轮训消息队列,从而在消息队列存储有服务请求时,获取该服务请求。或者,消息队列可以在确定存储有服务请求后,将该服务请求发送至服务请求方,从而使得该服务请求方获取消息队列中的服务请求。106.可选的,上述服务请求方将服务请求转换成可存储的形式后存储至消息队列。相应的,服务请求方对从消息队列获取的服务请求(也即是上述序列化后的服务请求信息)进行第二重试处理时,也需要首先对该从消息队列获取的服务请求进行后处理,再将后处理后的结果进行第二重试处理。则服务请求方获取消息队列中的服务请求进行重试处理的过程可以包括步骤b1至步骤b3。107.在步骤b1中,获取消息队列中的服务请求对应的对象。108.其中,服务请求方获取消息队列中的服务请求对应的对象的过程可以包括:对从消息队列中获取的服务请求信息进行反序列化处理,得到反序列化处理后的服务请求。109.反序列化处理后的服务请求为服务请求对应的对象。与上述序列化相对的是,反序列化是将存储或传输的形式的数据转换成对象的过程。其中,反序列化可以指把字节序列转换为对象。示例的,服务请求方可以加载有fastjson(一个java库),fastjson用于java对象与json格式之间的转换。parseobject()函数用于将json格式转换成java对象。服务请求方可以利用fastjson调用parseobject方法,将服务请求信息反序列化处理,得到反序列化后的服务请求,该反序列化后的服务请求的数据类型为对象类型。110.在步骤b2中,通过反射机制调用服务请求对应处理,该反射机制用于确定服务请求对应的对象和服务请求对应的处理的关系。111.服务请求方通过反射机制调用服务请求对应处理,以实现对服务请求第二重试处理。其中,反射机制(java反射机制)称为java语言的反射机制,其可以实现动态获取程序信息以及动态调用对象的功能。具体的,该反射机制是指在运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,也可以了解任意一个类的成员变量和方法,还可以调用任意一个对象的属性和方法。示例的,服务请求方通过反射机制调用服务请求对应处理的过程可以包括:112.获取服务请求对应对象的class对象,实例化该class对象,获取实际类的调用方法,调用获取的调用方法,实现对服务请求的重试处理。其中,实际类的调用方法是该服务请求对应的运行时的处理。服务请求方法调用执该调用方法,可以实现对该服务请求进行其相应处理,以实现对服务请求的进行重试处理。113.步骤308、当第二重试处理成功时,结束服务请求重试处理。114.步骤309、当第二重试处理失败时,获取第二重试处理失败的第二总数。115.可选的,服务请求方获取第二重试处理失败的第二总数的实现方法可以包括以下两种实现方式。116.在第一种可选的实现方式中,存储至消息队列的服务请求可以包括重试次数参数,该重试次数参数可以用于表示从消息队列中获取的服务请求进行第二重试处理的次数。117.开发人员可以通过配置消息队列,使得该消息队列执行ack机制时,无论从消费者处接收到是确认字符ack还是非确定字符nack,其均会对消费者获取的服务请求执行删除处理。118.当消费者确定服务请求调用失败时,服务请求方更新服务请求中重试次数参数,得到更新后的服务请求。将该更新后的服务请求发送至消息队列。则当从消息队列中获取的服务请求调用失败时,服务请求方可以获取更新后的服务请求中重试次数参数,确定服务请求第二重试处理失败的第二总数。119.在第二种可选的实现方式中,服务请求方可以根据为接收到的非确定字符nack的次数,确定服务请求第二重试处理失败的第二总数。示例的,服务请求方在每次接收到非确定字符nack,对第二总数的数值执行加1更新操作,得到更新后的第二总数,该更新后的第二总数为所需确定的服务请求第二重试处理失败的第二总数。120.步骤310、判断第二总数是否大于第二总数阈值。若第二总数大于第二总数阈值,执行步骤311;若第二总数小于或等于第二总数阈值,执行步骤307至步骤310。121.服务请求方比较服务请求调用失败的第二总数与第二总数阈值的大小,确定该第二总数是否大于第二总数阈值。当第二总数大于第二总数阈值时,确定通过将服务请求存储至消息队列,以通过消息队列实现对服务请求的重复重试处理失败。当第二总数小于或等于第二总数阈值时,表明可以重复通过消息队列实现对服务请求的重试处理。122.步骤311、将服务请求存储至数据库。123.当第二重试处理失败的第二总数大于第二总数阈值时,服务请求方可以将服务请求存储至数据库。可选的,本发明实施例中业务系统可以是基于spring框架开发的,服务请求方处理的从终端获取的服务请求为将其对应的对象。而存储空间为数据库,服务请求方需要将服务请求转换成可存储的形式后,持久化至数据库。因此服务请求方将服务请求存储至数据库的过程可以包括步骤c1至步骤c2。124.在步骤c1中,将服务请求序列化处理,得到序列化后的服务请求信息。125.此步骤的解释和具体实现方法可以参考上述步骤a1中的解释,本发明实施例对此不做赘述。126.步骤c2中,将服务请求信息持久化至数据库。127.其中,持久化指的是将程序数据的持久状态和瞬时状态转换的机制。例如,通过持久化,可以将瞬时数据(比如内存中的数据)持久化为持久数据(比如持久化至数据库中,能够长久保存)。则服务请求可以长期存储至该数据库中,而非在服务请求对应处理执行后就释放。该执行可以指执行成功或者执行失败。可选的,服务请求方可以通过java数据库连接(javadatabaseconnectivity,jdbc)接口,基于服务请求信息创建服务请求数据,将该服务请求数据存储至数据库。128.示例的,服务请求方基于服务请求数据创建数据库(mysql)中的系统重试表sys_retry_task(createtable`sys_retry_task`)。该系统重试表可以包括8列,该8列的列名称、数据类型以及属性如下述表1。129.表1[0130][0131]如表1所示,该系统重试表sys_retry_task可以包括8列。该8列的列名称分别为:任务标识task_id、身份名称identity_name、参数params、状态status、重试次数retry_count、备注remark、创建时间create_date以及编辑时间edit_date。每个列名称依次对应的数据类型为:bigint(20)、varchar(50)、text、tinyint(4)、int(11)、varchar(1000)、datetime以及datetime。每个列名称依次对应的属性为:notnullauto_increment、notnullcomment、comment、notnullcomment、notnulldefault'0'comment、defaultnullcomment、notnull以及defaultnull。本发明实施例中,系统重试表sys_retry_task的主关键字可以为task_id(primarykey(`task_id`)),该主关键字是值用于唯一标识表项中的记录。系统重试表sys_retry_task可以以身份名称identity_name字段和状态status字段建立联合索引(key`idx_identityname_status`(`identity_name`,`status`)),以提升系统重试表的查询效率。系统重试表所在数据库的索引可以设置为innodb,自动增长的起始值为5,该数据库的默认字符集为utf8,注解为系统重试表(engine=innodbauto_increment=5defaultcharset=utf8comment='系统重试表')。[0132]其中,任务标识task_id和身份名称identity_name用于存储服务请求的重试任务的唯一标识。参数params用于存储服务请求的调用方法、请求参数和类名等服务请求信息。状态status用于存储当前对服务请求进行重试处理的状态。例如,状态可以用数字标识。状态为1,表示服务请求正在进行重试处理(也即是处理中)。状态为2,表示服务请求调用成功。状态为3,表示服务请求调用失败。重试次数retry_count用于存储服务请求进行重试处理的次数。备注remark用于存储服务请求的重试任务的描述,例如,该重试任务所属的项目信息和该重试任务的作用等。创建时间create_date用于存储系统重试表的创建时间。编辑时间edit_date用于存储系统重试表更新时间,也即是对该系统重试表最新操作时间。[0133]notnullauto_increment表示字段为非空自增变量。notnullcomment表示字段不能为空字符的注解,例如身份名称identity_name的属性notnullcomment表示身份名称不能为空字符。comment表示字段注解。notnulldefault'0'comment表示字段不能为空字符的注解且字段默认值为0。defaultnullcomment表示字段默认值为空字符的注解。notnull表示字段为非空字段。defaultnull表示字段默认值为null。[0134]服务请求方在执行上述步骤311将服务请求信息存储至数据库后,可以重复获取数据库中的服务请求进行第三重试处理。可选的,当第三重试处理成功时,可以重复获取数据库中的服务请求进行第三重试处理。其中,对从数据库中获取的服务请求进行第三重试处理的重复次数可以是无限的。或者,对从数据库中获取的服务请求进行第三重试处理的重复次数可以是有限的。当对服务请求重复进行第三重试处理失败时,可以进行人工干预。[0135]示例的,服务请求方可以重复获取数据库中的服务请求进行第三重试处理,直至第三重试处理成功或者第三重试处理失败的统计数据满足设定条件。当第三重试处理失败的统计数据满足设定条件时,发送报警信息,该报警信息用于提醒服务请求调用失败。本发明实施例以服务请求方可以重复获取数据库中的服务请求进行第三重试处理,直至第三重试处理失败的统计数据满足设定条件为例进行说明。[0136]步骤312、获取数据库中的服务请求进行第三重试处理。[0137]服务请求方可以周期性地获取数据库中的服务请求,以对每个获取的服务请求进行第三重试处理。可选的,服务请求方可以注入定时任务,并通过读取该定时任务,周期性地获取数据库中的服务请求。该定时任务用于在被服务请求方执行时,使得该服务请求方可以定时从数据库中获取调用失败的服务请求。[0138]示例的,基于上述数据库中存储的系统重试表,服务请求方根据系统重试表中状态,读取数据库中调用失败的服务请求。例如,服务请求方可以遍历数据库中各个服务请求对应的系统重试表,读取状态为表示服务请求失败的系统重试表的参数中的服务请求信息。[0139]可选的,与上述服务请求方将服务请求序列化处理,将序列化后的服务请求信息存储至数据库相应的,服务请求方获取数据库中的服务请求进行重试处理的过程可以包括步骤d1至步骤d3。[0140]在步骤d1中,获取数据库中的服务请求对应的对象。[0141]其中,服务请求方获取数据库中的服务请求对应的对象的过程可以包括:对从数据库中获取的服务请求信息进行反序列化处理,得到反序列化处理后的服务请求。[0142]在步骤d2中,通过反射机制调用服务请求对应的处理,该反射机制用于确定服务请求对应的对象和服务请求对应的处理的关系。[0143]服务请求方通过反射机制调用服务请求对应的处理,以实现对服务请求进行第三重试处理。[0144]步骤d1至步骤d3的解释和具体实现方法依次可以参考上述步骤b1至步骤b3中的解释,本发明实施例对此不做赘述。[0145]步骤313、当第三重试处理成功时,结束服务请求重试处理。[0146]步骤314、当第三重试处理失败时,获取第三重试处理失败的第三总数。[0147]可选的,从数据库中获取的服务请求还可以包括重复次数参考,该重试次数参数可以用于表示从数据库中获取的服务请求进行重试处理的次数。服务请求方可以在该服务请求调用失败时,更新服务请求中重试次数参数,得到更新后的服务请求。服务请求方可以获取更新后的服务请求中重试次数参数,确定第三重试处理失败的第三总数。[0148]示例的,基于上述数据库中存储的系统重试表,服务请求方可以每次从数据库读取系统重试表的参数中的服务请求信息时,更新该系统重试表中重试次数。当第三重试处理失败时,服务请求方可以获取该服务请求信息所属系统重试表中的重试次数,确定服务请求第三重试处理失败的第三总数。[0149]步骤315、判断第三总数是否大于第三总数阈值。若第三总数大于第三总数阈值,执行步骤316;若第三总数小于或等于第三总数阈值,执行步骤312至步骤315。[0150]服务请求方比较第三重试处理失败的第三总数与第三总数阈值的大小,确定该第三总数是否大于第三总数阈值。当第三总数大于第三总数阈值时,确定通过将服务请求存储至数据库,以通过数据库实现对服务请求的重复重试处理失败。当第三总数小于或等于第三总数阈值时,表明可以重复通过数据库实现对服务请求的重试处理。[0151]步骤316、发送报警响应,该报警响应用于提醒服务请求调用失败。[0152]服务请求方可以在第三重试处理失败的第三总数大于第三总数阈值时,确定服务请求调用失败。服务请求方可以发送报警响应,提醒开发人员服务请求调用失败,需要进行人工干预。此时,可以人工对该服务请求进行第四重试处理,保证服务请求方调用成功,保障了业务逻辑执行的完整性,实现服务请求方和服务响应方的业务交互。可选的,服务请求方发送报警响应可以为服务请求方生成并播放语音报警提示。或者服务请求方生成邮件报警提示,并发送至开发人员等,本发明对此不做限定。[0153]需要说明的是,本发明实施例提供的数据处理方法中,服务请求方可以仅执行步骤301至步骤308。其中,当第二重试处理失败时,可以返回执行步骤307,直至第二重试处理成功或者第二重试处理失败的统计数据满足设定条件。可选的,当第二重试处理失败的统计数据满足设定条件时,服务请求方可以发送报警响应。数据处理方法包括通过重试机制对服务请求进行重试处理,以及通过消息队列实现对服务请求进行重试处理,也即是使得数据处理方法可以仅包括上述第一阶段和第二阶段。[0154]或者,服务请求方还可以仅执行步骤301至步骤305,以及步骤311至步骤313。其中,当第一总数大于第一总数阈值时,可以执行步骤311将服务请求存储至数据库。当第三重试处理失败时,返回执行步骤312,直至第三重试处理成功或者第三重试处理失败的统计数据满足设定条件。可选的,当第二重试处理失败的统计数据满足设定条件时,服务请求方可以发送报警响应。数据处理方法包括通过重试机制对服务请求进行重试处理,以及通过对数据库调用实现对服务请求进行重试处理,也即是使得数据处理方法可以仅包括上述第一阶段和第三阶段。需要说明的是,在此基础上,服务请求方执行步骤310之前,服务请求方还可以获取服务请求对应处理的代理注解,基于代理注解生成代理对象。当执行该服务请求对应的处理时,利用代理对象拦截服务请求,以便服务请求方将拦截得到的服务请求发送至数据库。[0155]或者,服务请求方还可以仅执行步骤306至步骤313。其中,响应于服务请求调用失败指令,执行步骤306将服务请求发送至消息队列。当第三重试处理失败时,返回执行步骤312,直至第三重试处理成功或者第三重试处理失败的统计数据满足设定条件。可选的,当第二重试处理失败的统计数据满足设定条件时,服务请求方可以发送报警响应。数据处理方法包括通过消息队列实现对服务请求进行重试处理,以及通过对数据库调用实现对服务请求进行重试处理,也即是使得数据处理方法可以仅包括上述第二阶段和第三阶段。即当确定服务请求初次调用失败时,服务请求方可以将服务请求存储至消息队列,重复获取消息队列中的服务请求进行重试处理,直至服务请求调用失败的第二总数大于第二总数阈值或者服务请求调用成功。当第二总数大于所述第二总数阈值时,确定服务请求调用失败。[0156]或者,服务请求方还可以仅执行步骤306至步骤308。其中,响应于服务请求调用失败指令,执行步骤306将服务请求发送至消息队列。当第二重试处理失败时,可以返回执行步骤307,直至第二重试处理成功或者第二重试处理失败的统计数据满足设定条件。可选的,当第二重试处理失败的统计数据满足设定条件时,服务请求方可以发送报警响应。数据处理方法包括通过消息队列实现对服务请求进行重试处理,也即是使得数据处理方法可以仅包括上述第二阶段。[0157]或者,服务请求方还可以仅执行步骤311至步骤313。其中,响应于服务请求调用失败指令,执行步骤311将服务请求发送至数据库。当第三重试处理失败时,返回执行步骤312,直至第三重试处理成功或者第三重试处理失败的统计数据满足设定条件。可选的,当第二重试处理失败的统计数据满足设定条件时,服务请求方可以发送报警响应。数据处理方法包括通过数据库实现对服务请求进行重试处理,也即是使得数据处理方法可以仅包括上述第三阶段。[0158]综上所述,本发明实施例提供的数据处理方法,可以通过响应于服务请求的调用失败指令,获取缓存空间中存储的服务请求进行第一重试处理,并在该第一重试处理失败时,将服务请求存储至目标存储空间,重复获取目标存储空间中存储的服务请求进行第二重试处理。其中,由于目标存储空间存储的数据具有持久性,使得服务请求方可以持久地重复获取该服务请求进行第二重试处理,实现了服务请求重试处理的持久性。因此即使在服务请求方重试过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等无法提供服务的情况下,持久性的重试处理机制,提高了服务请求方调用成功的概率,保障了业务逻辑执行的完整性。进一步的,当服务请求方和服务响应方对数据一致性要求较高时,由于本发明实施例提供的数据处理方法可以在一定程度上保障服务请求的成功,保障二者之间的数据交互,因此满足了二者数据一致性要求。[0159]本发明实施例将通过下述示例再次对提供的数据处理方法进行示意性说明。示例的,数据处理方法主要针对的是java语言。开发工具可以为intellijidea,简称ide。jdk(一种java开发工具包)版本可以为jdk8。主要涉及的技术可以包括mysql、springaop、反射机制以及rmq。请参考图4,其示出了本发明实施例提供的一种持久化重试处理机制的框架图。本发明实施例中业务系统的服务请求方的持久化重试系统可以是基于spring框架开发的。持久化重试系统启动后,可以注入定时任务、方法拦截处理器和序列化处理器,以及动态注入消息队列的生产者和消费者等信息。其中,方法拦截处理器和序列化处理器是基于spring框架的spring代理机制加载的。也即是,可以通过spring代理机制,实现对服务请求序列化处理,以及利用反射机制获取服务请求的实际类的调用方法。[0160]如图4所示,spring代理可以在执行服务请求对应处理(服务请求对应方法)时,通过方法拦截器拦截执行服务请求,将调用失败的服务请求进行序列化处理后,发送至mq或者持久化至数据库(database,db)。从mq中获取存储的服务请求进行反序列化处理后,利用反射机制获取服务请求的实际类的调用方法,并执行该调用方法。通过读取定时任务,可以周期性的从db中获取调用失败的服务请求,并调用spring代理,对该服务请求进行反序列化处理后,利用反射机制获取服务请求的实际类的调用方法,并执行该方法,以执行服务请求对应处理。需要说明的是,图4中所示的含义与解释可以参考上述提供的另一种数据处理方法中的相关步骤的解释,本发明实施例对此不作赘述。[0161]请参考图5,其示出了本发明实施例提供的又一种数据处理方法的流程图。该数据处理方法中以服务请求为邮件服务请求为例,该邮件服务请求为服务请求方在请求发送邮件服务时生成的请求,用于调取发送邮件服务。该数据处理方法可以由服务请求方执行,该服务请求方可以为图1所示的业务系统中业务服务器。如图5所示,该方法包括:[0162]步骤501、通过服务请求应用程序接口调用邮件服务请求。[0163]其中,应用程序接口(applicationprogramminginterface,api)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。api用于提供应用程序与开发人员基于某软件或硬件得以访问的一组例程。[0164]步骤502、执行邮件服务请求,以提供邮件发送服务。[0165]服务请求方法通过执行邮件服务请求,以在邮件服务请求调用成功时,使得邮件可以发送成功。或者在邮件服务请求调用失败时,使得邮件发送失败。[0166]步骤503、判断邮件是否发送成功。当邮件发送成功时,执行步骤504;当邮件发送失败时,执行步骤505。[0167]当邮件发送成功时,表明邮件服务请求调用成功。当邮件发送失败时,表明邮件服务请求调用失败。[0168]步骤504、结束执行邮件服务请求。[0169]步骤505、发送邮件服务请求对应消息至消息队列。[0170]邮件服务请求对应消息是基于邮件服务请求进行序列化处理后得到的。[0171]步骤506、判断消息队列重试次数是否受限。当消息队列重试次数未受限时,执行步骤507;当消息队列重试次数受限时,执行步骤508。[0172]判断消息队列重试次数是否受限,也即是判断从消息队列中获取的邮件服务请求调用失败的次数是否大于第二总数阈值。当消息队列重试次数受限时,表明该邮件服务请求调用失败的次数大于第二总数阈值。当消息队列重试次数未受限时,表明该邮件服务请求调用失败的次数小于或等于第二总数阈值。[0173]步骤507、执行邮件服务请求发送邮件,执行步骤503。[0174]服务请求方执行邮件服务请求发送邮件,也即是服务请求方对邮件服务请求进行重试处理。该重试处理的过程可以包括:服务请求方将对从消息队列中获取的邮件服务请求对应信息进行反序列化处理,得到反序列化处理后的邮件服务请求。对于反序列化处理后的邮件服务请求,利用反射机制获取邮件服务请求的实际类的调用方法。调用获取的邮件服务请求的实际类的调用方法,以对邮件服务请求进行重试处理。[0175]步骤508、将邮件服务请求对应消息持久化至mysql。[0176]步骤509、判断定时任务重试次数是否受限。当定时任务重试次数未受限时,执行步骤507;当定时任务重试次数受限时,执行步骤510。[0177]判断定时任务重试次数是否受限,也即是判断从mysql中获取的邮件服务请求调用失败的次数是否大于第一总数阈值。当定时任务重试次数受限时,表明该邮件服务请求调用失败的次数大于第一总数阈值。当定时任务重试次数未受限时,表明该邮件服务请求调用失败的次数小于或等于第一总数阈值。[0178]步骤510、确定邮件服务请求调用失败,发送报警响应。[0179]不难理解的是,上述步骤505、步骤506至步骤507的过程为通过消息队列对服务请求进行重试处理的过程。利用消息队列ack机制,使得存储于该消息队列中的数据在未被调用成功时具有持久性。保证了在服务请求方重启和网络不稳定等无法提供服务情况下,服务请求可以调用成功。上述步骤507至步骤509的过程为通过数据库对服务请求进行重试处理的过程。保证了在服务请求方重启和网络不稳定或者服务响应方不可用等无法提供服务情况下,服务请求可以调用成功。[0180]综上所述,本发明实施例提供的数据处理方法,可以通过响应于服务请求的调用失败指令,获取缓存空间中存储的服务请求进行第一重试处理,并在该第一重试处理失败时,将服务请求存储至目标存储空间,重复获取目标存储空间中存储的服务请求进行第二重试处理。其中,由于目标存储空间存储的数据具有持久性,使得服务请求方可以持久地重复获取该服务请求进行第二重试处理,实现了服务请求重试处理的持久性。因此即使在服务请求方重试过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等无法提供服务的情况下,持久性的重试处理机制,提高了服务请求方调用成功的概率,保障了业务逻辑执行的完整性。进一步的,当服务请求方和服务响应方对数据一致性要求较高时,由于本发明实施例提供的数据处理方法可以在一定程度上保障服务请求的成功,保障二者之间的数据交互,因此满足了二者数据一致性要求。[0181]请参考图6,其示出了本发明实施例提供的一种数据处理装置的框图。该数据处理装置600可以包括:[0182]第一重试处理模块601,用于响应于服务请求的调用失败指令,获取缓存空间中的服务请求进行第一重试处理。[0183]第一存储模块602,用于当第一重试处理失败时,将服务请求存储至目标存储空间,目标存储空间存储的数据具有持久性。[0184]第二重试处理模块603,用于重复获取目标存储空间中的服务请求进行第二重试处理。[0185]可选的,第一存储模块602,还用于:[0186]当第一重试处理失败时,获取第一重试处理失败的第一总数;[0187]当第一总数小于或者等于第一总数阈值时,返回执行获取缓存空间中的服务请求进行第一重试处理,[0188]当第一总数大于第一总数阈值时,将服务请求存储至目标存储空间。[0189]可选的,目标存储空间包括数据库或者消息队列。[0190]可选的,目标存储空间包括消息队列和数据库,第二重试处理模块603,还用于:[0191]获取目标存储空间中的服务请求进行第二重试处理;[0192]当第二重试处理失败时,获取第二重试处理失败的第二总数;[0193]当第二总数小于或者等于第二总数阈值时,返回执行获取目标存储空间中的服务请求进行第二重试处理。[0194]如图7所示,装置还包括:[0195]第二存储模块604,用于当第二总数大于第二总数阈值时,将服务请求存储至数据库。[0196]第三重试处理模块605,用于重复获取数据库中的服务请求进行第三重试处理。[0197]可选的,第二重试处理模块603,还用于:[0198]重复获取目标存储空间中的服务请求进行第二重试处理,直至第二重试处理成功或者第二重试处理失败的统计数据满足设定条件;[0199]如图7所示,装置还包括:发送模块606,用于当第二重试处理失败的统计数据满足设定条件时,发送报警信息,报警信息用于提醒服务请求调用失败。[0200]可选的,第一重试处理模块601,还用于:获取缓存空间中存储的服务请求;执行重试注解对服务请求进行重试处理。[0201]可选的,如图7所示,装置还包括:[0202]获取模块607,用于获取服务请求对应处理的代理注解。[0203]生成模块608,用于基于代理注解生成代理对象。[0204]拦截模块609,用于当执行服务请求对应的处理时,利用代理对象拦截服务请求。[0205]第一存储模块602,还用于:将拦截得到的服务请求存储至目标存储空间。[0206]综上所述,本发明实施例提供的数据处理方法,可以通过第一重试处理模块响应于服务请求的调用失败指令,获取缓存空间中存储的服务请求进行第一重试处理。第一存储模块在该第一重试处理失败时,将服务请求存储至目标存储空间,以使得第二重试处理模块重复获取目标存储空间中存储的服务请求进行第二重试处理。其中,由于目标存储空间存储的数据具有持久性,使得服务请求方可以持久地重复获取该服务请求进行第二重试处理,实现了服务请求重试处理的持久性。因此即使在服务请求方重试过程中,持续发生服务请求方重启、网络不稳定或者服务响应方不可用等无法提供服务的情况下,持久性的重试处理机制,提高了服务请求方调用成功的概率,保障了业务逻辑执行的完整性。进一步的,当服务请求方和服务响应方对数据一致性要求较高时,由于本发明实施例提供的数据处理方法可以在一定程度上保障服务请求的成功,保障二者之间的数据交互,因此满足了二者数据一致性要求。[0207]本发明实施例还提供了一种电子设备,该电子设备可以为上述服务请求方。如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,[0208]存储器803,用于存放计算机程序;[0209]处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:响应于服务请求的调用失败指令,获取缓存空间中的服务请求进行第一重试处理;当第一重试处理失败时,将服务请求存储至目标存储空间,目标存储空间存储的数据具有持久性;重复获取目标存储空间中的服务请求进行第二重试处理。[0210]上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0211]通信接口用于上述终端与其他设备之间的通信。[0212]存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non‑volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。[0213]上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。[0214]在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据处理方法。[0215]在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据处理方法。[0216]在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。[0217]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0218]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0219]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1