CN111753065A - 请求响应方法、系统、计算机系统和可读存储介质 - Google Patents
请求响应方法、系统、计算机系统和可读存储介质 Download PDFInfo
- Publication number
- CN111753065A CN111753065A CN202010234430.5A CN202010234430A CN111753065A CN 111753065 A CN111753065 A CN 111753065A CN 202010234430 A CN202010234430 A CN 202010234430A CN 111753065 A CN111753065 A CN 111753065A
- Authority
- CN
- China
- Prior art keywords
- request
- external interface
- requests
- task
- delay
- 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.)
- Pending
Links
- 230000004044 response Effects 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012545 processing Methods 0.000 claims description 26
- 230000003111 delayed effect Effects 0.000 claims description 14
- 230000015654 memory Effects 0.000 claims description 11
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 18
- 238000003066 decision tree Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3334—Selection or weighting of terms from queries, including natural language queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/083—Shipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Economics (AREA)
- Mathematical Physics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Strategic Management (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Computer Interaction (AREA)
- Development Economics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本公开提供了一种请求响应方法,包括:获得用于请求调用外部接口的一个或多个请求;启动延时任务,将一个或多个请求存入任务队列中;在延时任务达到延时时长后,对任务队列中的一个或多个请求进行响应,触发外部接口调用;以及接收来自外部接口的返回结果。本公开还提供了一种请求响应系统、一种计算机系统和一种计算机可读存储介质。
Description
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种请求响应方法、一种请求响应系统、一种计算机系统和一种计算机可读存储介质。
背景技术
智能应答系统较为常见的应用场景,是作为智能客服为客户提供在线应答。而在智能客服场景中,智能应答系统中的会话管理决策、应答决策树的判断、答案的组装等,一般需要通过调用各种外部业务接口来实现。例如:为了实现给出不同订单状态下的有效应答,需要查询用户订单状态,此时调用的常见外部接口包括:用户信息查询接口、订单查询接口、物流查询接口等。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:外部接口调用并发量较大,导致对网络资源和外部系统的系统资源消耗大。
发明内容
有鉴于此,本公开提供了一种请求响应方法、一种请求响应系统、一种计算机系统和一种计算机可读存储介质。
本公开的一个方面提供了一种请求响应方法,包括:获得用于请求调用外部接口的一个或多个请求;启动延时任务,将上述一个或多个请求存入任务队列中;在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用;以及接收来自上述外部接口的返回结果。
本公开的另一个方面提供了一种请求响应系统,包括:获取模块,用于获得用于请求调用外部接口的一个或多个请求;启动模块,用于启动延时任务,将上述一个或多个请求存入任务队列中;响应模块,用于在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用;以及接收模块,用于接收来自上述外部接口的返回结果。
本公开的另一方面提供了一种计算机系统,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上上述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
通过本公开的实施例,在获得用于请求调用外部接口的一个或多个请求之后,通过启动延时任务,将上述一个或多个请求存入任务队列中;在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用;并接收来自上述外部接口的返回结果。由于将一个或多个请求存入任务队列中,并且在延时任务达到延时时长后,再对请求进行响应,触发外部接口调用,可以实现对外部接口调用进行控制,达成对外部接口调用的合并,所以至少部分地克服了相关技术中外部接口调用并发量较大,导致对网络资源和外部系统的系统资源消耗大的技术问题,达到了降低网络资源和外部系统的系统资源消耗的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用请求响应方法及系统的示例性系统架构;
图2示意性示出了根据本公开实施例的智能应答系统的主流程调用不同业务组件的关系图;
图3示意性示出了根据本公开实施例的请求响应方法的流程图;
图4示意性示出了根据本公开实施例的在智能应答系统中应用请求响应方法的示意图;
图5示意性示出了根据本公开实施例的将一个或多个请求存入任务队列中的流程图;
图6示意性示出了根据本公开实施例的将用于请求调用相同外部接口的请求蓄流到同一任务队列中的流程图;
图7示意性示出了根据本公开实施例的将请求分配到同一任务队列的子队列中的示意图;
图8示意性示出了根据本公开实施例的请求响应系统的框图;以及
图9示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开提供了一种请求响应方法及系统,该方法包括:获得用于请求调用外部接口的一个或多个请求;启动延时任务,将一个或多个请求存入任务队列中;在延时任务达到延时时长后,对任务队列中的一个或多个请求进行响应,触发外部接口调用;以及接收来自外部接口的返回结果。
图1示意性示出了根据本公开实施例的可以应用请求响应方法及系统的示例性系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例),其中,购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等可以包括智能应答系统。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,包括一个或多个外部接口。服务器105可以是例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的请求响应方法一般可以由服务器105执行。相应地,本公开实施例所提供的请求响应系统一般可以设置于服务器105中。本公开实施例所提供的请求响应方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的请求响应系统也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。或者,本公开实施例所提供的请求响应方法也可以由终端设备101、102、或103执行,或者也可以由不同于终端设备101、102、或103的其他终端设备执行。相应地,本公开实施例所提供的请求响应系统也可以设置于终端设备101、102、或103中,或设置于不同于终端设备101、102、或103的其他终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
在本公开的实施例中,采用了业务组件的方式对业务逻辑进行封装处理,使得智能应答系统的主流程与业务解耦、将外部业务接口调用实现可配置化和将外部业务接口进行封装,智能应答系统包括应答决策树和多种业务组件。
业务组件是指在将外部业务接口调用和接口结果的业务逻辑封装处理之后,能够向主流程提供支持配置的业务判断能力和答案组装支持的应用。
图2示意性示出了根据本公开实施例的智能应答系统的主流程调用不同业务组件的关系图。
如图2所示,智能应答系统210包括应答决策树(即主流程)和组件,外部系统220包括订单信息外部接口和物流信息外部接口。组件例如可以包括订单状态组件、订单类型组件、物流状态组件和配送人员查询组件等等。需要说明的是,图2中虽然示出了组件可以直接调用外部接口获取数据。但是在另一实施例中,组件可以先调用内部接口,由内部接口再调用外部接口的方式获取数据。
以用户请求查询订单信息为例,主流程需要判断订单状态是否配送中,则需要判断:订单状态是否等于“配送中”。此时,订单状态组件可以调用订单信息外部接口,在主流程应答决策树中可以配置“订单状态组件返回==配送中”。如果主流程组装答案需要加入最新物流信息,则物流信息组件可以调用物流信息外部接口,物流信息组件返回“订单已达配送站点(XX街道)”。此外,为了更加全面完整的响应用户的请求,订单类型组件还可以调用订单信息外部接口,获取订单类型,配送人员查询组件还可以调用物流信息外部接口,获取配送人员信息。
需要说明的是,图2中虽然只示出了订单状态组件和物流信息组件等组件,但本公开的实施例所涉及的业务组件并不限于此,例如,还可以包括用户信息组件,商户信息组件,库存信息组件等其他业务组件。同时,图2中虽然只示出了订单状态外部接口和物流信息外部接口,但本公开的实施例所涉及的外部接口并不限于此,例如,还可以包括用户信息外部接口,商户信息外部接口,库存信息外部接口等其他外部接口。订单状态外部接口,物流信息外部接口,用户信息外部接口,商户信息外部接口,库存信息外部接口等其他外部接口可以由外部系统提供。
外部系统220不仅可以为智能应答系统210提供服务,还可以为其他业务提供服务。为了增加外部系统220稳定性,使得智能应答系统210能够正确应答,需要对各调用方的资源进行公平合理分配。
但在当前技术实现下,外部接口调用并发量较大,单个外部接口的QPS(Query persecond,简称QPS,每秒查询率))一般是主流程的QPS的数倍之多。
在实现本公开的过程中,发明人发现,很多不同的业务组件,为了满足各自的业务需求,是针对同一外部接口的调用结果进行特定业务处理后生成组件结果的,所以在同一请求下,不同组件可能会对相同接口发起重复调用。例如,针对订单信息查询请求,订单状态组件和订单类型组件可能都会分别请求调用订单信息外部接口;物流状态组件和配送人员查询组件可能都会分别请求调用物流信息外部接口,导致在同一请求下,不同组件可能会对相同接口发起重复调用。
此外,组件一般是由应答决策树调用,且应答决策树上各个应用是全异步执行的。例如,应答决策树包括意图识别应用,状态信息查询应用,答案管理应用和答案组装应用等等,各个应用按照串行的方式调用组件,在同一请求下,同一组件也可能对相同接口发起重复调用。如果存在多个用户请求的情况下,各应用可能会并发对同一组件发起重复调用,导致同一组件也可能对相同接口发起更多的重复调用。然而,在同一请求内,大多数外部接口返回结果可能是相同的。
由此可见,针对一个或多个用户请求,对同一外部接口的重复调用量较大,但是,重复请求依然会发送给外部系统,对网络资源和外部系统的系统资源,造成较大的浪费。在智能客服场景中,外部接口调用并发量较大,对网络资源和外部系统的系统资源消耗大。
为了增加外部系统稳定性,使得智能应答系统能够正确应答,实现各调用方的资源分配公平合理,减少网络资源与系统资源的浪费,需要对智能应答系统的接口调用请求量进行控制。当然,需要说明的是,本公开的实施例不限于对智能应答系统的接口调用请求量进行控制,对于其它场景的接口调用请求量也可以进行控制,例如,也可以针对搜索引擎的接口调用请求量进行控制。因此,本公开所提供的请求响应方法可以应用于智能应答系统和搜索引擎等其它场景。
图3示意性示出了根据本公开实施例的请求响应方法的流程图。
如图3所示,该方法包括操作S310~S340。
在操作S310,获得用于请求调用外部接口的一个或多个请求。
根据本公开的实施例,例如,用户A可以通过电子设备连续地输入多个请求,例如,可以包括订单查询请求,物流配送信息请求,保价请求等等。当然,本公开所涉及的请求不限于上述类型。
根据本公开的实施例,例如,获得的一个或多个请求可以是由多个用户分别输入的,例如,由用户A、用户B和用户C分别输入一个或多个请求。
在操作S320,启动延时任务,将一个或多个请求存入任务队列中。
在操作S330,在延时任务达到延时时长后,对任务队列中的一个或多个请求进行响应,触发外部接口调用。
根据本公开的实施例,延时时长不作限定,例如,可以是100毫秒,200毫秒,500毫秒等等。
根据本公开的实施例,在对任务队列中的一个或多个请求进行响应时,可以是将请求参数相同的请求进行合并去重处理,例如,将请求参数为同一个订单id的请求合并为一个请求,然后触发外部接口调用,响应该请求。由于延时了一段时长,因此,可能获得针对相同请求参数的用户请求,通过将请求参数相同的请求进行合并去重处理,使得外部接口响应的请求数量相对减少,因此,可以减缓外部接口的响应压力。需要说明的是,该延时时长不宜过长,可以根据请求的平均响应时长进行确定,以免请求的实际响应时间过长,影响用户体验。
在操作S340,接收来自外部接口的返回结果。
根据本公开的实施例,在延时任务触发外部接口调用后,等待外部接口返回结果。可以将返回结果,按照请求与返回的映射关系,回传给对应的线程并唤醒该线程,从而完成交互过程。
通过本公开的实施例,在获得用于请求调用外部接口的一个或多个请求之后,通过启动延时任务,将上述一个或多个请求存入任务队列中;在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用;并接收来自上述外部接口的返回结果。由于将一个或多个请求存入任务队列中,并且在延时任务达到延时时长后,再对请求进行响应,触发外部接口调用,可以实现对外部接口调用进行控制,达成对外部接口调用的合并,所以至少部分地克服了相关技术中外部接口调用并发量较大,导致对网络资源和外部系统的系统资源消耗大的技术问题,达到了降低网络资源和外部系统的系统资源消耗的技术效果。
下面参考图4~图7,结合具体实施例对图2所示的方法做进一步说明。
图4示意性示出了根据本公开实施例的在智能应答系统中应用请求响应方法的示意图。
如图4所示,用户A、用户B和用户C可以分别输入一个或多个请求,由不同的应答决策树进行处理。例如,用户A和用户B因咨询而生成的请求由应答决策树1进行处理,用户C因咨询而生成的请求由应答决策树2进行处理。然后,应答决策树1和应答决策树2可以分别调用对应的组件,例如组件X、组件Y和组件Z。通过组件X、组件Y和组件Z调用内部接口1~3,由内部接口1~3调用外部接口。
根据本公开的实施例,在延时任务达到延时时长后,对任务队列中的一个或多个请求进行响应,触发外部接口调用包括:可以在延时任务达到延时时长后,触发批处理外部接口调用,以实现对任务队列中的请求进行批处理。
例如,在内部接口1~3传输一个或多个请求之后,可以利用延时任务调度器,启动延时任务,在启动延时任务后,可以将请求存入任务队列,并挂起当前请求线程。在延时任务到期后,发起外部批处理接口调用。依赖于外部接口提供的批处理能力,提高了请求响应效率。
图5示意性示出了根据本公开实施例的将一个或多个请求存入任务队列中的流程图。
如图5所示,启动延时任务,将一个或多个请求存入任务队列中包括操作S510~S520。
在操作S510,确定每个请求对应的外部接口。
根据本公开的实施例,可以根据每个请求所包含的参数确定请求对应的外部接口。
在操作S520,将用于请求调用相同外部接口的请求蓄流到同一任务队列中,其中,不同任务队列针对不同的外部接口。
如图4所示,请求1~6请求调用外部接口1,可以将请求1~6存入到外部接口1队列中;请求7~12请求调用外部接口2,可以将请求7~12存入到外部接口2队列中;请求13~18请求调用外部接口3,可以将请求13~18存入到外部接口3队列中。需要说明的是,同一个请求也可以用于请求调用多个外部接口,此时,也可以将请求调用多个外部接口的同一个请求分配到多个外部接口队列中,等待响应。
根据本公开的实施例,在确定每个请求对应的外部接口之后,还可以创建与每个请求对应的外部接口对应的延时任务;确定与外部接口对应的延时任务的延时时长。
例如,如图4所示,延时任务1可以对应于外部接口1,负责处理外部接口1队列中的请求;延时任务2可以对应于外部接口2,负责处理外部接口2队列中的请求;延时任务3可以对应于外部接口3,负责处理外部接口3队列中的请求。
根据本公开的实施例,与外部接口对应的延时任务的延时时长可以是预先设定后固定不变的,也可以是动态调整的。
根据本公开的实施例,可以根据外部接口的实际请求量和外部接口的请求量阈值,动态调整与外部接口对应的延时任务的延时时长。
根据本公开的实施例,例如,延时时长可以默认10ms,然后基于外部接口的请求量阈值动态调整延时时长。以外部接口的请求量阈值为每秒查询量QPS为例,动态调整与外部接口对应的延时任务的延时时长的计算方式可以是:延时时长=(外部接口的实际QPS/1000ms)×(外部接口的实际QPS/外部接口的请求量阈值QPS)。
例如,智能应答系统对订单状态外部接口调用QPS是1000,外部接口的请求量阈值QPS是500,则延时时长=(1000/1000ms)×(1000/500)=2ms。
当然,延时时长的计算方式并不限于上述方式,只需要能够根据外部接口的实际请求量和外部接口的请求量阈值,实现动态调整与外部接口对应的延时任务的延时时长即可。
图6示意性示出了根据本公开实施例的将用于请求调用相同外部接口的请求蓄流到同一任务队列中的流程图。
根据本公开的实施例,针对不同的外部接口,可以对应于不同的任务队列。每个任务队列可以包括不同处理级别的子队列,每个子队列设置有对应的阈值范围。不同处理级别的子队列例如可以包括快队列、通用队列和慢队列。
如图6所示,将用于请求调用相同外部接口的请求蓄流到同一任务队列中包括操作S610~S620。
在操作S610,确定用于请求调用相同外部接口的每个请求的权值。
根据本公开的实施例,可以根据该外部接口的平均响应时长、每个请求所调用的特征的平均响应时长和特征的总调用次数确定每个请求的权值。根据本公开的实施例,每个请求的权值可以是针对其调用的一个或多个特征的调用时长影响权值。
根据本公开的实施例,外部接口的平均响应时长=TotalAverageResponseTime()。
例如,按订单号查询订单接口的平均响应时长=5分钟内所有查询接口时长之和/5分钟内所有请求的数量。例如,5分钟内所有查询接口时长之和为200ms+200ms+400ms,5分钟内所有请求的数量为3,平均响应时长=266.67ms。
根据本公开的实施例,每个请求所调用的特征=hash(请求入参),即对入参求哈希值。
例如,按订单号查询订单详情,调用入参请求的特征=hash(入参订单号+用户账户id)。
根据本公开的实施例,单个特征的平均响应时长=AverageResponseTime(单个调用请求特征)。
例如,按订单号查询订单接口的订单号1234的平均调用时长=5分钟内查询订单1234的时长之和/5分钟内查询1234订单的数量,例如计算得到平均调用时长为200ms。
根据本公开的实施例,单个特征的总调用次数=TotalCallTimes(单个调用请求特征)。
例如,按订单号查询订单接口的订单号1234的72小时内总调用次数=200次。
根据本公开的实施例,每个请求的权值=(AverageResponseTime(单个调用请求特征)-TotalAverageResponseTime())*lg(TotalCallTimes(单个调用请求特征))。
例如,结合上述示例,计算按订单号查询订单接口的订单号1234的调用影响的权值=(200ms-266.67ms)*lg(200次)=-66.67*2.3=-153.34。
在操作S620,根据每个请求的权值与每个子队列对应的阈值范围,将请求分配到同一任务队列的子队列中。
根据本公开的实施例,由于当某些外部接口调用时,参数不同,响应快慢不同,而如果所有参数不分快慢一起批量调用时,整体的调用时长就变长了,影响性能,因此,可以为每个外部接口任务队列提供三个级别队列:快队列、慢队列、通用队列,请求可以默认进入通用队列。从而保证慢请求与慢请求一起调用,快请求与快请求一起调用,降低蓄流对响应时长的影响。
图7示意性示出了根据本公开实施例的将请求分配到同一任务队列的子队列中的示意图。
根据本公开的实施例,在将用于请求调用相同外部接口的不同请求分配到不同的子队列之后,还可以对子队列中的请求进行动态调整。如图7所示,同一任务队列的不同的子队列包括慢队列、通用队列、快队列。
根据本公开的实施例,例如,针对慢队列、通用队列、快队列,每个队列都有各自的阈值范围。当请求的权值大于阈值上限,则可以将该请求调用降级进入下级队列(如果无下级队列则不动),如果权值小于阈值下限,该调用升级进入上级队列(如果无上级队列则不动),其他情况进入保持在当前队列。
例如,按订单号查询订单接口的各队列升降阈值定义如表1所示。
表1
根据本公开的实施例,通过动态调整请求进入的子队列,可以降低将请求蓄流到任务队列中对响应时长的影响;基于计算出的影响调用时长的请求的权值,当权值超出当前队列的阈值范围,可以将该类请求降级、升级分入不同子队列。
根据本公开的实施例,在启动延时任务,将一个或多个请求存入任务队列中之前,还可以确定获得的一个或多个请求中每个请求的请求类型。例如,请求类型可以包括查询类型和写入类型等等。
针对请求类型为查询类型的查询请求,可以确定缓存中是否包括查询请求的查询结果;在确定缓存中包括查询请求的查询结果的情况下,响应于查询请求,返回查询请求的查询结果;在确定缓存中不包括查询请求的查询结果的情况下,执行启动延时任务,将一个或多个请求存入任务队列中的操作。
如图4所示,针对请求类型为查询类型的查询请求,可以确定Redis缓存中是否包括查询请求的查询结果。如果不存在,可以利用延时任务调度器,执行启动延时任务,将一个或多个请求存入任务队列中的操作。
通过本公开的实施例,在获得请求后,优先从Redis缓存中获取结果(例如基于订单id获取订单详情缓存),获取成功就返回。例如,针对相同查询接口,相同入参的重复查询,如多请求针对相同订单id,发起的订单详情查询,在Redis缓存中可能预先缓存了订单详情,通过优先从Redis缓存中获取结果,可以减少任务队列中的请求数量,节省网络资源。
根据本公开的实施例,在确定缓存中不包括查询请求的查询结果的情况下,在执行启动延时任务,将一个或多个请求存入任务队列中的操作之前,可以尝试获取用于触发外部接口调用的分布式锁;在获取到分布式锁的情况下,执行启动延时任务,将一个或多个请求存入任务队列中的操作;在没有获取到分布式锁的情况下,执行循环等待策略,再次确定缓存中是否包括查询请求的查询结果。
根据本公开的实施例,如果当前请求能够获取到用于触发外部接口调用的分布式锁,说明其他请求还没有获得分布式锁。如果当前请求不能获得分布式锁,说明其他请求已经获得分布式锁。不能获得分布式锁,表征了包括相同参数的请求已经获得分布式锁,并且此时已经被存入任务队列中等待响应,或者,此时可能正在返回响应结果。如果此时将当前请求继续存入任务队列中,会增加任务队列中请求数量,延长后续请求的响应时间;如果此时将当前请求不存入任务队列中,而是执行循环等待策略,再次确定缓存中是否包括查询请求的查询结果(因为包括相同参数的请求被响应之后,返回的响应结果会存放在缓存中),可以降低任务队列中请求数量,减少后续请求的响应时间。通过缓存结果,当获得后续请求时可以直接从缓存中读取,从而提高系统的并行度,降低由于蓄流带来的延迟影响。
根据本公开的实施例,循环等待策略可以包括单次等待时长,例如,10毫秒。在当前请求没有获取到分布式锁的情况下,执行循环等待策略,即等待1个等待时长(10毫秒)之后,再次确定缓存中是否包括查询请求的查询结果。如果等待1个等待时长(10毫秒)之后,缓存中仍然没有包括查询请求的查询结果,可以动态延长一个或多个等待时长。动态延长的个数可以按照等待成功率调整。
例如,在1分钟内,从缓存中成功获取查询结果的成功率大于10%,可以动态延长一个等待时长,或者,在1分钟内,从缓存中成功获取查询结果的成功率大于30%,可以动态延长2个等待时长,在1分钟内,从缓存中成功获取查询结果的成功率大于50%,可以动态延长3个等待时长等等。
根据本公开的实施例,在执行等待策略超过一定时长之后,仍然没有查询结果,可以动态解除之前的分布式锁,为当前最先获得的请求加锁。在获取到分布式锁的情况下,执行启动延时任务,将当前最先获得的请求存入任务队列中。
通过本公开的实施例,可以解决对同一外部接口的重复调用量较大的技术问题,使得重复请求减少或不发送给外部系统,节省了网络资源和外部系统的系统资源。
根据本公开的实施例,针对请求类型为写入类型的写入请求,可以将写入请求存入缓存中;在等待预设时长后,对缓存中写入参数相同的写入请求进行去重处理;将去重后得到的写入请求存入任务队列中。
根据本公开的实施例,在获得写入请求后,可以优先将写入请求的入参进行缓存,等待预设时长,例如,等待100毫秒,在等待过程中,任何相同入参的接口写入请求,可以被直接丢弃。在等待预设时长结束后,将去重后得到的写入请求存入任务队列中。
通过本公开的实施例,如果针对相同入参重复写入,可以将短时间内的重复写入合并去重,例如,只写入一次,减少了对外部接口的重复写入,降低了网络资源浪费,提高了系统资源利用率。
通过本公开的实施例,在保证了应答响应时长在正常范围内的前提下,将外部接口调用量降低到目标QPS以下(降低至50%以下),网络带宽使用降低20%以上,具有显著的进步。
图8示意性示出了根据本公开实施例的请求响应系统的框图。
如图8所示,请求响应系统800包括:获取模块810、启动模块820、响应模块830和接收模块840。
获取模块810用于获得用于请求调用外部接口的一个或多个请求。
启动模块820用于启动延时任务,将上述一个或多个请求存入任务队列中。
响应模块830用于在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用。
接收模块840用于接收来自上述外部接口的返回结果。
通过本公开的实施例,在获得用于请求调用外部接口的一个或多个请求之后,通过启动延时任务,将上述一个或多个请求存入任务队列中;在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用;并接收来自上述外部接口的返回结果。由于将一个或多个请求存入任务队列中,并且在延时任务达到延时时长后,再对请求进行响应,触发外部接口调用,可以实现对外部接口调用进行控制,达成对外部接口调用的合并,所以至少部分地克服了相关技术中外部接口调用并发量较大,导致对网络资源和外部系统的系统资源消耗大的技术问题,达到了降低网络资源和外部系统的系统资源消耗的技术效果。
根据本公开的实施例,上述启动模块820用于:确定每个请求对应的外部接口。以及将用于请求调用相同外部接口的请求蓄流到同一任务队列中,其中,不同任务队列针对不同的外部接口。
根据本公开的实施例,请求响应系统800还包括:创建模块和第一确定模块。
创建模块用于创建与上述每个请求对应的外部接口对应的延时任务。
第一确定模块用于确定与上述外部接口对应的延时任务的延时时长。
根据本公开的实施例,确定与上述外部接口对应的延时任务的延时时长包括:根据上述外部接口的实际请求量和上述外部接口的请求量阈值动态调整与上述外部接口对应的延时任务的延时时长。
根据本公开的实施例,上述不同任务队列中的每个任务队列包括不同处理级别的子队列,每个子队列设置有对应的阈值范围,将用于请求调用相同外部接口的请求蓄流到同一任务队列中包括:确定用于请求调用相同外部接口的每个请求的权值。以及根据上述每个请求的权值与上述每个子队列对应的阈值范围,将上述每个请求分配到同一任务队列的子队列中。
根据本公开的实施例,确定用于请求调用相同外部接口的每个请求的权值包括:根据上述相同外部接口的平均响应时长、上述每个请求所调用的特征的平均响应时长和上述特征的总调用次数确定上述每个请求的权值。
根据本公开的实施例,在上述延时任务达到延时时长后,对上述任务队列中的一个或多个请求进行响应,触发外部接口调用包括:在上述延时任务达到延时时长后,触发批处理外部接口调用,以实现对上述任务队列中的请求进行批处理。
根据本公开的实施例,请求响应系统800还包括:第二确定模块、第三确定模块和返回模块。
第二确定模块用于在启动延时任务,将上述一个或多个请求存入任务队列中之前,确定上述一个或多个请求中每个请求的请求类型。
第三确定模块用于针对请求类型为查询类型的查询请求,确定缓存中是否包括上述查询请求的查询结果。
返回模块用于在确定缓存中包括上述查询请求的查询结果的情况下,响应于上述查询请求,返回上述查询请求的查询结果。
上述启动模块820用于在确定缓存中不包括上述查询请求的查询结果的情况下,执行启动延时任务,将上述一个或多个请求存入任务队列中的操作。
根据本公开的实施例,上述获取模块810用于在确定缓存中不包括上述查询请求的查询结果的情况下,执行启动延时任务,将上述一个或多个请求存入任务队列中的操作之前,尝试获取用于触发外部接口调用的分布式锁。
根据本公开的实施例,上述启动模块820用于在获取到上述分布式锁的情况下,执行启动延时任务,将上述一个或多个请求存入任务队列中的操作。
根据本公开的实施例,上述第三确定模块用于在没有获取到上述分布式锁的情况下,执行循环等待策略,再次确定上述缓存中是否包括上述查询请求的查询结果。
根据本公开的实施例,请求响应系统800还包括:存入模块和去重模块。
存入模块用于针对请求类型为写入类型的写入请求,将上述写入请求存入上述缓存中。
去重模块用于在等待预设时长后,对上述缓存中写入参数相同的写入请求进行去重处理。
上述启动模块820用于将去重后得到的写入请求存入上述任务队列中。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块810、启动模块820、响应模块830和接收模块840中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,获取模块810、启动模块820、响应模块830和接收模块840中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块810、启动模块820、响应模块830和接收模块840中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中请求响应系统部分与本公开的实施例中请求响应方法部分是相对应的,请求响应系统部分的描述具体参考请求响应方法部分,在此不再赘述。
图9示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的框图。图9示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,根据本公开实施例的计算机系统900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有系统900操作所需的各种程序和数据。处理器901、ROM 902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。系统900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (13)
1.一种请求响应方法,包括:
获得用于请求调用外部接口的一个或多个请求;
启动延时任务,将所述一个或多个请求存入任务队列中;
在所述延时任务达到延时时长后,对所述任务队列中的一个或多个请求进行响应,触发外部接口调用;以及
接收来自所述外部接口的返回结果。
2.根据权利要求1所述的方法,其中,启动延时任务,将所述一个或多个请求存入任务队列中包括:
确定每个请求对应的外部接口;以及
将用于请求调用相同外部接口的请求蓄流到同一任务队列中,其中,不同任务队列针对不同的外部接口。
3.根据权利要求2所述的方法,还包括:
创建与所述每个请求对应的外部接口对应的延时任务;以及
确定与所述外部接口对应的延时任务的延时时长。
4.根据权利要求3所述的方法,其中,所述确定与所述外部接口对应的延时任务的延时时长包括:
根据所述外部接口的实际请求量和所述外部接口的请求量阈值动态调整与所述外部接口对应的延时任务的延时时长。
5.根据权利要求2所述的方法,其中,所述不同任务队列中的每个任务队列包括不同处理级别的子队列,每个子队列设置有对应的阈值范围;
所述将用于请求调用相同外部接口的请求蓄流到同一任务队列中包括:
确定用于请求调用相同外部接口的每个请求的权值;以及
根据所述每个请求的权值与所述每个子队列对应的阈值范围,将所述每个请求分配到同一任务队列的子队列中。
6.根据权利要求5所述的方法,其中,所述确定用于请求调用相同外部接口的每个请求的权值包括:
根据所述相同外部接口的平均响应时长、所述每个请求所调用的特征的平均响应时长和所述特征的总调用次数确定所述每个请求的权值。
7.根据权利要求1所述的方法,其中,所述在所述延时任务达到延时时长后,对所述任务队列中的一个或多个请求进行响应,触发外部接口调用包括:
在所述延时任务达到延时时长后,触发批处理外部接口调用,以实现对所述任务队列中的请求进行批处理。
8.根据权利要求1所述的方法,还包括:在启动延时任务,将所述一个或多个请求存入任务队列中之前,
确定所述一个或多个请求中每个请求的请求类型;
针对请求类型为查询类型的查询请求,确定缓存中是否包括所述查询请求的查询结果;
在确定缓存中包括所述查询请求的查询结果的情况下,响应于所述查询请求,返回所述查询请求的查询结果;
在确定缓存中不包括所述查询请求的查询结果的情况下,执行启动延时任务,将所述一个或多个请求存入任务队列中的操作。
9.根据权利要求8所述的方法,还包括:在确定缓存中不包括所述查询请求的查询结果的情况下,执行启动延时任务,将所述一个或多个请求存入任务队列中的操作之前,
尝试获取用于触发外部接口调用的分布式锁;
在获取到所述分布式锁的情况下,执行启动延时任务,将所述一个或多个请求存入任务队列中的操作;
在没有获取到所述分布式锁的情况下,执行循环等待策略,再次确定所述缓存中是否包括所述查询请求的查询结果。
10.根据权利要求8所述的方法,还包括:
针对请求类型为写入类型的写入请求,将所述写入请求存入所述缓存中;
在等待预设时长后,对所述缓存中写入参数相同的写入请求进行去重处理;以及
将去重后得到的写入请求存入所述任务队列中。
11.一种请求响应系统,包括:
获取模块,用于获得用于请求调用外部接口的一个或多个请求;
启动模块,用于启动延时任务,将所述一个或多个请求存入任务队列中;
响应模块,用于在所述延时任务达到延时时长后,对所述任务队列中的一个或多个请求进行响应,触发外部接口调用;以及
接收模块,用于接收来自所述外部接口的返回结果。
12.一种计算机系统,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010234430.5A CN111753065A (zh) | 2020-03-27 | 2020-03-27 | 请求响应方法、系统、计算机系统和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010234430.5A CN111753065A (zh) | 2020-03-27 | 2020-03-27 | 请求响应方法、系统、计算机系统和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111753065A true CN111753065A (zh) | 2020-10-09 |
Family
ID=72673323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010234430.5A Pending CN111753065A (zh) | 2020-03-27 | 2020-03-27 | 请求响应方法、系统、计算机系统和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111753065A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010334A (zh) * | 2021-03-31 | 2021-06-22 | 中国工商银行股份有限公司 | 一种请求处理方法、装置和设备 |
CN113419874A (zh) * | 2021-06-21 | 2021-09-21 | 网易(杭州)网络有限公司 | 接口请求的触发方法、装置、存储介质及计算机设备 |
CN113746932A (zh) * | 2021-09-10 | 2021-12-03 | 城云科技(中国)有限公司 | 网络请求合并方法、装置及电子装置、计算机程序产品 |
CN114330229A (zh) * | 2022-03-11 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种存储器的延时建模的方法、装置、设备及介质 |
CN116680089A (zh) * | 2023-08-03 | 2023-09-01 | 上海登临科技有限公司 | 一种访存控制结构、方法、内存系统、处理器及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209682A (zh) * | 2016-07-08 | 2016-12-07 | 北京百度网讯科技有限公司 | 业务调度方法、装置和系统 |
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN110489447A (zh) * | 2019-07-16 | 2019-11-22 | 招联消费金融有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
-
2020
- 2020-03-27 CN CN202010234430.5A patent/CN111753065A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209682A (zh) * | 2016-07-08 | 2016-12-07 | 北京百度网讯科技有限公司 | 业务调度方法、装置和系统 |
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN110489447A (zh) * | 2019-07-16 | 2019-11-22 | 招联消费金融有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010334A (zh) * | 2021-03-31 | 2021-06-22 | 中国工商银行股份有限公司 | 一种请求处理方法、装置和设备 |
CN113419874A (zh) * | 2021-06-21 | 2021-09-21 | 网易(杭州)网络有限公司 | 接口请求的触发方法、装置、存储介质及计算机设备 |
CN113419874B (zh) * | 2021-06-21 | 2023-08-08 | 网易(杭州)网络有限公司 | 接口请求的触发方法、装置、存储介质及计算机设备 |
CN113746932A (zh) * | 2021-09-10 | 2021-12-03 | 城云科技(中国)有限公司 | 网络请求合并方法、装置及电子装置、计算机程序产品 |
CN113746932B (zh) * | 2021-09-10 | 2023-09-19 | 城云科技(中国)有限公司 | 网络请求合并方法、装置及电子装置、计算机程序产品 |
CN114330229A (zh) * | 2022-03-11 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种存储器的延时建模的方法、装置、设备及介质 |
CN116680089A (zh) * | 2023-08-03 | 2023-09-01 | 上海登临科技有限公司 | 一种访存控制结构、方法、内存系统、处理器及电子设备 |
CN116680089B (zh) * | 2023-08-03 | 2023-11-14 | 上海登临科技有限公司 | 一种访存控制结构、方法、内存系统、处理器及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111753065A (zh) | 请求响应方法、系统、计算机系统和可读存储介质 | |
US10901802B2 (en) | Method and apparatus for implementing virtual GPU and system | |
US9454407B2 (en) | Service resource allocation | |
CN107341050B (zh) | 基于动态线程池的服务处理方法和装置 | |
CN110545246A (zh) | 一种基于令牌桶的限流方法和装置 | |
US10897428B2 (en) | Method, server system and computer program product for managing resources | |
US20120136850A1 (en) | Memory usage query governor | |
US10862992B2 (en) | Resource cache management method and system and apparatus | |
CN107995286B (zh) | 基于dubbo平台的服务自动启停方法、服务器及存储介质 | |
CN105824691B (zh) | 动态调节线程的方法及装置 | |
CN113010818A (zh) | 访问限流方法、装置、电子设备及存储介质 | |
CN112445857A (zh) | 一种基于数据库的资源配额管理方法和装置 | |
WO2017185615A1 (zh) | 一种业务处理设备的业务状态确定方法及调度设备 | |
US9703597B2 (en) | Dynamic timeout period adjustment of service requests | |
CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
CN109801425B (zh) | 面签业务中队列轮询提示方法、装置、设备及存储介质 | |
CN109361778A (zh) | 一种管理会话的方法及终端 | |
CN116095005A (zh) | 流量管理方法、装置、设备、介质和程序产品 | |
CN107689979B (zh) | 一种下载请求处理方法和处理设备 | |
CN109582460B (zh) | 一种Redis内存数据的淘汰方法和装置 | |
CN116541167A (zh) | 系统流量控制方法、装置、电子设备及计算机可读介质 | |
CN107229424B (zh) | 一种分布式存储系统数据写入方法及分布式存储系统 | |
US10979359B1 (en) | Polling resource management system | |
US20230017127A1 (en) | Extract-transform-load (e-t-l) process using static runtime with dynamic work orders |
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 |