响应超时处理方法、服务器及客户端响应超时处理系统与流程

文档序号:17158692发布日期:2019-03-20 00:20阅读:2209来源:国知局
响应超时处理方法、服务器及客户端响应超时处理系统与流程

本发明涉及计算机应用技术领域,尤其涉及一种响应超时处理方法、服务器及客户端响应超时处理系统。



背景技术:

在客户端-服务器系统中,客户端依赖服务器来提供所需的服务,系统正常交互时,如图2所示,客户端向服务器发送请求a,服务器在接收到请求a后立即响应并将处理结果回执给客户端,但在实际应用场景中,当系统受网络延迟或网络中断等因素影响时,服务器可能会延迟接收或者未接收到请求a,对应的服务器会延时相应或者未响应,此时,由于客户端在预设时间内未收到服务器的处理结果回执,客户端会自行启动熔断机制,提示用户超时异常,同时针对请求a及时进行回滚操作,以便用户能够在客户端中对请求a发起重试,完成操作。

现有技术在发生超时异常事件时,服务器一般采取人工排除或者自动回滚机制来处理异常,由于人工排除耗时较长且准确性不佳,影响了用户的使用体验,因此不适宜大面积推广,对于自动回滚机制,虽然具有高效及时的特点,但是服务器无法对处理结果进行监测识别,即无法判断处理结果是正在处理还是完成处理,由于正在处理的处理结果无法进行回滚操作,假若服务器将其执意回滚,将会导致系统报错。



技术实现要素:

本发明的目的在于提供一种响应超时处理方法、服务器及客户端响应超时处理系统,能够及时、高效、准确的启动回滚机制处理异常,提高用户体验。

为了实现上述目的,本发明的一方面提供一种响应超时处理方法,包括:

步骤s1,服务器接收客户端发送的业务请求,同时在业务请求的处理进程中设置进度标识字符;

步骤s2,服务器向客户端反馈请求回执,并在请求回执为响应超时时,通过查询所述进度标识字符判断当前业务请求是否完成;

步骤s3,若当前业务请求处理已完成,则对所述业务请求执行回滚操作,若当前业务请求处理未完成,则变更所述进度标识字符;

步骤s4,在业务请求的处理进程执行完毕后,检查所述进度标识字符是否发生变更,当检查结果为是则对所述业务请求执行回滚操作,同时删除所述进度标识字符,当检查结果为否则直接删除所述进度标识字符;

步骤s5,返回步骤s1,通过客户端重新向服务器发送业务请求,直至步骤s2中的请求回执响应未超时为止。

优选地,在步骤s1中,在业务请求的处理进程中设置进度标识字符的方法为:

在业务请求处理进程中,通过redis缓存中的setnx方法设置进度标识字符。

优选地,在步骤s2中,服务器向客户端反馈请求回执,并在请求回执为响应超时时,通过查询所述进度标识字符判断当前业务请求是否完成的方法包括:

服务器基于当前业务请求的识别号,查询当前业务请求处理进程中的进度标识字符;

若当前处理进程未结束且查询结果存在,则输出当前业务请求处理未完成,否则输出当前业务请求处理已完成。

可选地,所述进度标识字符为状态值。

可选地,所述业务请求为非幂等服务请求。

示例性地,所述业务请求的识别号为业务流水号或者业务订单号。

与现有技术相比,本发明提供的响应超时处理方法具有以下有益效果:

本发明提供的响应超时处理方法中,服务器在接收到客户端发送的业务请求后,首先在业务请求的处理进程中设置进度标识字符,以便在后续程序中通过识别进度标识字符来判断当前业务请求是否处理完成,具体过程如下,当客户端在预设时间内未收到服务器反馈的请求回执,则认为该请求回执响应超时,此时会通过客户端向用户报错并自动向服务器发送调用指令,使得服务器能够根据调用指令查询先前在业务请求中设置的进度标识字符,并基于该进度标识字符判断当前业务请求是否完成,若判断结果为当前业务请求处理已完成,则可直接对已完成的业务请求执行回滚操作,若当前业务请求处理未完成,则暂时不对该业务请求执行回滚操作,只对上述进度标识字符进行变更操作,直至上述业务请求处理进程执行完毕后,通过核对进度标识字符是否发生变更,当结果为是时,则说明该业务请求先前未执行过回滚操作,此时只需对该业务请求执行回滚操作即可,同时删除进度标识字符,当结果为否时,则说明该业务请求先前已执行过回滚操作,此时只需删除该进度标识字符即可而无需重复对该业务请求执行回滚操作,最后用户通过客户端重新向服务器发送业务请求,执行上述操作直至用户的请求回执响应未超时为止。

可见,本发明通过在业务请求的处理进程中设置进度标识字符,并基于进度标识字符判断当前业务请求的处理进度,以实现在当前业务请求处理完成时服务器能够自动执行回滚操作,而在当前业务请求未处理完成时,为了避免系统报错先不对当前业务请求执行回滚操作,仅采取对进度标识字符进行变更的措施,使其在处理进程执行完毕后根据进度标识字符的变更核查结果选择性的对未执行过回滚操作的业务请求进行回滚操作,从而有效的避免了业务请求在处理进程结束前就执行回滚操作带来的系统报错的缺陷,保证了回滚操作启动时机的准确性以及系统的稳定性;另外,相比较于现有技术中通过人工解决响应超时的处理机制,采用本发明提供的超时处理方法还具有快速、高效地特点。

本发明的另一方面提供一种服务器响应超时处理系统,应用于上述技术方案所述的响应超时处理方法中,所述系统包括:

服务器设置单元,服务器接收客户端发送的业务请求,用于在业务请求的处理进程中设置进度标识字符;

服务器判断单元,服务器向客户端反馈请求回执,并在判断请求回执为响应超时时,通过查询所述进度标识字符判断当前业务请求是否完成;

服务器执行单元,用于根据判断结果,若当前业务请求处理已完成,则对所述业务请求执行回滚操作,若当前业务请求处理未完成,则变更所述进度标识字符;

服务器检查单元,用于在业务请求的处理进程执行完毕后,检查所述进度标识字符是否发生变更,当检查结果为是则对所述业务请求执行回滚操作,同时删除所述进度标识字符,当检查结果为否则直接删除所述进度标识字符;

服务器重试单元,用于通过客户端重新向服务器发送业务请求。

优选地,所述服务器判断单元包括:

服务器查询模块,用于通过服务器基于当前业务请求的识别号,查询当前业务请求处理进程中的进度标识字符;

服务器判断模块,用于在当前处理进程未结束且查询结果存在,则输出当前业务请求处理未完成,否则输出当前业务请求处理已完成。

与现有技术相比,本发明提供的服务器响应超时处理系统的有益效果与上述技术方案提供的响应超时处理方法的有益效果相同,在此不做赘述。

本发明的第三方面提供一种客户端响应超时处理系统,应用于上述技术方案所述的响应超时处理方法中,所述系统包括:

客户端设置单元,在客户端向服务器发送业务请求时,用于在业务请求的处理进程中设置进度标识字符;

客户端判断单元,客户端接收服务器反馈的请求回执,并在判断请求回执为响应超时时,用于通过查询所述进度标识字符判断当前业务请求是否完成;

客户端执行单元,用于根据判断结果,若当前业务请求处理已完成,则对所述业务请求执行回滚操作,若当前业务请求处理未完成,则变更所述进度标识字符;

客户端检查单元,用于在业务请求的处理进程执行完毕后,检查所述进度标识字符是否发生变更,当检查结果为是则对所述业务请求执行回滚操作,同时删除所述进度标识字符,当检查结果为否则直接删除所述进度标识字符;

客户端重试单元,用于通过客户端重新向服务器发送业务请求。

优选地,所述客户端判断单元包括:

客户端查询模块,用于通过客户端基于当前业务请求的识别号,查询当前业务请求处理进程中的进度标识字符;

客户端判断模块,用于在当前处理进程未结束且查询结果存在,则输出当前业务请求处理未完成,否则输出当前业务请求处理已完成。

与现有技术相比,本发明提供的客户端响应超时处理系统的有益效果与上述技术方案提供的响应超时处理方法的有益效果相同,在此不做赘述。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例一中响应超时处理方法的流程示意图;

图2为本发明实施例一中响应超时的原理示例图;

图3为本发明实施例二中服务器响应超时处理系统的结构框图;

图4为本发明实施例三中客户端响应超时处理系统的结构框图。

附图标记:

1-服务器设置单元,2-服务器判断单元;

3-服务器执行单元,4-服务器检查单元;

5-服务器重试单元,21-服务器查询模块;

22-服务器判断模块,6-客户端设置单元;

7-客户端判断单元,8-客户端执行单元;

9-客户端检查单元,10-客户端重试单元;

71-客户端查询模块,72-客户端判断模块。

具体实施方式

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

实施例一

图1为本发明实施例一中响应超时处理方法。请参阅图1,本实施例提供一种响应超时处理方法,包括:

步骤s1,服务器接收客户端发送的业务请求,同时在业务请求的处理进程中设置进度标识字符;步骤s2,服务器向客户端反馈请求回执,并在请求回执为响应超时时,通过查询进度标识字符判断当前业务请求是否完成;步骤s3,若当前业务请求处理已完成,则对业务请求执行回滚操作,若当前业务请求处理未完成,则变更进度标识字符;步骤s4,在业务请求的处理进程执行完毕后,检查进度标识字符是否发生变更,当检查结果为是则对业务请求执行回滚操作,同时删除进度标识字符,当检查结果为否则直接删除进度标识字符;步骤s5,返回步骤s1,通过客户端重新向服务器发送业务请求,直至步骤s2中的请求回执响应未超时为止。

本实施例提供的响应超时处理方法中,服务器在接收到客户端发送的业务请求后,首先在业务请求的处理进程中设置进度标识字符,以便在后续程序中通过识别进度标识字符来判断当前业务请求是否处理完成,具体过程如下,当客户端在预设时间内未收到服务器反馈的请求回执,则认为该请求回执响应超时,此时会通过客户端向用户报错并自动向服务器发送调用指令,使得服务器能够根据调用指令查询先前在业务请求中设置的进度标识字符,并基于该进度标识字符判断当前业务请求是否完成,若判断结果为当前业务请求处理已完成,则可直接对已完成的业务请求执行回滚操作,若当前业务请求处理未完成,则暂时不对该业务请求执行回滚操作,只对上述进度标识字符进行变更操作,直至上述业务请求处理进程执行完毕后,通过核对进度标识字符是否发生变更,当结果为是时,则说明该业务请求先前未执行过回滚操作,此时只需对该业务请求执行回滚操作即可,同时删除进度标识字符,当结果为否时,则说明该业务请求先前已执行过回滚操作,此时只需删除该进度标识字符即可而无需重复对该业务请求执行回滚操作,最后用户通过客户端重新向服务器发送业务请求,执行上述操作直至用户的请求回执响应未超时为止。

可见,本实施例通过在业务请求的处理进程中设置进度标识字符,并基于进度标识字符判断当前业务请求的处理进度,以实现在当前业务请求处理完成时服务器能够自动执行回滚操作,而在当前业务请求未处理完成时,为了避免系统报错先不对当前业务请求执行回滚操作,仅采取对进度标识字符进行变更的措施,使其在处理进程执行完毕后根据进度标识字符的变更核查结果选择性的对未执行过回滚操作的业务请求进行回滚操作,从而有效的避免了业务请求在处理进程结束前就执行回滚操作带来的系统报错的缺陷,保证了回滚操作启动时机的准确性以及系统的稳定性;另外,相比较于现有技术中通过人工解决响应超时的处理机制,采用本实施例提供的响应超时处理方法还具有快速、高效地特点。

可以理解的是,上述实施例中的业务请求是指非幂等服务请求,为了使本领域技术人员能够对响应超时处理方法更好的理解,本实施例以订单锁券为例进行如下说明:

当用户在购物车中选好商品时,可同时选择合适的优惠券进行订单提交,此时服务器在收到订单提交的业务请求后,会立即对业务请求进行处理同时向客户端反馈请求回执,其中,业务请求处理包括调用商品库存资源和促销优惠资源分别对所选商品和所选优惠券进行锁定,但是当客户端接收到请求回执的响应超时时用户并不清楚服务器是否已经对所选商品和所选优惠券锁定完毕,若在上述锁定操作未完毕的情况下执意对其执行回滚操作,将会导致服务器的不稳定性,而为了保证用户的购物体验,也不能够单方面的为了确保上述锁定操作执行完毕而留给服务器过多的执行时间,这种通过牺牲用户等待时间换来响应超时处理的方法将会降低用户的购物体验,显然也不合理。因此如何在锁定操作完成后尽快执行回滚操作成为了本实施例所要解决的关键问题,本实施例通过在锁定操作进程中设置进度标识字符,基于进度标识字符判断当前锁定操作的处理进度,以实现在当前锁定操作处理完成时服务器能够自动执行回滚操作,而在当前锁定操作未处理完成时,为了避免系统报错先不对当前锁定操作执行回滚操作,仅采取对进度标识字符进行变更的措施,使其在锁定操作执行完毕后根据进度标识字符的变更核查结果选择性的对未执行过回滚操作的锁定操作进行回滚操作,从而有效的避免了锁定操作在处理进程结束前就执行回滚操作带来的系统报错的缺陷。

示例性地,上述实施例步骤s1中,在业务请求的处理进程中设置进度标识字符的方法为:在业务请求处理进程中,通过redis缓存中的setnx方法设置进度标识字符。可选地,上述进度标识字符为状态值。

进一步地,上述实施例步骤s2中,服务器向客户端反馈请求回执,并在请求回执为响应超时时,通过查询所述进度标识字符判断当前业务请求是否完成的方法包括:

服务器基于当前业务请求的识别号,查询当前业务请求处理进程中的进度标识字符;若当前处理进程未结束且查询结果存在,则输出当前业务请求处理未完成,否则输出当前业务请求处理已完成。示例性地,业务请求的识别号为业务流水号或者业务订单号。

实施例二

请参阅图1和图3,本实施例提供一种服务器响应超时处理系统,包括:

服务器设置单元1,在服务器接收客户端发送的业务请求时,用于在业务请求的处理进程中设置进度标识字符;

服务器判断单元2,服务器向客户端反馈请求回执,并在判断请求回执为响应超时时,通过查询所述进度标识字符判断当前业务请求是否完成;

服务器执行单元3,用于根据判断结果,若当前业务请求处理已完成,则对所述业务请求执行回滚操作,若当前业务请求处理未完成,则变更所述进度标识字符;

服务器检查单元4,用于在业务请求的处理进程执行完毕后,检查所述进度标识字符是否发生变更,当检查结果为是则对所述业务请求执行回滚操作,同时删除所述进度标识字符,当检查结果为否则直接删除所述进度标识字符;

服务器重试单元,用于通过客户端重新向服务器发送业务请求。

优选地,服务器判断单元2包括:

服务器查询模块21,用于通过服务器基于当前业务请求的识别号,查询当前业务请求处理进程中的进度标识字符;

服务器判断模块22,用于在当前处理进程未结束且查询结果存在,则输出当前业务请求处理未完成,否则输出当前业务请求处理已完成。

与现有技术相比,本发明实施例提供的服务器响应超时处理系统的有益效果与上述实施例一提供的响应超时处理方法的有益效果相同,在此不做赘述。

实施例三

请参阅图1和图4,本实施例提供一种客户端响应超时处理系统,包括:

客户端设置单元6,在客户端向服务器发送业务请求时,用于在业务请求的处理进程中设置进度标识字符;

客户端判断单元7,客户端接收服务器反馈的请求回执,并在判断请求回执为响应超时时,用于通过查询所述进度标识字符判断当前业务请求是否完成;

客户端执行单元8,用于根据判断结果,若当前业务请求处理已完成,则对所述业务请求执行回滚操作,若当前业务请求处理未完成,则变更所述进度标识字符;

客户端检查单元9,用于在业务请求的处理进程执行完毕后,检查所述进度标识字符是否发生变更,当检查结果为是则对所述业务请求执行回滚操作,同时删除所述进度标识字符,当检查结果为否则直接删除所述进度标识字符;

客户端重试单元10,用于通过客户端重新向服务器发送业务请求。

优选地,客户端判断单元7包括:

客户端查询模块71,用于通过客户端基于当前业务请求的识别号,查询当前业务请求处理进程中的进度标识字符;

客户端判断模块72,用于在当前处理进程未结束且查询结果存在,则输出当前业务请求处理未完成,否则输出当前业务请求处理已完成。

与现有技术相比,本发明实施例提供的客户端响应超时处理系统的有益效果与上述实施例一提供的响应超时处理方法的有益效果相同,在此不做赘述。

本领域普通技术人员可以理解,实现上述发明方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,上述程序可以存储于计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:rom/ram、磁碟、光盘、存储卡等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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