一种服务调用系统及方法技术方案

技术编号:33352028 阅读:11 留言:0更新日期:2022-05-08 09:59
本申请实施例公开了一种服务调用系统及方法,其中,网关可以根据客户端发送的服务请求中历史访问状态字段携带的响应状态码、以及服务端针对该服务请求反馈的响应消息中携带的响应状态码,确定客户端是否有必要继续重试发送服务请求以访问对应的服务,并据此生成重试指示信息提供给客户端,以使客户端据此决定是否继续重试发送服务请求。如此,当网关根据服务请求中历史访问状态字段携带的响应状态码、以及响应消息中携带的响应状态码,确定客户端没有必要继续重试时,可以及时地控制客户端停止重试发送服务请求,从而避免客户端因反复重试而产生大量的服务请求,进而避免因服务请求数量过多而导致发生雪崩现象。请求数量过多而导致发生雪崩现象。请求数量过多而导致发生雪崩现象。

【技术实现步骤摘要】
一种服务调用系统及方法


[0001]本申请涉及互联网
,具体涉及一种服务调用系统及方法。

技术介绍

[0002]随着移动互联网的蓬勃发展,如今涌现出了各种各样的后端服务,其中很多后端服务又与其它后端服务之间存在各种数据交互。在这种复杂的、多层级的软件技术架构中,经常发生客户端与后端服务、后端服务与其它后端服务之间调用失败的情况,网络不好、被调用的后端服务响应速度慢、调用方的超时时间设置得过短而接口处理时间较长等原因,都有可能导致服务调用失败的情况发生。
[0003]目前,针对上述情况,后端服务的调用方通常会结合自身的业务特性,设置请求重试策略,如通过重复发起请求来进行重试。而在微服务结构流行的如今,响应于客户端发起的请求,服务端一般会有下游的多个服务提供数据;例如,假设服务1调用服务2,服务2调用服务3失败时,服务2会重复调用服务3,如此多次调用失败后,会向服务1返回失败消息,此时服务1会重复执行调用服务2的操作,在该种场景下,服务2实际上调用子服务3接口m*n次,其中m为服务1调用服务2的次数,n为每次服务1调用完服务2后服务2调用服务3的次数。
[0004]在上述场景中,服务与服务之间、服务下的子服务与子服务之间重复调用,会导致下游服务的请求量暴增,进而导致服务响应慢,严重时甚至可能发生宕机的情况,引起整个系统的不可用,这种现象又被称为雪崩。

技术实现思路

[0005]本申请实施例提供了一种服务调用系统及方法,能够减少在重试过程中的请求量,从而避免发生雪崩现象。
[0006]有鉴于此,本申请第一方面提供了一种服务调用系统,所述系统包括:
[0007]客户端,用于接收服务管理平台下发的基础服务信息,所述基础服务信息至少包括服务主域名、服务重试域名、重试接口路径、主域名超时时间和重试域名超时时间;以及,用于基于所述基础服务信息发送服务请求,所述服务请求包括超时时间字段和历史访问状态字段,所述超时时间字段用于承载所述服务请求对应的总超时时间,所述历史访问状态字段用于承载在所述服务请求之前发送的服务请求对应的响应状态码;以及,用于接收所述服务请求对应的响应消息;
[0008]网关,用于向服务端转发所述客户端发送的服务请求,以及向所述客户端转发所述服务端针对所述服务请求发送的响应消息;以及,用于根据所述服务请求中所述历史状态字段承载的内容、以及所述响应消息携带的所述服务请求对应的响应状态码中的至少一项,生成所述重试指示信息,并将所述重试指示信息添加至所述响应消息中,所述重试指示信息用于指示所述客户端是否需要再次发送服务请求;
[0009]所述服务端,用于根据所述服务请求中所述超时时间字段承载的内容,提供所述服务请求访问的域名对应的服务,并根据所述服务的响应情况生成所述服务请求对应的响
应状态码,将所述响应状态码添加至所述服务请求对应的响应消息中,发送所述响应消息。
[0010]可选的,所述客户端具体用于:
[0011]在所述客户端基于所述服务主域名发送第一服务请求,并且接收到所述第一服务请求对应的第一响应消息的情况下,若所述第一响应消息携带有用于指示所述客户端再次发送服务请求的所述重试指示信息,则所述客户端基于所述服务重试域名发送第二服务请求,所述第二服务请求中的所述历史访问状态字段包括所述第一响应消息中携带的所述第一服务请求对应的响应状态码;若所述第一响应消息携带有用于指示所述客户端无需再次发送服务请求的所述重试指示信息,则所述客户端停止发送服务请求。
[0012]可选的,所述基础服务信息包括多个按序排列的服务重试域名;所述客户端具体用于:
[0013]在所述客户端基于所述基础服务信息中的第一个服务重试域名发送所述第二服务请求,并且接收到所述第二服务请求对应的第二响应消息的情况下,若所述第二响应消息携带有用于指示所述客户端再次发送服务请求的所述重试指示信息,则所述客户端基于所述基础服务信息中的第二个服务重试域名,发送第三服务请求,所述第三服务请求中的所述历史访问状态字段包括所述第一服务请求和所述第二服务请求各自对应的响应状态码;若所述第二响应消息携带有用于指示所述客户端无需再次发送服务请求的所述重试指示信息,则所述客户端停止发送服务请求。
[0014]可选的,所述基础服务信息还包括替换服务域名;所述客户端还用于:
[0015]利用所述替换服务域名替换所述服务主域名;
[0016]基于所述替换服务域名发送第一服务请求。
[0017]可选的,所述网关具体用于:
[0018]若所述服务请求中所述历史状态字段承载的响应状态码用于表征此前已访问对应的服务、但未获取到对应的数据,且所述服务请求对应的响应消息中携带的响应状态码也用于表征已访问对应的服务、但未获取到对应的数据,则生成用于指示所述客户端无需再次重试发送服务请求的重试指示信息,并将所述重试指示信息添加至所述响应消息中;
[0019]若所述服务请求中所述历史状态字段承载的响应状态码用于表征此前未访问到对应的服务,和/或所述服务请求对应的响应消息中携带的响应状态码也用于表征未访问到对应的服务,则生成用于指示所述客户端再次发送服务请求的重试指示信息,并将所述重试指示信息添加至所述响应消息中。
[0020]可选的,所述网关具体用于:
[0021]若所述服务请求对应的响应消息中携带的响应状态码用于表征已访问到对应的服务、并且获取到对应的数据,则生成用于指示所述客户端无需再次重试发送服务请求的重试指示信息,并将所述重试指示信息添加至所述响应消息中。
[0022]可选的,所述服务端具体用于:
[0023]当所述服务请求访问的域名对应的服务为影响所述客户端功能的服务时,在访问所述服务下的每项子服务的过程中,统计访问所述子服务耗费的时间;
[0024]若访问所述服务下的各项子服务总共耗费的时间未超出所述服务请求中所述超时时间字段携带的总超时时间,则生成用于表征已访问到对应的服务、并且获取到对应的数据的响应状态码,并将所述响应状态码添加至所述服务请求对应的响应消息中;
[0025]若访问所述服务下的部分子服务总共耗费的时间超出所述服务请求中所述超时时间字段携带的总超时时间,则生成用于表征未完成访问的响应状态码,并将所述响应状态码添加至响应所述服务请求的响应消息中。
[0026]可选的,所述服务端还用于:
[0027]当所述服务请求访问的域名对应的服务为不影响所述客户端功能的服务时,若访问所述服务耗费的时间超过所述服务对应的预设响应时间,则对所述服务进行降级处理。
[0028]本申请第二方面提供了一种服务调用方法,所述方法包括:
[0029]客户端接收服务管理平台下发的基础服务信息,所述基础服务信息至少包括服务主域名、服务重试域名、重试接口路径、主域名超时时间和重试域名超时时间;并基于所述基础服务信息发送服务请求,所述服务请求包括超时时间字段和历史访问状态字段,所述超时时间字段用于承载所述服务本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种服务调用系统,其特征在于,所述系统包括:客户端,用于接收服务管理平台下发的基础服务信息,所述基础服务信息至少包括服务主域名、服务重试域名、重试接口路径、主域名超时时间和重试域名超时时间;以及,用于基于所述基础服务信息发送服务请求,所述服务请求包括超时时间字段和历史访问状态字段,所述超时时间字段用于承载所述服务请求对应的总超时时间,所述历史访问状态字段用于承载在所述服务请求之前发送的服务请求对应的响应状态码;以及,用于接收所述服务请求对应的响应消息;网关,用于向服务端转发所述客户端发送的服务请求,以及向所述客户端转发所述服务端针对所述服务请求发送的响应消息;以及,用于根据所述服务请求中所述历史状态字段承载的内容、以及所述响应消息携带的所述服务请求对应的响应状态码中的至少一项,生成所述重试指示信息,并将所述重试指示信息添加至所述响应消息中,所述重试指示信息用于指示所述客户端是否需要再次发送服务请求;所述服务端,用于根据所述服务请求中所述超时时间字段承载的内容,提供所述服务请求访问的域名对应的服务,并根据所述服务的响应情况生成所述服务请求对应的响应状态码,将所述响应状态码添加至所述服务请求对应的响应消息中,发送所述响应消息。2.根据权利要求1所述的系统,其特征在于,所述客户端具体用于:在所述客户端基于所述服务主域名发送第一服务请求,并且接收到所述第一服务请求对应的第一响应消息的情况下,若所述第一响应消息携带有用于指示所述客户端再次发送服务请求的所述重试指示信息,则所述客户端基于所述服务重试域名发送第二服务请求,所述第二服务请求中的所述历史访问状态字段包括所述第一响应消息中携带的所述第一服务请求对应的响应状态码;若所述第一响应消息携带有用于指示所述客户端无需再次发送服务请求的所述重试指示信息,则所述客户端停止发送服务请求。3.根据权利要求2所述的系统,其特征在于,所述基础服务信息包括多个按序排列的服务重试域名;所述客户端具体用于:在所述客户端基于所述基础服务信息中的第一个服务重试域名发送所述第二服务请求,并且接收到所述第二服务请求对应的第二响应消息的情况下,若所述第二响应消息携带有用于指示所述客户端再次发送服务请求的所述重试指示信息,则所述客户端基于所述基础服务信息中的第二个服务重试域名,发送第三服务请求,所述第三服务请求中的所述历史访问状态字段包括所述第一服务请求和所述第二服务请求各自对应的响应状态码;若所述第二响应消息携带有用于指示所述客户端无需再次发送服务请求的所述重试指示信息,则所述客户端停止发送服务请求。4.根据权利要求1至3任一项所述的系统,其特征在于,所述基础服务信息还包括替换服务域名;所述客户端还用于:利用所述替换服务域名替换所述服务主域名;基于所述替换服务域名发送第一服务请求。5.根据权利要求1所述的系统,其特征在于,所述网关具体用于:若所述服务请求中所述历史状态字段承载的响应状态码用于表征此前已访问对应的服务、但未获取到对应的数据,且所述服务请求对应的响应消息中携带的响应状态码也用于表征已访问对应的服务、但未获取到对应的数据,则生成用于指示所述客户端无需再次
重试发送服务请求的重试指示信息,并将所述重试指示信息添加至所述响应消息中;若所述服务请求中所述历史状态字段承载的响应状态码用于表征此前未访问到对应的服务,和/或所述服务请求对应的响应消息中携带的响应状态码也用于表征未访问到对应的服务,则生成用于指示所述客户端再次发送服务请求的重试指示信息,并将所述重试指示信息添加至所述响应消息中。6.根据...

【专利技术属性】
技术研发人员:易桂
申请(专利权)人:湖南快乐阳光互动娱乐传媒有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1