CN111131377A - 一种http重试的方法和设备 - Google Patents

一种http重试的方法和设备 Download PDF

Info

Publication number
CN111131377A
CN111131377A CN201911042239.4A CN201911042239A CN111131377A CN 111131377 A CN111131377 A CN 111131377A CN 201911042239 A CN201911042239 A CN 201911042239A CN 111131377 A CN111131377 A CN 111131377A
Authority
CN
China
Prior art keywords
retry
request
error
http
same
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911042239.4A
Other languages
English (en)
Other versions
CN111131377B (zh
Inventor
张德波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN201911042239.4A priority Critical patent/CN111131377B/zh
Publication of CN111131377A publication Critical patent/CN111131377A/zh
Application granted granted Critical
Publication of CN111131377B publication Critical patent/CN111131377B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明提供了一种HTTP重试的方法和设备,该方法包括以下步骤:设置错误阈值参数;响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数;响应于重试次数达到错误阈值参数,将第一重试请求设定为错误请求并停止重试;响应于再次收到重试请求并且再次收到的重试请求与第一重试请求相同,仅进行一次重试;响应于重试得到正确返回,清除设定的错误请求。通过使用本发明的方法,能够对HTTP重试机制进行改良,减少无意义的请求,节省服务和网络资源,提升产品竞争力。

Description

一种HTTP重试的方法和设备
技术领域
本领域涉及计算机领域,并且更具体地涉及一种HTTP重试的方法和设备。
背景技术
由Kubernetes集群提供HTTP(超文本传输协议)服务,在服务端功能不稳定或者网络状况不佳时,可能会返回错误。很多情况下导致错误的原因比较复杂,而重试是一种简单直接的办法,尤其在工作环境比较复杂的场景下,可显著提高总体的服务质量。
重试应由HTTP客户端发起,HTTP客户端可能在浏览器中,也可能是另外一个服务,无论是要求客户手动刷新还是代码自动触发,都不是理想解决方案,浏览器手动刷新会影响客户体验,而代码触发会造成很多冗余代码。
在现有的解决方案中,istio是一种较好的选择。istio提供流量治理功能,可对kubernetes集群的流量进行管理,其中包含了HTTP重试机制,可设置重试次数、重试条件、超时时间。但是该方案带来一个副作用,即增加了大量多余请求,加重了集群中HTTP服务端的负担以及网络负担。在HTTP服务本身存在问题的情况下,是不可能正常回应请求的,这时重试请求没有任何意义。
发明内容
有鉴于此,本发明实施例的目的在于提出一种HTTP重试的方法,能够对HTTP重试机制进行改良,减少无意义的请求,节省服务和网络资源,提升产品竞争力。
基于上述目的,本发明的实施例的一个方面提供了一种HTTP重试的方法,包括以下步骤:
设置错误阈值参数;
响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数;
响应于重试次数达到错误阈值参数,将第一重试请求设定为错误请求并停止重试;
响应于再次收到重试请求并且再次收到的重试请求与第一重试请求相同,仅进行一次重试;
响应于重试得到正确返回,清除设定的错误请求。
根据本发明的一个实施例,重试次数达到错误阈值参数包括:相同重试请求的重试次数累加值等于错误阈值参数。
根据本发明的一个实施例,再次收到的重试请求与第一重试请求相同包括:判断请求类型是否相同、判断URL是否相同、判断请求体是否相同和判断Cookie是否相同。
根据本发明的一个实施例,响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数包括:每隔阈值时间对HTTP重试阈值次数。
根据本发明的一个实施例,还包括:设置错误记忆参数,错误记忆参数为真时,错误阈值参数生效。
本发明的实施例的另一个方面,还提供了一种HTTP重试的设备,其特征在于,设备包括:
至少一个处理器;和
存储器,存储器存储有处理器可运行的程序代码,程序代码在被处理器运行时执行以下步骤:
设置错误阈值参数;
响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数;
响应于重试次数达到错误阈值参数,将第一重试请求设定为错误请求并停止重试;
响应于再次收到重试请求并且再次收到的重试请求与第一重试请求相同,仅进行一次重试;
响应于重试得到正确返回,清除设定的错误请求。
根据本发明的一个实施例,重试次数达到错误阈值参数包括:相同重试请求的重试次数累加值等于错误阈值参数。
根据本发明的一个实施例,再次收到的重试请求与第一重试请求相同包括:判断请求类型是否相同、判断URL是否相同、判断请求体是否相同和判断Cookie是否相同。
根据本发明的一个实施例,响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数包括:每隔阈值时间对HTTP重试阈值次数。
根据本发明的一个实施例,程序代码在被处理器运行时还执行以下步骤:设置错误记忆参数,错误记忆参数为真时,错误阈值参数生效。
本发明具有以下有益技术效果:本发明实施例提供的HTTP重试的方法,通过设置错误阈值参数;响应于接收到重试请求,通过HTTP进行重试并记录重试次数;响应于重试次数达到错误阈值参数,将重试请求设定为错误请求并停止重试;响应于再次收到重试请求并且再次收到的重试请求与上述重试请求相同,仅进行一次重试;响应于重试得到正确返回,清除设定的错误请求的技术方案,能够对HTTP重试机制进行改良,减少无意义的请求,节省服务和网络资源,提升产品竞争力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的HTTP重试的方法的示意性流程图;
图2为根据本发明一个实施例的HTTP重试过程的示意图;
图3为根据本发明一个实施例的HTTP重试过程的示意图;
图4为根据本发明一个实施例的HTTP重试过程的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明的实施例的第一个方面,提出了一种HTTP重试的方法的一个实施例。图1示出的是该方法的示意性流程图。
如图1中所示,该方法可以包括以下步骤:
S1设置错误阈值参数;
S2响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数;
S3响应于重试次数达到错误阈值参数,将第一重试请求设定为错误请求并停止重试;
S4响应于再次收到重试请求并且再次收到的重试请求与第一重试请求相同,仅进行一次重试;
S5响应于重试得到正确返回,清除设定的错误请求。
在本发明的一些实施例中,提供一种针对kubernetes提供的HTTP服务的自动重试方法,基于istio提供的流量治理功能,实现HTTP重试功能。首先需要在kubernetes集群中部署istio,并为目标HTTP服务设置gateway和virtualService以实现对该服务的入口流量管理。在virtualService中,配置重试策略,除了istio原本支持的重试次数attempts、超时时间perTryTimeout、重试条件retryOn之外,本专利新增参数错误记忆errorCacheEnabled和错误阈值errorThreshold。
错误记忆errorCacheEnabled默认值是False,即默认不开启。修改为True时开启,开启后参数错误阈值errorThreshold生效(默认值是3)。该参数开启后,会对收到的请求以及请求结果进行记忆,当一个请求连续返回retryOn指定的错误次数达到错误阈值errorThreshold时,标记此请求为错误(error)状态,后续再次收到相同请求时,只执行一次重试操作。如果后续返回了正常状态,则取消此请求的error状态。
通过以上技术方案,能够对HTTP重试机制进行改良,减少无意义的请求,节省服务和网络资源,提升产品竞争力。
在本发明的一个优选实施例中,重试次数达到错误阈值参数包括:相同重试请求的重试次数累加值等于错误阈值参数。。每接收一次相同的重试请求,HTTP都会进行阈值次数的重试。比如,阈值次数为1,则接收一次重试请求,进行一次重启,错误阈值记录为1,再次一次重试请求,进行一次重启,错误阈值记录为2,以此类推。
在本发明的一个优选实施例中,再次收到的重试请求与第一重试请求相同包括:判断请求类型是否相同、判断URL是否相同、判断请求体是否相同和判断Cookie是否相同。这四个方面的判断必须全部相同才认定为再次收到的重试请求与第一重试请求相同。
在本发明的一个优选实施例中,响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数包括:每隔阈值时间对HTTP重试阈值次数。阈值时间为每次重试的间隔时间,可以提前设定,阈值次数为收到一次重试请求进行重试的次数,也可以提前设定。
在本发明的一个优选实施例中,还包括:设置错误记忆参数,错误记忆参数为真时,错误阈值参数生效。
通过以上技术方案,能够对HTTP重试机制进行改良,减少无意义的请求,节省服务和网络资源,提升产品竞争力。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。
基于上述目的,本发明的实施例的第二个方面,提出了一种HTTP重试的设备,其特征在于,设备包括:
至少一个处理器;和
存储器,存储器存储有处理器可运行的程序代码,程序代码在被处理器运行时执行以下步骤:
设置错误阈值参数;
响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数;
响应于重试次数达到错误阈值参数,将第一重试请求设定为错误请求并停止重试;
响应于再次收到重试请求并且再次收到的重试请求与第一重试请求相同,仅进行一次重试;
响应于重试得到正确返回,清除设定的错误请求。
在本发明的一个优选实施例中,重试次数达到错误阈值参数包括:相同重试请求的重试次数累加值等于错误阈值参数。
在本发明的一个优选实施例中,再次收到的重试请求与第一重试请求相同包括:判断请求类型是否相同、判断URL是否相同、判断请求体是否相同和判断Cookie是否相同。
在本发明的一个优选实施例中,响应于接收到第一重试请求,通过HTTP进行重试并记录重试次数包括:每隔阈值时间对HTTP重试阈值次数。
在本发明的一个优选实施例中,程序代码在被处理器运行时还执行以下步骤:设置错误记忆参数,错误记忆参数为真时,错误阈值参数生效。
通过以上技术方案,能够对HTTP重试机制进行改良,减少无意义的请求,节省服务和网络资源,提升产品竞争力。
实施例
某HTTP服务设置了重试次数为4次、超时时间为2秒、重试条件为5xx,在未开启使用“错误阈值”时,重试过程如图2所示,一旦检测到5xx返回就再次重试,直到正常返回为止,最多重试4次,共5次请求。
现在开启“错误阈值”,并设置错误阈值为3,重试过程变为图3所示,当请求返回指定的错误达到3次时,标记此请求为error状态,后面不再重试(虚线表示不再请求)。
该请求被标记为error状态后,如果客户端再次发送相同请求,那么只会尝试一次(虚线表示不再请求),如图4所示。
当某次尝试得到正确返回时,解除error状态,计数器重新开始。
通过以上机制,可减少无意义的请求,节省服务和网络资源。
需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。
此外,上述方法步骤以及系统单元或模块也可以利用控制器以及用于存储使得控制器实现上述步骤或单元或模块功能的计算机程序的计算机可读存储介质实现。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

Claims (10)

1.一种HTTP重试的方法,其特征在于,包括以下步骤:
设置错误阈值参数;
响应于接收到第一重试请求,通过所述HTTP进行重试并记录重试次数;
响应于所述重试次数达到所述错误阈值参数,将所述第一重试请求设定为错误请求并停止重试;
响应于再次收到重试请求并且所述再次收到的重试请求与所述第一重试请求相同,仅进行一次重试;
响应于重试得到正确返回,清除设定的所述错误请求。
2.根据权利要求1所述的方法,其特征在于,所述重试次数达到所述错误阈值参数包括:相同重试请求的重试次数累加值等于所述错误阈值参数。
3.根据权利要求1所述的方法,其特征在于,所述再次收到的重试请求与所述第一重试请求相同包括:
判断请求类型是否相同、判断URL是否相同、判断请求体是否相同和判断Cookie是否相同。
4.根据权利要求1所述的方法,其特征在于,响应于接收到第一重试请求,通过所述HTTP进行重试并记录重试次数包括:每隔阈值时间对HTTP重试阈值次数。
5.根据权利要求1所述的方法,其特征在于,还包括:设置错误记忆参数,所述错误记忆参数为真时,所述错误阈值参数生效。
6.一种HTTP重试的设备,其特征在于,所述设备包括:
至少一个处理器;和
存储器,所述存储器存储有处理器可运行的程序代码,所述程序代码在被处理器运行时执行以下步骤:
设置错误阈值参数;
响应于接收到第一重试请求,通过所述HTTP进行重试并记录重试次数;
响应于所述重试次数达到所述错误阈值参数,将所述第一重试请求设定为错误请求并停止重试;
响应于再次收到重试请求并且所述再次收到的重试请求与所述第一重试请求相同,仅进行一次重试;
响应于重试得到正确返回,清除设定的所述错误请求。
7.根据权利要求6所述的设备,其特征在于,所述重试次数达到所述错误阈值参数包括:相同重试请求的重试次数累加值等于所述错误阈值参数。
8.根据权利要求6所述的设备,其特征在于,所述再次收到的重试请求与所述第一重试请求相同包括:判断请求类型是否相同、判断URL是否相同、判断请求体是否相同和判断Cookie是否相同。
9.根据权利要求6所述的设备,其特征在于,响应于接收到第一重试请求,通过所述HTTP进行重试并记录重试次数包括:每隔阈值时间对HTTP重试阈值次数。
10.根据权利要求6所述的设备,其特征在于,所述程序代码在被处理器运行时还执行以下步骤:设置错误记忆参数,所述错误记忆参数为真时,所述错误阈值参数生效。
CN201911042239.4A 2019-10-30 2019-10-30 一种http重试的方法和设备 Active CN111131377B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911042239.4A CN111131377B (zh) 2019-10-30 2019-10-30 一种http重试的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911042239.4A CN111131377B (zh) 2019-10-30 2019-10-30 一种http重试的方法和设备

Publications (2)

Publication Number Publication Date
CN111131377A true CN111131377A (zh) 2020-05-08
CN111131377B CN111131377B (zh) 2022-05-24

Family

ID=70495468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911042239.4A Active CN111131377B (zh) 2019-10-30 2019-10-30 一种http重试的方法和设备

Country Status (1)

Country Link
CN (1) CN111131377B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114911633A (zh) * 2021-02-07 2022-08-16 北京字节跳动网络技术有限公司 远程过程调用重试方法、装置及设备
CN115250267A (zh) * 2022-07-21 2022-10-28 平安科技(深圳)有限公司 微服务会话管理方法、装置、计算机设备及存储介质
CN115933860A (zh) * 2023-02-20 2023-04-07 飞腾信息技术有限公司 一种处理器系统、处理请求的方法及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104113592A (zh) * 2014-07-01 2014-10-22 北京乐途园科技有限公司 一种本地微服务器及车载服务信息提供系统及方法
CN105824752A (zh) * 2016-03-16 2016-08-03 北京齐尔布莱特科技有限公司 一种接口自动化测试方法、装置和计算设备
CN110377410A (zh) * 2019-07-16 2019-10-25 中信百信银行股份有限公司 任务调度方法、系统、电子设备及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104113592A (zh) * 2014-07-01 2014-10-22 北京乐途园科技有限公司 一种本地微服务器及车载服务信息提供系统及方法
CN105824752A (zh) * 2016-03-16 2016-08-03 北京齐尔布莱特科技有限公司 一种接口自动化测试方法、装置和计算设备
CN110377410A (zh) * 2019-07-16 2019-10-25 中信百信银行股份有限公司 任务调度方法、系统、电子设备及计算机可读存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114911633A (zh) * 2021-02-07 2022-08-16 北京字节跳动网络技术有限公司 远程过程调用重试方法、装置及设备
CN114911633B (zh) * 2021-02-07 2024-07-12 北京字节跳动网络技术有限公司 远程过程调用重试方法、装置及设备
CN115250267A (zh) * 2022-07-21 2022-10-28 平安科技(深圳)有限公司 微服务会话管理方法、装置、计算机设备及存储介质
CN115250267B (zh) * 2022-07-21 2024-03-01 平安科技(深圳)有限公司 微服务会话管理方法、装置、计算机设备及存储介质
CN115933860A (zh) * 2023-02-20 2023-04-07 飞腾信息技术有限公司 一种处理器系统、处理请求的方法及计算设备
CN115933860B (zh) * 2023-02-20 2023-05-23 飞腾信息技术有限公司 一种处理器系统、处理请求的方法及计算设备

Also Published As

Publication number Publication date
CN111131377B (zh) 2022-05-24

Similar Documents

Publication Publication Date Title
CN111131377B (zh) 一种http重试的方法和设备
EP3420463B1 (en) Lease-based heartbeat protocol method and apparatus
JP6763580B2 (ja) 分散記憶システムをアップグレードするための方法および装置
WO2017000666A1 (zh) 集群主节点选举方法及装置
KR20130096297A (ko) 중복 서버 구성에서의 클라이언트 복구 전략을 위한 방법 및 시스템
US20070130324A1 (en) Method for detecting non-responsive applications in a TCP-based network
US11316930B2 (en) Connection control method and device
EP3313022A1 (en) Resending method and device for hypertext transfer request, and client
US20150026525A1 (en) Server controlled adaptive back off for overload protection using internal error counts
US20110231471A1 (en) Artifact Deployment
CN112948128A (zh) Target端的选择方法、系统及计算机可读介质
CN110521233B (zh) 标识中断的方法、接入点、远程配置的方法、系统和介质
US20050262379A1 (en) Forestalling long time-outs in processes
US11409511B2 (en) Method and system for downloading information
CN112422691B (zh) Mdm控制优化方法、装置、计算机设备及存储介质
CN112087341A (zh) 基于多通道补偿的通信方法、系统、电子设备及存储介质
CN111835683B (zh) 连接控制方法、系统、设备及计算机可读存储介质
CN115484162B (zh) 一种软件系统的组件适配方法、装置、服务端及存储介质
CN114826888B (zh) 一种消息发送方法、装置、设备及存储介质
CN117295021B (zh) 一种渠道自适应部署方法、系统、设备和介质
CN112866359B (zh) 数据上链方法、装置、电子设备及存储介质
JP6368842B2 (ja) プロセス監視プログラム及びプロセス監視システム
US20200374366A1 (en) Method and system for communication between two devices
CN111026668B (zh) 测试用例的重试方法、测试用例的重试装置及存储介质
CN117615366A (zh) 设备升级方法、电子设备及机器可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant