CN111552577B - 防止出现无效请求的方法、存储介质 - Google Patents

防止出现无效请求的方法、存储介质 Download PDF

Info

Publication number
CN111552577B
CN111552577B CN202010212679.6A CN202010212679A CN111552577B CN 111552577 B CN111552577 B CN 111552577B CN 202010212679 A CN202010212679 A CN 202010212679A CN 111552577 B CN111552577 B CN 111552577B
Authority
CN
China
Prior art keywords
request
time
calling
server
micro
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.)
Active
Application number
CN202010212679.6A
Other languages
English (en)
Other versions
CN111552577A (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.)
Fujian Tianquan Educational Technology Ltd
Original Assignee
Fujian Tianquan Educational Technology 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 Fujian Tianquan Educational Technology Ltd filed Critical Fujian Tianquan Educational Technology Ltd
Priority to CN202010212679.6A priority Critical patent/CN111552577B/zh
Publication of CN111552577A publication Critical patent/CN111552577A/zh
Application granted granted Critical
Publication of CN111552577B publication Critical patent/CN111552577B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种防止出现无效请求的方法、存储介质,方法包括:客户端发送携带超时时间的请求至服务端;服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中;记录服务端依据所述请求调用各微服务接口调用方法的执行时间;若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,则服务端停止处理所述请求。本发明能够有效防止微服务无效请求的发生,从而提高系统的效率和可用性;而且具备实施方式简便、易行、效果显著等优点。

Description

防止出现无效请求的方法、存储介质
技术领域
本发明涉及微服务接口调用领域,具体涉及防止出现无效请求的方法、存储介质。
背景技术
移动互联网蓬勃发展的今天,发展出来了各种各样的系统应用,而很多的系统又与其他的系统有各种的数据交互。数据交互的方式多种多样:通过接口进行数据访问;直接通过数据库进行交互访问;通过MQ进行消息通信等。这边提到一种现在很经常使用的http协议或者RPC等方式调用接口进行数据交互的方法,是现在互联网场景中最常见的数据交互方式。我们经常提及的微服务调用方式就是使用这种模式的。使用这种方式能够快速进行多系统的数据交互,提高效率。
可是,由于现在网络条件复杂,或者对方系统不稳定等各种因素的影响,微服务使用这种接口调用方式会存在超时的问题。一般客户端调用服务端的某一个接口,都会设置一个超时时间;同时,服务端该接口的内部又可能会调用多个的微服务接口,服务都正常的场景之下,是不会存在问题的。但是,如果服务端调用某个微服务的接口超时后,就可能会存在无效请求的问题。比如,客户端调用服务端接口超时时间设置为30秒,服务端接口内部除了自身的业务逻辑之外,还会按顺序调用4个微服务的接口。当顺序调用第二个接口时,总时间已经超过30秒,客户端将会因为超时而断开连接。而此时,服务端的该次请求内部还是会继续执行,此时,再继续顺序调用第三以及第四个微服务接口已经是变成了无效请求了,即执行成功了,客户端也无法使用。这种微服务接口调用场景之下,当某个接口存在瓶颈,或者压力过大,或者网络不好,或者资源不足等等原因导致的该微服务请求耗时增加,都有可能会引起这种无效请求的增加。
发明内容
本发明所要解决的技术问题是:提供一种防止出现无效请求的方法、存储介质,能够提高系统效率和可用性。
为了解决上述技术问题,本发明采用的技术方案为:
一种防止出现无效请求的方法,包括:
客户端发送携带超时时间的请求至服务端;
服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中;
记录服务端依据所述请求调用各微服务接口调用方法的执行时间;
若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,则服务端停止处理所述请求。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述一种防止出现无效请求的方法所包含的步骤。
本发明的有益效果在于:由客户端传递请求的超时时间,服务端内部计算处理该请求所调用微服务接口的耗时,若超过总超时时间,则停止请求的后续操作,从而解决微服务的无效请求,进而大大提高系统的效率和可用性。
附图说明
图1为本发明一实施例一种防止出现无效请求的方法的流程示意图;
图2为本发明实施例一一种防止出现无效请求的方法的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:由客户端传递请求的超时时间,服务端内部计算处理该请求所调用微服务接口的耗时,若超过总超时时间,则停止请求的后续操作,避免出现无效请求。
请参照图1以及图2,本发明提供一种防止出现无效请求的方法,包括:
客户端发送携带超时时间的请求至服务端;
服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中;
记录服务端依据所述请求调用各微服务接口调用方法的执行时间;
若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,则服务端停止处理所述请求。
从上述描述可知,本发明的有益效果在于:通过一种计算请求时间的方式,由客户端传递超时时间,服务端内部进行微服务接口的耗时计算,当各个微服务的内部调用接口耗时超过客户端传递的总的超时时间之后,停止该接口的后续操作,从而解决了微服务这种无效的请求,大大提高了系统的效率与可用性。
进一步地,所述记录服务端依据所述请求调用各微服务接口调用方法的执行时间,之前,还包括:
配置微服务接口调用方法均使用预设后缀名;
通过拦截后缀名为所述预设后缀名的微服务接口调用方法,获取各微服务接口调用方法的调用时间和结束时间;
依据所述调用时间和结束时间,获取并记录各微服务接口调用方法的执行时间。
由上述描述可知,通过统一微服务接口调用方法的后缀名,再以拦截方式准确而全面地获取被调用的微服务接口进行耗时监控。
进一步地,所述若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,具体为:
若所述共享对象中的超时时间减去各微服务接口调用方法的执行时间的值小于等于0,则判定所述请求已超时。
由上述描述可知,在监控到各个微服务的内部调用接口总耗时到达总超时时间后,立即得出判定结果,阻止无效请求的出现。
进一步地,所述服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中,具体为:
服务端通过过滤器解析所述请求,获取其包括超时时间的请求参数;
服务端创建对应所述请求的共享对象,并将所述请求参数设置其中。
由上述描述可知,通过设置统一的过滤器,实现高效解析每个请求,获取请求参数,特别是请求接口的总超时时间。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现下述一种防止出现无效请求的方法:
客户端发送携带超时时间的请求至服务端;
服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中;
记录服务端依据所述请求调用各微服务接口调用方法的执行时间;
若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,则服务端停止处理所述请求。
进一步地,所述记录服务端依据所述请求调用各微服务接口调用方法的执行时间,之前,还包括:
配置微服务接口调用方法均使用预设后缀名;
通过拦截后缀名为所述预设后缀名的微服务接口调用方法,获取各微服务接口调用方法的调用时间和结束时间;
依据所述调用时间和结束时间,获取并记录各微服务接口调用方法的执行时间。
进一步地,所述若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,具体为:
若所述共享对象中的超时时间减去各微服务接口调用方法的执行时间的值小于等于0,则判定所述请求已超时。
进一步地,所述服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中,具体为:
服务端通过过滤器解析所述请求,获取其包括超时时间的请求参数;
服务端创建对应所述请求的共享对象,并将所述请求参数设置其中。
从上述描述可知,对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。所述程序在被处理器执行后,同样能够实现对应各方法的有益效果。
其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
实施例一
请参照图2,本实施例提供一种有效防止请求处理过程中出现无效请求的方法,包括以下步骤:
S1:配置所有微服务接口调用方法均使用预设的统一的后缀名。
统一后缀名后的方法名如getXXXProxy、setXXXProxy等,统一加上了“proxy”这个后缀。
S2:客户端发送携带超时时间的请求至服务端。
具体而言,客户端在调用服务端的接口时,需要多传递一个参数:本次请求的超时时间。该参数的数值直接对应客户端调用该接口的总超时时间。
S3:服务端通过过滤器解析请求,并创建请求对应的共享对象存储解析得到的包括超时时间的所有参数。
具体而言,服务端需要设置统一的过滤器,该过滤器的主要功能为解析客户端发来的每一个请求所携带的参数,特别是该接口的超时时间。同时,为该次请求创建一个共享对象,如ThreadLocal对象,并把解析该次请求得到的所有请求参数以及超时时间都设置到该对象中,方便后续程序使用。其中,所述ThreadLocal表示该请求线程内能够共享ThreadLocal中的数据。
S4:记录服务端依据所述请求调用各微服务接口调用方法的执行时间。
具体而言,可以通过拦截后缀名为上述预设的统一后缀名的微服务接口调用方法,来获取被调用的各微服务接口调用方法的调用时间和结束时间;然后依据所获取的所述调用时间和结束时间,获取并记录各微服务接口调用方法的执行时间。
假设服务端使用JAVA语言进行编写开发。则在本步骤可以设置一个拦截切面,通过spring的AOP机制实现该切面,该切面的主要实现功能为:统一拦截后缀为“proxy”的微服务接口调用方法;当拦截到该方法之后,执行方法相关的微服务接口调用,并记录调用(起始)时间;当调用微服务接口成功或者失败或者超时时(即调用结束),均会获取到执行时间。
S5:依据所述记录和所述共享对象中的超时时间监控调用各微服务接口的总耗时是否超过客户端传递来的请求的总超时时间,若判定所述请求已超时,则服务端停止处理所述请求。
具体而言,把ThreadLocal对象中的超时时间扣除该接口的执行时间(包括所有微服务接口的执行时间),如果剩余时间大于0,则说明还可以继续进行后续的接口调用;如果该剩余时间已经小于0了,则说明该次请求已耗时间超过客户端的超时时间了,客户端已经断开了连接,此时,剩余的其他微服务接口的处理已经是属于无效请求,此时就可以停止该接口的继续操作,直接结束返回了。
比如:某个网关的聚合接口,内部会调用a、b、c和d4个微服务接口,当执行到a和b微服务接口时的调用总时间已经超过了客户端定义的超时时间,则客户端已经因为超时断开了请求链接,本次请求后续的c和d微服务接口就可以不再请求了,即使请求了也为无效的请求。
通过以上本实施例方法,能够解决微服务的这种无效请求,大大提高了系统的效率与可用性。
实施例二
本实施例对应实施例一,提供一具体运用场景:
假设客户端调用服务端的一个聚合接口,超时时间client_timeout设置为30秒,该聚合接口内部会调用4个微服务的接口a、b、c和d。
客户端向服务端请求该聚合接口时,传递client_timeout为30。服务端过滤器会设置该时间至threadlocal线程共享变量中。每次聚合接口内部调用以Proxy为后缀的微服务方法时,程序会自动去threadlocal中扣除当前对应的微服务接口耗时时间。比如微服务接口a耗时10秒,b耗时25秒,则在b接口调用结束后,a接口和b接口这两个接口的总耗时时间已经超过threadlocal中的client_timeout了。此时,程序将停止该接口的继续操作了,无需再次调用微服务c和d接口了,因为客户端时间已经超时,客户端已经断开了本次的连接,剩余的接口请求操作都是无效的了。
实施例三
本实施例对应实施例一和实施例二,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述实施例一或实施例二所述的一种防止出现无效请求的方法所包含的步骤。具体的步骤内容在此不进行复述,详情请参阅实施例一和实施例二的记载。
综上所述,本发明提供的一种防止出现无效请求的方法、存储介质,能够有效防止微服务无效请求的发生,从而提高系统的效率和可用性;而且具备实施方式简便、易行、效果显著等优点。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (4)

1.一种防止出现无效请求的方法,其特征在于,包括:
客户端发送携带超时时间的请求至服务端,所述请求为对服务端的接口调用请求;
服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中;
拦截各微服务接口调用方法,获取服务端依据所述请求调用各微服务接口调用方法的执行时间;
记录服务端依据所述请求调用各微服务接口调用方法的执行时间;
若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,则服务端停止处理所述请求;
所述若依据所述记录和所述共享对象中的超时时间判定所述请求已超时,具体为:
若所述共享对象中的超时时间减去各微服务接口调用方法的执行时间之和的值小于等于0,则判定所述请求已超时。
2.如权利要求1所述的一种防止出现无效请求的方法,其特征在于,通过拦截各微服务接口调用方法,获取服务端依据所述请求调用各微服务接口调用方法的执行时间具体为:
配置微服务接口调用方法均使用预设后缀名;
通过拦截后缀名为所述预设后缀名的微服务接口调用方法,获取各微服务接口调用方法的调用时间和结束时间;
依据所述调用时间和结束时间,获取并记录各微服务接口调用方法的执行时间。
3.如权利要求1所述的一种防止出现无效请求的方法,其特征在于,所述服务端创建对应所述请求的共享对象,并将所述请求的超时时间设置其中,具体为:
服务端通过过滤器解析所述请求,获取其包括超时时间的请求参数;
服务端创建对应所述请求的共享对象,并将所述请求参数设置其中。
4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序在被处理器执行时,能够实现上述权利要求1-3任意一项所述的一种防止出现无效请求的方法所包含的步骤。
CN202010212679.6A 2020-03-24 2020-03-24 防止出现无效请求的方法、存储介质 Active CN111552577B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010212679.6A CN111552577B (zh) 2020-03-24 2020-03-24 防止出现无效请求的方法、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010212679.6A CN111552577B (zh) 2020-03-24 2020-03-24 防止出现无效请求的方法、存储介质

Publications (2)

Publication Number Publication Date
CN111552577A CN111552577A (zh) 2020-08-18
CN111552577B true CN111552577B (zh) 2023-11-03

Family

ID=72001915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010212679.6A Active CN111552577B (zh) 2020-03-24 2020-03-24 防止出现无效请求的方法、存储介质

Country Status (1)

Country Link
CN (1) CN111552577B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112491735A (zh) * 2020-11-10 2021-03-12 京东数字科技控股股份有限公司 一种流量控制方法、装置、设备和计算机可读存储介质
CN112783739B (zh) * 2021-01-05 2022-08-19 广州品唯软件有限公司 超时时间显示方法、装置、系统、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104954453A (zh) * 2015-06-02 2015-09-30 浙江工业大学 基于云计算的数据挖掘rest服务平台
CN106375435A (zh) * 2016-08-31 2017-02-01 福建天晴数码有限公司 Web线程超时监控的方法及其系统
CN109189509A (zh) * 2018-09-03 2019-01-11 中国平安人寿保险股份有限公司 接口的调用方法、接口调用的响应方法及服务器
CN110659132A (zh) * 2019-08-29 2020-01-07 福建天泉教育科技有限公司 请求处理的优化方法及计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477490B2 (en) * 2015-01-05 2016-10-25 Dell Software Inc. Milestone based dynamic multiple watchdog timeouts and early failure detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104954453A (zh) * 2015-06-02 2015-09-30 浙江工业大学 基于云计算的数据挖掘rest服务平台
CN106375435A (zh) * 2016-08-31 2017-02-01 福建天晴数码有限公司 Web线程超时监控的方法及其系统
CN109189509A (zh) * 2018-09-03 2019-01-11 中国平安人寿保险股份有限公司 接口的调用方法、接口调用的响应方法及服务器
CN110659132A (zh) * 2019-08-29 2020-01-07 福建天泉教育科技有限公司 请求处理的优化方法及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黑马程序员.《解析Python网络爬虫 核心技术、Scrapy框架、分布式爬虫》.中国铁道出版社,2019,第53-55页. *

Also Published As

Publication number Publication date
CN111552577A (zh) 2020-08-18

Similar Documents

Publication Publication Date Title
CN107729139B (zh) 一种并发获取资源的方法和装置
CN111552577B (zh) 防止出现无效请求的方法、存储介质
CN111897633A (zh) 一种任务处理的方法和装置
CN111641676B (zh) 一种第三方云监控服务的构建方法及装置
CN109873863B (zh) 服务的异步调用方法和装置
CN111786939B (zh) 物联网管理平台测试的方法、装置和系统
US11689626B2 (en) Transport channel via web socket for ODATA
CN111858086B (zh) 请求任务处理中队列超时的处理方法、存储介质
WO2017166154A1 (en) System and method for integrating transactional middleware platform with centralized audit framework
CN115794262A (zh) 任务处理方法、装置、设备、存储介质以及程序产品
CN113342503B (zh) 实时进度反馈方法、装置、设备及存储介质
US7849472B1 (en) System for instrumenting resources utilizing WS-management resource MBean wrappers for JAXB beans
CN110162250B (zh) 一种截图方法、系统和存储介质
CN116541167A (zh) 系统流量控制方法、装置、电子设备及计算机可读介质
US20100169408A1 (en) Method and apparatus for implementing a work chain in a java enterprise resource management system
CN115994156A (zh) 用于实时分析数据流的方法和系统
CN113238886A (zh) 功能服务的测试方法、系统以及终端设备
CN114461485A (zh) 一种资源加载监测方法、装置、设备及存储介质
CN113760693A (zh) 用于微服务系统的本地调试的方法和装置
CN115250276A (zh) 分布式系统及数据处理的方法和装置
US20230088655A1 (en) Automatic non-code test suite generation from api specification
CN115037606B (zh) 一种网络数据的获取方法及终端
CN116662430A (zh) 应用于多系统交互的数据查询方法、装置、设备、介质和产品
US20140244764A1 (en) Methods, apparatus, and articles of manufacture to provide a protocol-enabled interface definition language
CN114003410A (zh) 一种基于消息的flink的实时服务调度配置方法和系统

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