CN111488373A - 用于处理请求的方法和*** - Google Patents
用于处理请求的方法和*** Download PDFInfo
- Publication number
- CN111488373A CN111488373A CN202010212616.0A CN202010212616A CN111488373A CN 111488373 A CN111488373 A CN 111488373A CN 202010212616 A CN202010212616 A CN 202010212616A CN 111488373 A CN111488373 A CN 111488373A
- Authority
- CN
- China
- Prior art keywords
- business logic
- request
- processing
- server
- client
- 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
Links
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computational Linguistics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及一种在服务器处执行的用于处理来自客户端的请求的方法,所述服务器包括为处理所述请求而被依序调用的多个业务逻辑,所述方法包括:接收来自所述客户端的请求;依序调用所述多个业务逻辑来处理所述请求;以及在处理所述请求的过程中,如果确定所述多个业务逻辑中的一个或多个业务逻辑被标记为异步,则对所述请求执行异步处理,其中对所述请求执行异步处理包括:向所述客户端返回所述请求将被异步处理的指示;以及当对所述请求的处理完成后保存处理结果,以供所述客户端查询或向所述客户端推送。本申请还涉及在客户端处执行的对应方法以及相关联的***和计算机可读存储介质。本申请能够提升请求响应速度、降低服务器资源占用。
Description
技术领域
本说明书涉及用于由服务器处理来自客户端的请求的方法和***。
背景技术
在现有***,尤其是分布式***中,来自用户的客户端的一个业务请求往往经过一个或多个服务器中的多个业务逻辑的调用才能完成。例如,为了处理交易请求,可能需要由业务框架来调用用户认证逻辑、支付逻辑、库存处理逻辑、结算逻辑、风险控制逻辑等等。在许多时候,业务逻辑可能需要被依序调用。例如,在上面的示例中,用户认证逻辑可能需要在支付逻辑之前被调用,支付逻辑可能需要在结算逻辑之前被调用,如此等等。
随着完成客户端的业务请求所需的业务逻辑越来越多,调用链路也越来越长。有些业务逻辑可能需要很长的处理时间,例如比较繁忙。例如,支付逻辑可能在访问与支付相关联的数据库时遇到较长的等待时间。因此,在调用链路更长的情况下,调用的链路耗时以及响应时间会变长,造成客户端体验下降。此外,服务器可能为客户端分配连接句柄,而在整个调用链路被处理的过程中,分配句柄无法被释放,这可能导致服务器的大量句柄被占用而无法处理新的请求。同时,这还可能造成连接资源占用链路时间变长,直接造成***吞吐量下降。
因此,需要一种提升请求响应速度、降低资源占用的方案。
发明内容
为了解决上述问题和其它问题,本说明书提供了能够用于提升请求响应速度的技术方案。
本说明书的实施例通过以下技术方案来实现其上述目的。
在一个方面中,公开了一种在服务器处执行的用于处理来自客户端的请求的方法,所述服务器包括为处理所述请求而被依序调用的多个业务逻辑,所述方法包括:
接收来自所述客户端的请求;
依序调用所述多个业务逻辑来处理所述请求;以及
在处理所述请求的过程中,如果确定所述多个业务逻辑中的一个或多个业务逻辑被标记为异步,则对所述请求执行异步处理,其中对所述请求执行异步处理包括:
向所述客户端返回所述请求将被异步处理的指示;以及
当对所述请求的处理完成后保存处理结果,以供所述客户端查询或向所述客户端推送。
优选地,对所述请求执行异步处理包括还包括:向所述客户端返回用于查询所述请求的处理结果的函数,以供所述客户端使用所述函数来查询所述处理结果。
优选地,所述方法还包括在接收到来自所述客户端的所述请求之后,为所述客户端分配连接句柄,以及对所述请求执行异步处理还包括在向所述客户端返回所述请求将被异步处理的指示后释放所述连接句柄。
优选地,所述方法还包括:监控所述多个业务逻辑中的每个业务逻辑的执行时间。
优选地,如果一业务逻辑的执行时间超过为该业务逻辑设定的阈值,则将该业务逻辑标记为异步;以及如果一业务逻辑的执行时间不超过为该业务逻辑设定的阈值,则将该业务逻辑标记为同步。
优选地,如果业务逻辑正在多个线程中被执行,则监控该业务逻辑在每个线程中的执行时间。
优选地,如果该业务逻辑在任一个或多个线程中的执行时间超过阈值,则将该业务逻辑标记为异步;以及如果该业务逻辑在所有线程中的执行时间均不超过阈值,则将该业务逻辑标记为同步。
优选地,监控所述多个业务逻辑中的每个业务逻辑的执行时间包括:
确定业务逻辑的执行开始时间;
确定该业务逻辑的执行结束时间;以及
用该业务逻辑的执行结束时间减去执行开始时间以获得该业务逻辑的执行时间。
优选地,业务逻辑是同步还是异步是用执行模式标记符来标记的,且每个业务逻辑的执行模式标记符是线程安全的。
优选地,如果业务逻辑被标记为异步,且该业务逻辑在执行时抛出异常,则存储异常处理结果,并启用重试策略。
优选地,所述重试策略包括:
如果该业务逻辑在执行时抛出异常,则确定重试执行时间;
在所确定的重试执行时间执行重试;以及
如果获得正常处理结果,则存储正常处理结果以取代异常处理结果。
优选地,所述处理结果的查询或推送在安全连接上执行。
优选地,当所述服务器接收到多个请求时且所述多个请求被执行异步处理时,采用调度算法来处理所述多个请求。
在另一方面中,公开了一种在客户端处执行的方法,所述方法包括:
向服务器传送处理业务的请求,所述服务器包括用于处理所述请求的多个业务逻辑;
接收来自所述服务器的响应,其中所述响应包括对所述请求的处理结果或者所述请求将被异步处理的指示;以及
如果所述响应为所述请求将被异步处理的指示,则稍后向所述服务器查询处理结果。
优选地,稍后向所述服务器查询处理结果包括周期性地查询处理结果。
优选地,稍后向所述服务器查询处理结果包括用默认的查询函数来向所述服务器查询处理结果。
优选地,所述方法还包括:
从所述服务器接收用于查询所述请求的处理结果的函数;以及
使用所述函数来查询所述处理结果。
优选地,所述方法还包括:
确定所查询到的处理结果是否为异常处理结果;以及
如果所查询到的处理结果为异常处理结果,则稍后重新查询处理结果。
在又一方面中,公开了一种存储指令的计算机可读存储介质,所述指令当被计算机执行时,使所述计算机执行上述方法。
在再一方面中,公开了一种***,所述***包括用于执行上述方法的装置。
与现有技术相比,本说明书的实施例可具有如下有益效果:
本说明书的实施例通过在响应时间过长时将繁忙的业务逻辑标记为异步而提前返回,从而节省了对资源的占用,提升了***效率,提升了对客户端的请求的响应速度。
本说明书的实施例通过在异步执行模式下在业务逻辑执行异常时重试,可进一步提高对请求的处理效率和准确度。
当然,实施本申请的任一技术方案无需同时达到所有上述技术效果。
附图说明
本发明的以上发明内容以及下面的具体实施方式在结合附图阅读时会得到更好的理解。需要说明的是,附图仅作为所请求保护的发明的示例。在附图中,相同的附图标记代表相同或类似的元素。
图1示出现有技术的用于对客户端的请求做出响应的过程的示意图。
图2示出根据本说明书的实施例的用于对客户端的请求做出响应的过程的示意图。
图3示出在服务器处执行的用于处理来自客户端的请求的方法的流程图。
图4示出在服务器处执行的用于处理来自客户端的请求的方法的流程图。
具体实施方式
以下在具体实施方式中详细叙述本说明书实施例的详细特征以及优点,其内容足以使任何本领域技术人员了解各实施例的技术内容并据以实施,且根据本说明书所揭露的说明书、权利要求及附图,本领域技术人员可轻易地理解本说明书的实施例相关的目的及优点。
为了提升对客户端的请求的响应速度,本说明书实施例公开了用于提升对来自客户端的请求的响应速度且提高服务器效率的方法、***、计算机可读介质和装置。
现有技术示意图
参见附图1,其中示出了根据现有技术的用于对客户端的请求做出响应的过程100的示意图。
如图1中所示,客户端102可向服务器104传送请求。该请求通常是处理业务的请求。该请求可以例如是交易请求,也可以是其它任何类型的请求。该客户端102可以是任何计算设备,包括但不限于智能电话、膝上型计算机、台式计算机、智能手表或智能手环、媒体播放器、游戏机、个人数字助理等等。客户端102上可以安装用于传送请求的应用程序(图中未示出),例如淘宝应用等等。用户可使用客户端102上的应用程序来向服务器104传送请求、接收来自服务器104的响应以及查看对请求的处理结果等。
服务器104接收来自客户端102的请求之后,将对该请求进行处理。服务器104可以是任何类型的服务器,包括但不限于小型机、大型机、服务器集群、云端服务器等等。服务器104也可以是个人计算机等任何其它类型的计算设备。
该服务器104可包括多个业务逻辑。所谓业务逻辑,是指用于执行特定业务的逻辑模块。例如,业务逻辑可对应于函数。业务逻辑可由服务器104中的业务框架(例如顶层框架)来调用。
例如,为了处理交易请求,可能需要由业务框架来调用用户认证逻辑、支付逻辑、库存处理逻辑、结算逻辑、风险控制逻辑等等。在许多时候,业务逻辑可能需要被依序调用。例如,在上面的示例中,用户认证逻辑可能需要在支付逻辑之前被调用,支付逻辑可能需要在结算逻辑之前被调用,如此等等。也就是说,为了处理该请求,多个业务逻辑可被同步执行。例如,该多个业务逻辑可能在同一线程中被执行。例如,在一个实施例中,为了对客户端102的请求做出响应,业务框架将首先调用业务逻辑A106,在业务逻辑A106对调用处理完毕并返回中间结果之后,业务框架将调用业务逻辑B108以利用业务逻辑A所返回的中间结果来继续处理该请求。类似地,在业务逻辑B108对调用处理完毕并返回中间结果之后,业务框架将调用业务逻辑C110以利用业务逻辑B所返回的中间结果来继续处理该请求,并获得最终处理结果以返回给客户端102。
应当领会,虽然图中示出了三个业务逻辑,但可存在更多或更少的业务逻辑。
如图1所示,在有些情况下,业务逻辑B108可能执行时间较长。例如,业务逻辑B108可能需要访问某个数据库(例如交易模块可能访问与交易相关的数据库),而此时该数据库的访问可能较慢。例如,这可能是由于与数据库的连接质量较差、云端数据库有机器出现宕机、数据库I/O出现瓶颈等等。
在这种情况下,在传统方案中,业务框架通常仍旧需要调用业务逻辑B108,并等待业务逻辑B108返回的中间结果,随后继续执行业务逻辑C110,并在业务逻辑C110获得最终结果之后向客户端102返回最终结果。由于业务逻辑B 108需要执行很长时间才能返回,所以客户端102需要很长时间才能得到响应并向用户呈现最终结果,这导致用户的体验很差。
另一方面,在此期间,服务器104为客户端102分配的连接句柄将在整个处理过程中被保持,从而占用了服务器104的句柄资源。在对服务器104存在大量请求的情况下,服务器104的句柄资源可能会被耗尽。在这种情况下,服务器104可能无法处理更多的请求。同时,这还可能造成连接资源占用链路时间变长,直接造成***吞吐量下降。
在传统方案中,为解决上述问题,一种典型的方法是增加服务器的数量。但是增加服务器的数量通常成本较高,且需要较长的时间来采购和配置。此外,在例如不是由于服务器本身存在瓶颈,而是例如业务逻辑B108所访问的数据库存在瓶颈的情况下,增加服务器的数量也无法解决这一问题。
为解决上述问题,本发明提供了一种在一个或多个业务逻辑执行时间长而响应慢时将其执行模式标记为异步的方法。
具体而言,如图2所示,其示出了根据本发明的实施例的用于对客户端的请求做出响应的过程200的示意图。
如图2所示,与图1类似,客户端102可向服务器104传送请求。
服务器104可接收来自客户端102的请求并对该请求进行处理。同样,服务器104可包括用于处理该请求的多个业务逻辑,例如图2中的业务逻辑A106、业务逻辑B108和业务逻辑C110。优选地,该多个业务逻辑可被依序调用。例如,如图2所示,顶层框架可调用业务逻辑A104,且在业务逻辑A106返回后调用业务逻辑B108,并在业务逻辑B108返回后调用业务逻辑C110。例如,为了处理该请求,多个业务逻辑可被同步执行。优选地,该多个业务逻辑(例如业务逻辑A106、业务逻辑B108和业务逻辑C110)可在同一线程中被执行。
服务器104还可包括用于处理该请求的其它业务逻辑(图中未示出),这些业务逻辑可能不是被依序调用的,本文所述的实施例无需监控这些实施例或对其行为作出改变。
在本说明书的实施例中,服务器104可包括监控模块202。监控模块202可以是顶层框架的一部分,或者是独立的模块。监控模块202可监控服务器104中的各业务逻辑的当前状态。例如,监控模块202可确定各业务逻辑的执行时间。该执行时间例如按以下方式来确定。
监控模块202可确定一业务逻辑(例如业务逻辑B108)的执行开始时间。例如,监控模块202可记录业务逻辑的执行开始时间。或者,监控模块202可从服务器的日志服务来获取业务逻辑的执行开始时间。又或者,监控模块202可基于与该业务逻辑相关联的时间戳来确定执行开始时间。
监控模块202可确定该业务逻辑的执行结束时间。通常,该执行结束时间为该业务逻辑返回的时间。同样地,监控模块202可通过任何方式来确定执行结束时间,例如监控模块202可自行记录执行结束时间、从服务器的日志服务来获取执行结束时间、或者基于与该业务逻辑相关联的时间戳来确定执行开始时间。
随后,监控模块202可用该业务逻辑的执行结束时间减去执行开始时间以获得该业务逻辑的执行时间。
在一些示例中,可能存在业务逻辑在多个线程中被调用的情形。例如,对于用户认证逻辑而言,可能在为处理多个用户的交易请求而执行的多个线程中均被调用,也可能因其它原因而被调用(例如为了处理余额查询请求而被调用等等)。
在此情况下,监控模块202可监控该业务逻辑在每个线程中的执行时间。例如,监控模块202可采用如上所述的任何方式来确定该业务逻辑在每个线程中的执行开始时间和执行结束时间。随后,监控模块202可将该业务逻辑在一线程中的执行结束时间减去执行开始时间来获得该业务逻辑在该线程中的执行时间。
此外,监控模块202还可基于业务逻辑的执行时间是否超过阈值来确定将该业务逻辑的执行模式标记为同步还是异步。例如,如果一业务逻辑的执行时间超过为该业务逻辑设定的阈值,则将该业务逻辑标记为异步。如果一业务逻辑的执行时间不超过为该业务逻辑设定的阈值,则将该业务逻辑标记为同步。
在业务逻辑正在多个线程中被调用的情况下,可根据实际情况确定如何将业务逻辑标记为异步或同步。
在一优选实施例中,如果该业务逻辑在所有线程中的执行时间均不超过阈值,则将该业务逻辑标记为同步;否则,如果该业务逻辑在任一个或多个线程中的执行时间超过阈值,则将该业务逻辑标记为异步。
也可采用其它方式。例如,可指定如果业务逻辑在任一个或多个线程中的执行时间不超过阈值,则将该业务逻辑标记为同步;否则,如果该业务逻辑在所有线程中的执行时间超过阈值,则将该业务逻辑标记为异步。
又例如,可指定如果执行时间超过阈值的线程数量超过线程数量阈值或线程比例阈值,则可将该业务逻辑标记为异步;否则可将该业务逻辑标记为同步。例如,对于特定业务逻辑(例如业务逻辑B),假定该业务逻辑正在8个线程(例如服务器此时正在处理8个请求)中被执行。此时,可监控该8个线程的执行时间并将每个线程的执行时间与阈值进行比较,并对执行时间超过阈值的线程的数量执行计数。例如,可指定线程数量阈值为4,此时当执行时间超过阈值的线程的数量大于4时将该业务逻辑(例如业务逻辑B)标记为异步。又例如,可指定线程比例阈值为50%,此时当执行时间超过阈值的线程的数量占该业务逻辑在其中执行的线程的总数量(例如为8)的比例大于50%时,可将该业务逻辑(例如业务逻辑B)标记为异步。否则,可将该业务逻辑标记为同步。
优选地,可为每个业务逻辑分别指定阈值。例如,在处理交易请求的服务器的示例中,用户认证逻辑的阈值(例如1秒)可小于支付逻辑的阈值(例如3秒)。这样的差异可反映不同业务逻辑的执行复杂度以及其它情况,例如是否需要访问数据库、是否要计入网络延迟等等。
替代地,可为各业务逻辑指定相同的阈值,例如1秒。
优选地,业务逻辑的阈值可由业务框架的开发者来指定。
优选地,业务逻辑的阈值可以被设置为全局变量,从而使得服务器的每个线程都可以访问该变量。
优选地,监控模块202可持续监控业务逻辑的当前状态并基于业务逻辑的执行时间是否超过阈值来改变对业务逻辑的标记。例如,监控模块202可周期性地(例如每100毫秒、500毫秒、1秒、3秒等等)确定每个业务逻辑的当前状态并在必要时改变对业务逻辑的标记。
监控模块202例如可采用执行模式标记符来标记每个业务逻辑处于同步执行模式还是异步执行模式。例如,监控模块202可维护包括每个业务逻辑的执行模式标记符的数据表或其它类型的数据记录。当监控模块202要改变对业务逻辑的执行模式的标记时,监控模块202可访问该数据表或数据记录以改变该业务逻辑的执行模式标记符。
优选地,每个业务逻辑的执行模式标记符是线程安全的。例如,除了监控模块202(和/或顶层框架)之外,业务逻辑在其中执行的线程或其它线程将不能对监控模块202执行修改。通过这种方式,可以保证对执行模式的标记的正确性。
服务器104在依序调用所述多个业务逻辑处理来自客户端102的请求的过程中,可确定所述多个业务逻辑中的一个或多个业务逻辑被标记为异步。如果确定服务器104的全部业务逻辑均被标记为同步,则服务器104可按常规方式来对所述请求执行处理。例如,服务器104可依序调用所述多个业务逻辑处理所述请求、获得处理结果并向客户端102返回处理结果。具体过程可参考上面参考图1所描述的过程。
如果确定服务器104的一个或多个业务逻辑(例如业务逻辑B108)被标记为异步,则监控模块202可对所述请求执行异步处理。对所述请求执行异步处理的具体描述如下:
服务器104可向客户端102传送请求将被异步执行的指示。该指示可告知客户端102该请求将被异步执行。客户端102可被配置为能够接收并解读该指示。例如,客户端102上安装的应用程序(例如淘宝应用等)可被配置成能够接收该指示,并且理解该指示表明请求将被异步执行。
例如,该指示可以是预先约定的消息。例如,服务器104可向客户端102传送{type:”async”}消息以向客户端102告知服务器104对当前请求的执行模式为异步。通过向客户端102传送请求将被异步执行的指示,客户端102可更快地接收到来自服务器104的响应,从而提升了用户体验。
在优选示例中,客户端102可以向用户告知该请求将被异步执行。例如,客户端102可向用户显示(例如经由该应用程序)消息:“服务器正在处理您的请求,稍后将自动查询处理结果!”或者“服务器正在处理您的请求,请稍后查询处理结果!”
在另一示例中,客户端102可不向用户告知该请求将被异步执行,而是自动地在稍后查询处理结果并在查询到处理结果后向用户显示。
优选地,服务器104的一个或多个业务逻辑(无论其执行模式被标记为同步还是异步)可按原有方式执行,直至得到处理结果。例如,假设如图2所示,业务逻辑A106被标记为同步,而业务逻辑B108和业务逻辑C110被标记为异步,则服务器104在接收到来自客户端102的请求之后,可调用业务逻辑A106来处理,在业务逻辑A106对调用处理完毕并返回中间结果之后,业务框架将调用业务逻辑B108以利用业务逻辑A106所返回的中间结果来继续处理该请求;随后,在业务逻辑B108对调用处理完毕并返回中间结果之后,业务框架将调用业务逻辑C110以利用业务逻辑B所返回的中间结果来继续处理该请求,并获得最终处理结果。
在一些示例中,在被标记为异步时,服务器可按照调度规则来处理未处理完的请求。以上面的交易请求为例,假设服务器包括用于处理交易请求的用户认证逻辑、支付逻辑和结算逻辑,且支付逻辑被标记为异步而用户认证逻辑和结算逻辑被标记为同步,则来自三个客户端X、Y和Z的交易请求将被异步处理,且已经向三个客户端X、Y和Z均发送了交易请求将被异步处理的指示。此时服务器104可按照调度规则来处理这三个交易请求。例如,服务器104可按交易请求被接收的次序来依次处理交易请求。又例如,服务器104可按照三个交易请求的优先级来按优先级从高到低的次序来处理交易请求。也可按照其它规则(例如按照交易金额、按照标的等)来调度对交易请求的处理。
此时,由于客户端已经被返回指示且用户已经得到通知,此时用户对交易请求的返回时间将变得不那么敏感,从而使得按照调度规则来处理交易请求变得可能。
在得到处理结果后,服务器104可将保存该处理结果,以供客户端102查询或推送给客户端102,如下面更详细地描述的。例如,该处理结果可与该请求的请求标识符一起存储,以供客户端102查询。
服务器104可将该处理结果保存在该服务器的存储器204中,也可将该处理结果保存在其它服务器处,例如保存在云端。
优选地,服务器104还可向客户端102传送用来查询请求的处理结果的函数。例如,服务器104可向客户端102告知用来访问请求的处理结果的数据库所使用的函数以及相关参数。例如,该函数可包括要查询的处理结果的地址。
替代地,客户端102被预先配置有查询函数,并使用该默认查询函数向服务器104查询处理结果。
优选地,服务器104还可被配置成包括用于处理来自客户端102的查询并向客户端102提供处理结果的结果返回函数。该结果返回函数与查询函数相对应。例如,当客户端102使用所接收的查询函数或默认的查询函数来查询处理结果时,服务器104可对采用该结果返回函数来向客户端102返回处理结果。替代地,服务器104不包括专门的结果返回函数,而是由客户端102直接查询包括处理结果的数据表或其它数据记录。客户端102可周期性地或在其它查询策略查询处理结果。例如,客户端102可被配置成每1分钟查询处理结果。取决于具体应用,客户端102可按其它周期(例如每2分钟、每10分钟、每一个小时等)查询处理结果。
优选地,为增加安全性,客户端102向服务器104传送查询和服务器104向客户端102传送的处理结果都采用安全连接来执行。优选地,所述查询和处理结果中的一者或两者可被加密。
替代地,不是由客户端102向服务器104查询处理结果,而是服务器104向客户端102推送处理结果。优选地,该推送在安全连接上执行。优选地,所推送的处理结果被加密。
相应地,在客户端102已查询到处理结果或向客户端102推送处理结果后,服务器104可将相应的处理结果丢弃以节省存储资源。替代地,服务器104可将处理结果保持更长的时间。
优选地,在向所述客户端返回所述请求将被异步处理的指示后,服务器104可释放与该客户端相关联的连接句柄。通过释放连接句柄,可节省服务器104的句柄资源,从而能够提高服务器104的处理效率,增加服务器104的吞吐量。
在现有技术中,如果服务器104的业务逻辑在处理请求时抛出异常,客户端102将接收到异常并再次发送请求,从而促使服务器104重试以便获取正常的处理结果。然而,在本说明书的实施例中,由于客户端102已经被返回交易将被异步处理的指示,所以客户端102将不会接收到异常并发起重试。因此,在本说明书的一些优选实施例中,还包括在业务逻辑的处理出现异常时执行重试的重试策略。
例如,假设业务逻辑B108在执行期间遇到异常。例如,业务逻辑B108可能需要与其它***(诸如数据库或其它第三方***)通过网络连接进行通信,如果网络连接异常或其它***宕机,则业务逻辑B108在执行期间可能抛出异常。在此情况下,服务器104可存储异常处理结果。例如,服务器104可将异常处理结果存储在数据库中。
在此情况下,服务器104可启用重试策略。例如,服务器104可在稍后的时间重新执行抛出异常的业务逻辑(例如业务逻辑B108)。优选地,服务器104可在预定时间后执行抛出异常的业务逻辑。例如,服务器104可(例如通过监控模块202)计算出重试执行时间。例如,可在当前执行时间上增加指定时间长度(例如5秒)作为重试执行时间。例如在2018.12.1312:46:39当前执行抛出异常,则重试执行时间可被计算为2018.12.13 12:46:44。可在该重试执行时间重新执行业务逻辑B108。此步骤可重复执行,直到得到正常处理结果,或者达到阈值执行次数为止。通过在异步执行模式下执行异常时的重试,可解决上面指出的问题。
在此情况下,服务器104在得到正常处理结果后,可存储异常处理结果。例如,服务器104可将正常处理结果存储在存储器204中的数据库中,以取代先前存储的异常处理结果。
优选地,客户端102在查询处理结果时,将确定所查询到的处理结果是否为异常处理结果。如果所查询到的处理结果为异常处理结果,客户端102可在另一时间(例如周期性地)重新查询处理结果,直到查询到正常处理结果,或者达到阈值执行次数为止。
参考图3,其示出了在服务器处执行的用于处理来自客户端的请求的方法300的流程图。所述服务器包括为处理所述请求而被依序调用的多个业务逻辑。
方法300可包括:在步骤302,接收来自所述客户端的请求。
方法300还可包括:在步骤304,依序调用所述多个业务逻辑来处理所述请求。
方法300还可包括:在步骤306,确定所述多个业务逻辑中的一个或多个业务逻辑是否被标记为异步。其中,基于对每个业务逻辑的执行时间的监控来确定该业务逻辑是否被标记为异步。如果一业务逻辑的执行时间超过为该业务逻辑设定的阈值,则将该业务逻辑标记为异步,而如果一业务逻辑的执行时间不超过为该业务逻辑设定的阈值,则将该业务逻辑标记为同步。如果业务逻辑正在多个线程中被执行,则监控该业务逻辑在每个线程中的执行时间,其中如果该业务逻辑在任一个或多个线程中的执行时间超过阈值,则将该业务逻辑标记为异步,而如果该业务逻辑在所有线程中的执行时间均不超过阈值,则将该业务逻辑标记为同步。可用执行模式标记符来标记业务逻辑的执行模式。优选地,每个业务逻辑的执行模式标记符是线程安全的。
其中,监控所述多个业务逻辑中的每个业务逻辑的执行时间包括:确定业务逻辑的执行开始时间;确定该业务逻辑的执行结束时间;以及用该业务逻辑的执行结束时间减去执行开始时间以获得该业务逻辑的执行时间。
方法300还可包括:如果所述多个业务逻辑中的一个或多个业务逻辑被标记为异步,则在步骤308,对所述请求执行异步处理。否则在步骤310,按常规方式处理所述请求,例如等待对所述请求的处理完毕之后将处理结果返回给客户端。
其中,步骤308可包括:在步骤312,向所述客户端返回所述请求将被异步处理的指示。其中,在向所述客户端返回所述请求将被异步处理的指示后,可释放为所述客户端分配的连接句柄。
此外,步骤308还可包括:在步骤314,当对所述请求的处理完成后保存处理结果,以供所述客户端查询或向所述客户端推送。优选地,所述处理结果的查询或推送在安全连接上执行。
优选地,当所述服务器接收到多个请求时且所述多个请求被执行异步处理时,采用调度算法来处理所述多个请求。例如,可按照所述多个请求的优先级来处理所述多个请求。
方法300还可包括:优选地,业务逻辑被标记为异步,且该业务逻辑在执行时抛出异常,则存储异常处理结果,并启用重试策略。例如,所述重试策略可包括:如果该业务逻辑在执行时抛出异常,则确定重试执行时间;在所确定的重试执行时间执行重试;如果获得正常处理结果,则存储正常处理结果以取代异常处理结果。
方法300的细节可参考上面针对图2所进行的描述。
在客户端处执行的方法
参考图4,其示出了根据本说明书的实施例的在客户端处执行的方法400的流程图。所述服务器包括多个业务逻辑。
方法400可包括:在步骤402,向服务器传送处理业务的请求,所述服务器包括用于处理所述请求的多个业务逻辑。
方法400可包括:在步骤404,接收来自所述服务器的响应,其中所述响应包括对所述请求的处理结果或者所述请求将被异步处理的指示。
方法400可包括:在步骤406,如果所述响应为所述请求将被异步处理的指示,则稍后向所述服务器查询处理结果。例如,可周期性地查询处理结果。优选地,可从所述服务器接收用于查询所述请求的处理结果的函数,并使用所述函数来查询所述处理结果。替代地,可采用默认的查询函数来向所述服务器查询处理结果。
优选地,方法400还可包括:确定所查询到的处理结果是否为异常处理结果。如果所查询到的处理结果为异常处理结果,则稍后重新查询处理结果。
方法400的细节也可参考上面针对图2所进行的描述。
需要指出的是,虽然本文中仅描述了单一服务器,但应当理解,所述单一服务器可以是多个服务器或服务器群集。类似地,虽然本文中描述了在服务器中的存储器和数据库,但应当理解,所述存储器例如可以是云存储器和分布式数据库等。
而且,本申请还公开了一种包括存储于其上的计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被处理器执行时使得所述处理器执行本文所述的各实施例的方法。
此外,本申请还公开了一种***,该***包括用于实现本文所述的各实施例的方法的装置。
可以理解,根据本说明书的各实施例的方法可以用软件、固件或其组合来实现。
应该理解,所公开的方法中各步骤的具体次序或阶层是示例性过程的解说。基于设计偏好,应该理解,可以重新编排这些方法中各步骤的具体次序或阶层。所附方法权利要求以样本次序呈现各种步骤的要素,且并不意味着被限定于所呈现的具体次序或阶层,除非在本文中有特别叙述。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本发明并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
同样,需要指出的是,虽然本发明已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,在没有脱离本发明精神的情况下还可做出各种等效的变化或替换,因此,只要在本发明的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。
Claims (22)
1.一种在服务器处执行的用于处理来自客户端的请求的方法,其特征在于,所述服务器包括为处理所述请求而被依序调用的多个业务逻辑,所述方法包括:
接收来自所述客户端的请求;
依序调用所述多个业务逻辑来处理所述请求;以及
在处理所述请求的过程中,如果确定所述多个业务逻辑中的一个或多个业务逻辑被标记为异步,则对所述请求执行异步处理,其中对所述请求执行异步处理包括:
向所述客户端返回所述请求将被异步处理的指示;以及
当对所述请求的处理完成后保存处理结果,以供所述客户端查询或向所述客户端推送。
2.如权利要求1所述的方法,其特征在于,对所述请求执行异步处理包括还包括:向所述客户端返回用于查询所述请求的处理结果的函数,以供所述客户端使用所述函数来查询所述处理结果。
3.如权利要求1所述的方法,其特征在于,所述方法还包括在接收到来自所述客户端的所述请求之后,为所述客户端分配连接句柄,以及对所述请求执行异步处理还包括在向所述客户端返回所述请求将被异步处理的指示后释放所述连接句柄。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:监控所述多个业务逻辑中的每个业务逻辑的执行时间。
5.如权利要求4所述的方法,其特征在于:
如果一业务逻辑的执行时间超过为该业务逻辑设定的阈值,则将该业务逻辑标记为异步;以及
如果一业务逻辑的执行时间不超过为该业务逻辑设定的阈值,则将该业务逻辑标记为同步。
6.如权利要求1所述的方法,其特征在于,如果业务逻辑正在多个线程中被执行,则监控该业务逻辑在每个线程中的执行时间。
7.如权利要求6所述的方法,其特征在于:
如果该业务逻辑在任一个或多个线程中的执行时间超过阈值,则将该业务逻辑标记为异步;以及
如果该业务逻辑在所有线程中的执行时间均不超过阈值,则将该业务逻辑标记为同步。
8.如权利要求4所述的方法,其特征在于,监控所述多个业务逻辑中的每个业务逻辑的执行时间包括:
确定业务逻辑的执行开始时间;
确定该业务逻辑的执行结束时间;以及
用该业务逻辑的执行结束时间减去执行开始时间以获得该业务逻辑的执行时间。
9.如权利要求1所述的方法,其特征在于,业务逻辑是同步还是异步是用执行模式标记符来标记的,且每个业务逻辑的执行模式标记符是线程安全的。
10.如权利要求1所述的方法,其特征在于,如果业务逻辑被标记为异步,且该业务逻辑在执行时抛出异常,则存储异常处理结果,并启用重试策略。
11.如权利要求10所述的方法,其特征在于,所述重试策略包括:
如果该业务逻辑在执行时抛出异常,则确定重试执行时间;
在所确定的重试执行时间执行重试;以及
如果获得正常处理结果,则存储正常处理结果以取代异常处理结果。
12.如权利要求1所述的方法,其特征在于,所述处理结果的查询或推送在安全连接上执行。
13.如权利要求1所述的方法,其特征在于,当所述服务器接收到多个请求时且所述多个请求被执行异步处理时,采用调度算法来处理所述多个请求。
14.一种在客户端处执行的方法,其特征在于,所述方法包括:
向服务器传送处理业务的请求,所述服务器包括用于处理所述请求的多个业务逻辑;
接收来自所述服务器的响应,其中所述响应包括对所述请求的处理结果或者所述请求将被异步处理的指示;以及
如果所述响应为所述请求将被异步处理的指示,则稍后向所述服务器查询处理结果。
15.如权利要求14所述的方法,其特征在于,稍后向所述服务器查询处理结果包括周期性地查询处理结果。
16.如权利要求14所述的方法,其特征在于,稍后向所述服务器查询处理结果包括用默认的查询函数来向所述服务器查询处理结果。
17.如权利要求14所述的方法,其特征在于,所述方法还包括:
从所述服务器接收用于查询所述请求的处理结果的函数;以及
使用所述函数来查询所述处理结果。
18.如权利要求14所述的方法,其特征在于,所述方法还包括:
确定所查询到的处理结果是否为异常处理结果;以及
如果所查询到的处理结果为异常处理结果,则稍后重新查询处理结果。
19.一种存储指令的计算机可读存储介质,所述指令当被计算机执行时,使所述计算机执行如权利要求1-13中任一项所述的方法。
20.一种***,包括用于执行如权利要求1-13中任一项所述的方法的装置。
21.一种存储指令的计算机可读存储介质,所述指令当被计算机执行时,使所述计算机执行如权利要求14-18中任一项所述的方法。
22.一种***,包括用于执行如权利要求14-18中任一项所述的方法的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010212616.0A CN111488373B (zh) | 2020-03-24 | 2020-03-24 | 用于处理请求的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010212616.0A CN111488373B (zh) | 2020-03-24 | 2020-03-24 | 用于处理请求的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111488373A true CN111488373A (zh) | 2020-08-04 |
CN111488373B CN111488373B (zh) | 2023-09-22 |
Family
ID=71794580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010212616.0A Active CN111488373B (zh) | 2020-03-24 | 2020-03-24 | 用于处理请求的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488373B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113596002A (zh) * | 2021-07-20 | 2021-11-02 | 中国联合网络通信集团有限公司 | 一种服务提供方法及装置 |
CN114125479A (zh) * | 2021-11-05 | 2022-03-01 | 游艺星际(北京)科技有限公司 | 信息处理方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150006481A1 (en) * | 2013-07-01 | 2015-01-01 | International Business Machines Corporation | Reliable Asynchronous Processing of a Synchronous Request |
CN105099989A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于处理业务请求及获取业务处理结果的方法、装置和*** |
CN105635083A (zh) * | 2014-11-14 | 2016-06-01 | 航天信息股份有限公司 | 基于服务器和客户端架构的业务处理方法及业务处理*** |
CN107992504A (zh) * | 2016-10-26 | 2018-05-04 | 中兴通讯股份有限公司 | 一种文件处理方法及装置 |
CN109753370A (zh) * | 2018-12-28 | 2019-05-14 | 北京东方国信科技股份有限公司 | 一种低时延、高吞吐的远程过程调用方法 |
-
2020
- 2020-03-24 CN CN202010212616.0A patent/CN111488373B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150006481A1 (en) * | 2013-07-01 | 2015-01-01 | International Business Machines Corporation | Reliable Asynchronous Processing of a Synchronous Request |
CN105099989A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于处理业务请求及获取业务处理结果的方法、装置和*** |
CN105635083A (zh) * | 2014-11-14 | 2016-06-01 | 航天信息股份有限公司 | 基于服务器和客户端架构的业务处理方法及业务处理*** |
CN107992504A (zh) * | 2016-10-26 | 2018-05-04 | 中兴通讯股份有限公司 | 一种文件处理方法及装置 |
CN109753370A (zh) * | 2018-12-28 | 2019-05-14 | 北京东方国信科技股份有限公司 | 一种低时延、高吞吐的远程过程调用方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113596002A (zh) * | 2021-07-20 | 2021-11-02 | 中国联合网络通信集团有限公司 | 一种服务提供方法及装置 |
CN113596002B (zh) * | 2021-07-20 | 2022-11-18 | 中国联合网络通信集团有限公司 | 一种服务提供方法及装置 |
CN114125479A (zh) * | 2021-11-05 | 2022-03-01 | 游艺星际(北京)科技有限公司 | 信息处理方法、装置、电子设备和存储介质 |
CN114125479B (zh) * | 2021-11-05 | 2023-12-19 | 游艺星际(北京)科技有限公司 | 信息处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111488373B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200159745A1 (en) | Conditional master election in distributed databases | |
CN112162865B (zh) | 服务器的调度方法、装置和服务器 | |
EP3221795B1 (en) | Service addressing in distributed environment | |
US9729488B2 (en) | On-demand mailbox synchronization and migration system | |
US9201693B2 (en) | Quota-based resource management | |
CN107798108B (zh) | 一种异步任务查询方法及设备 | |
CN111950988B (zh) | 分布式工作流调度方法、装置、存储介质及电子设备 | |
EP3576036A1 (en) | Service execution method and device | |
US7694054B2 (en) | Governing access to a computing resource | |
JP2004520655A (ja) | 分散型コンピュータシステムにおける資源の選択 | |
CN111913818A (zh) | 一种确定服务间依赖关系的方法及相关装置 | |
US11750711B1 (en) | Systems and methods for adaptively rate limiting client service requests at a blockchain service provider platform | |
CN113742109B (zh) | 第三方服务对接方法、装置、设备及存储介质 | |
CN111258726B (zh) | 任务调度方法和装置 | |
US10530887B1 (en) | Pre-caching data for use upon execution of program code | |
CN111488373B (zh) | 用于处理请求的方法和*** | |
CN110737510B (zh) | 块设备管理*** | |
CN108984290A (zh) | 任务调度方法和*** | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN115617527A (zh) | 线程池的管理方法、配置方法、管理装置和配置装置 | |
CN115757611A (zh) | 大数据集群切换方法、装置、电子设备及存储介质 | |
CN111913784A (zh) | 任务调度方法及装置、网元、存储介质 | |
CN111835809A (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
US20220276901A1 (en) | Batch processing management | |
CN114296891A (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 |