CN107493312A - 一种服务调用方法及装置 - Google Patents
一种服务调用方法及装置 Download PDFInfo
- Publication number
- CN107493312A CN107493312A CN201610418376.3A CN201610418376A CN107493312A CN 107493312 A CN107493312 A CN 107493312A CN 201610418376 A CN201610418376 A CN 201610418376A CN 107493312 A CN107493312 A CN 107493312A
- Authority
- CN
- China
- Prior art keywords
- service
- request
- calling
- thread
- asynchronous
- 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
Classifications
-
- 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
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提供一种服务调用方法及装置,其中,所述方法包括:获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长是之前调用目标服务的调用时长;根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;根据所述调用方式更新用于表征所述调用方式的标志位;将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程。
Description
技术领域
本发明涉及IT(Information Technology,信息技术)领域,尤其涉及一种服务调用方法及装置。
背景技术
随着IT技术的发展,软件开发技术越来越先进,软件架构越来越高级。一个系统通常分为多个层次,各层之间通过服务调用来实现系统功能。在各层服务调用之间,经常会用到同步调用、异步调用二种方式。同步调用是指一种程序A调用另一种程序B,等到程序B返回结果给程序A,程序A收到结果后服务调用结束。异步调用则不需等待被调用服务的返回结果,程序A发送调用程序B的请求后不再等待返回结果即可结束,或者返回结果以其他方式来处理。在具体的实现中,这里的程序可以是进程、线程或包含很多进程的服务。
同步调用与异步调用二种方式各有优劣,所用场景各不相同。一般情况下,同步调用要求在很短的时间内要到收到返回结果,如一些缴费场景。异步调用则是针对某些服务处理耗时场景,如果服务处理耗时长,为了不影响系统效率,一般会采用异步调用方式。实际应用中,往往很难判定采用哪种方式更合适,特别是随着软件技术的发展,各种应用系统变得越来越庞大,业务逻辑越来越复杂,各种服务之间相互调用也变得非常复杂。现有技术中公开了同步调用转换为异步调用的方法,但同步调用与异步调用不能相互转换。
发明内容
为解决现有技术中存在的问题,本发明实施例提供一种服务调用的方法及装置,能够根据服务调用耗时长短,自动实现同步调用与异步调用的相互转换,如此能够提高服务调用的效率,进而能够提高系统的性能。
为达到上述目的,本发明实施例的技术方案是这样实现的:
第一方面:一种服务调用的方法,所述方法包括:获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;
响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长为之前调用目标服务的调用时长;
根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;
根据所述调用方式更新用于表征所述调用方式的标志位;
将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程。
第二方面,一种服务调用的装置,所述装置包括:请求处理线程、同步处理线程和异步处理线程,所述请求处理线程包括第一获取单元、第二获取单元、第一确定单元、第一更新单元、第一发送单元、第一接收单元和第二接收单元,其中:
所述第一获取单元,用于获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;
所述第二获取单元,用于响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长是之前调用目标服务的调用时长;
所述第一确定单元,用于根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;
所述第一更新单元,用于根据所述调用方式更新用于表征所述调用方式的标志位;
所述第一发送单元,用于将所述服务调用请求及所述用于表征调用方式的标志位,发送给同步处理线程或异步处理线程;
所述第一接收单元,用于接收所述请求处理线程发送的所述服务调用请求和所述用于表征同步调用方式的标志位;
所述第二接收单元,用于接收所述请求处理线程发送的所述服务调用请求和所述用于表征异步调用方式的标志位。
本发明实施例提供一种服务调用方法及装置,其中:获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长是之前调用目标服务的调用时长;根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;根据所述调用方式更新用于表征所述调用方式的标志位;将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程,如此,能够根据服务调用耗时长短,自动实现同步调用与异步调用的相互转换,从而能够提高服务调用的效率,并且能够提高系统的性能。
附图说明
图1为本发明实施例一服务调用方法的实现流程示意图;
图2为本发明实施例二服务调用方法的实现流程示意图;
图3为本发明实施例三服务调用方法的实现流程示意图;
图4-1为本发明实施例四服务调用装置的组成结构示意图;
图4-2为本发明实施例四服务调用方法的实现流程示意图;
图5为本发明实施例五服务调用装置的组成结构示意图;
图6为本发明实施例六服务调用装置的组成结构示意图;
图7为本发明实施例七服务调用装置的组成结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
实施例一
为了解决背景技术中存在的技术问题,本发明实施例提供一种服务调用方法,应用于一种服务调用装置,图1为本发明实施例一服务调用方法的实现流程示意图,如图1所示,所述方法包括:
步骤S101,获取服务调用请求;
这里,所述服务调用请求用于请求调用目标服务。
步骤S102,响应所述服务调用请求,获取所述目标服务的调用时长;
这里,所述目标服务的调用时长为之前调用目标服务的调用时长,进一步地,所述步骤S102包括:请求处理线程响应所述服务调用请求,向结果处理线程请求所述目标服务的调用时长;所述请求处理线程接收所述结果处理线程返回的所述目标服务的调用时长。
步骤S103,根据所述目标服务的调用时长,确定调用所述目标服务的调用方式;
这里,所述目标服务的调用方式包括同步调用方式或异步调用方式,进一步地,所述步骤S103包括:请求处理线程判断所述目标服务的调用时长是否小于预先设定的第一门限值;如果所述目标服务的调用时长小于所述第一门限值,采用同步调用方式调用所述目标服务;如果所述目标服务的调用时长不小于所述第一门限值,采用异步调用方式调用所述目标服务。如此,能够根据所述第一调用时长,可以自动实现同步调用与异步调用相互转换。
步骤S104,根据所述调用方式更新用于表征所述调用方式的标志位;
这里,所述调用方式为同步调用方式时,所述更新用于表征所述调用方式的标志位包括:请求处理线程将所述标志位更新为用于表征同步调用方式的第一预设值;所述调用方式为异步调用方式时,所述更新用于表征所述调用方式的标志位包括:请求处理线程将所述标志位更新为用于表征异步调用方式的第二预设值;其中,所述第一预设值与所述第二预设值不同。
步骤S105,将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程。
这里,所述目标服务的调用方式为同步调用方式时,所述请求处理线程将所述服务调用请求及用于表征同步调用方式的第一预设值发送给同步处理线程;所述目标服务的调用方式为异步调用方式时,所述请求处理线程将所述服务调用请求及用于表征异步调用方式的第二预设值发送给异步处理线程。
本发明实施例中,获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长是之前调用目标服务的调用时长;根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;根据所述调用方式更新用于表征所述调用方式的标志位;将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程,如此,能够根据服务调用耗时长短,自动实现同步调用与异步调用相互转换,从而能够提高服务调用的效率,并且能够提高系统的性能。
实施例二
本发明实施例再提供一种服务调用方法,应用于一种服务调用装置,图2为本发明实施例二服务调用方法的实现流程示意图,如图2所示,所述方法包括:
步骤S201,请求处理线程获取服务调用请求;
这里,所述服务调用请求是调用目标服务的请求,所述目标服务可以是一个发送短信的服务。
步骤S202,所述请求处理线程响应所述服务调用请求,向结果处理线程发送用于获取所述目标服务的调用时长的请求;
这里,所述目标服务的调用时长为之前调用所述目标服务的调用时长。
步骤S203,所述请求处理线程接收所述结果处理线程返回的所述目标服务的调用时长;
步骤S204,所述请求处理线程根据所述目标服务的调用时长调用时长,确定所述目标服务的调用方式,根据所述目标服务的调用方式更新用于表征调用方式的标志位;
这里,所述服务的调用方式包括同步调用方式或异步调用方式,进一步地,所述步骤S204包括:所述请求处理线程判断所述目标服务的调用时长是否小于预先设定的第一门限值;如果所述目标服务的调用时长小于所述第一门限值,采用同步调用方式调用所述目标服务;如果所述目标服务的调用时长不小于所述第一门限值,采用异步调用方式调用所述目标服务。所述根据所述目标服务的调用方式更新用于表征调用方式的标志位,包括:所述调用方式为同步调用方式时,所述更新用于表征所述调用方式的标志位包括:将所述标志位更新为用于表征同步调用方式的第一预设值;所述调用方式为异步调用方式时,所述更新用于表征所述调用方式的标志位包括:将所述标志位更新为用于表征异步调用方式的第二预设值,所述第一预设值与所述第二预设值不同。
步骤S205,如果所述目标服务的调用方式为同步调用方式,将所述服务调用请求和所述用于表征同步调用方式的第一预设值发送给同步处理线程,并启动计时器开始计时;
步骤S206,所述同步处理线程根据所述服务调用请求和所述第一预设值,生成同步请求;
步骤S207,所述同步处理线程将所述同步请求发送给请求服务线程;
步骤S208,所述请求服务线程接收并解析所述同步请求,得到所述服务调用请求和所述第一预设值;
步骤S209,所述请求服务线程根据所述第一预设值将所述服务调用请求发送给所述目标服务;
步骤S210,所述请求服务线程向所述请求处理线程发送用于表示所述服务调用请求已经发送给所述目标服务的返回值;
步骤S211,所述请求服务线程接收所述目标服务发送的第一调用结果消息;
这里,所述第一调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长。
步骤S212,所述请求服务线程将所述第一调用结果消息发送给结果处理线程;
步骤S213,所述结果处理线程接收所述第一调用结果消息,并将所述调用结果消息中携带的本次调用所述目标服务的调用时长与之前调用所述目标服务的调用时长根据预定的算法进行加权平均,得到结果值,所述结果处理线程将携带有结果值的第一结果消息发送给请求处理线程。
这里,所述第一结果消息至少包括:用于表征调用方式的标志位,(所述标志位的初始值为0)、结果值、时间戳、本次调用目标服务的调用时长以及失败日志,所述时间戳是所述结果处理线程发送第一结果消息的时间点。
步骤S214,如果所述计时器的计时时长达到所述第一门限值且所述请求处理线程未收到所述请求服务线程发送的所述返回值,所述请求处理线程将用于表征调用方式的标志位更新为第二预设值,所述目标服务的调用方式由同步调用方式转换为异步调用方式。
实施例三
基于前述的实施例,本发明实施再提供一种服务调用方法,图3为本发明实施例一服务调用方法实现流程示意图,如图3所示,所述方法包括:
步骤S301,请求处理线程获取服务调用请求;
这里,所述服务调用请求是调用目标服务的请求,所述目标服务可以是一个发送短信的服务。
步骤S302,所述请求处理线程响应所述服务调用请求,向结果处理线程发送用于获取所述目标服务的调用时长的请求;
这里,所述目标服务的调用时长为之前调用所述目标服务的调用时长。
步骤S303,所述请求处理线程接收所述结果处理线程返回的所述目标服务的调用时长;
步骤S304,所述请求处理线程根据所述目标服务的调用时长调用时长,确定所述目标服务的调用方式,根据所述目标服务的调用方式更新用于表征调用方式的标志位;
这里,所述服务的调用方式包括同步调用方式或异步调用方式,进一步地,所述步骤S304包括:请求处理线程判断所述目标服务的调用时长是否小于预先设定的第一门限值;如果所述目标服务的调用时长小于所述第一门限值,采用同步调用方式调用所述目标服务;如果所述目标服务的调用时长不小于所述第一门限值,采用异步调用方式调用所述目标服务。所述根据所述目标服务的调用方式更新用于表征调用方式的标志位,包括:所述调用方式为同步调用方式时,所述更新用于表征所述调用方式的标志位包括:将所述标志位更新为用于表征同步调用方式的第一预设值;所述调用方式为异步调用方式时,所述更新用于表征所述调用方式的标志位包括:将所述标志位更新为用于表征异步调用方式的第二预设值,所述第一预设值与所述第二预设值不同。
步骤S305,如果所述目标服务的调用方式为异步调用方式,将所述服务调用请求和所述用于表征异步调用方式的第二预设值发送给异步处理线程;
步骤S306,所述异步处理线程根据所述服务调用请求和所述第二预设值,生成异步请求;
步骤S307,所述异步处理线程将所述异步请求发送给请求服务线程;
步骤S308,所述请求服务线程接收并解析所述异步请求,得到所述服务调用请求和所述第二预设值;
步骤S309,所述请求服务线程根据所述第二预设值将所述服务调用请求添加到异步服务发送队列;
步骤S310,所述异步服务发送队列中的所述服务调用请求发送给所述目标服务后,所述请求服务线程接收所述目标服务发送的第二调用结果消息;
这里,所述第二调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长。
步骤S311,所述请求服务线程将所述第二调用结果消息发送给结果处理线程;
步骤S312,所述结果处理线程接收所述第二调用结果消息,并将所述调用结果消息中携带的本次调用所述目标服务的调用时长与之前调用所述目标服务的调用时长根据预定的算法进行加权平均,得到结果值,所述结果处理单元将携带有结果值的第二结果消息发送给请求处理线程。
这里,所述第二结果消息至少包括:用于表征调用方式的标志位,(所述标志位的初始值为0)、结果值、时间戳、本次调用目标服务的调用时长以及失败日志,所述时间戳是所述结果处理单元发送第二结果消息的时间点。
实施例四
本发明实施例先提供一种服务调用的方法及装置,图4-1为本发明实施例四服务调用装置的组成结构示意图,如图4-1所示,所述服务调用装置包括请求处理单元401、异步处理单元402、同步处理单元403、结果处理单元404和请求服务单元405。请求处理单元401,用于获取服务调用请求,所述服务调用请求用于请求调用目标服务,根据结果处理单元404中所述目标服务的最近一次处理结果获取最近一次调用所述目标服务的调用时长,根据所述调用时长判定采用何种调用方式调用所述目标服务,同时更新用于表征调用方式的标志位(例如0为同步方式,1为异步方式)。异步处理单元402将所述服务调用请求和所述用于表征异步调用方式的标志位打包成异步请求发送给请求服务单元405。同步处理单元403将所述服务调用请求和所述用于表征同步调用方式的标志位打包成同步请求发送给请求服务单元405。请求服务单元405根据所述标志位确定所述目标服务的调用方式,如果是同步调用方式则将所述服务调用请求发送给被调用服务,如果是异步调用方式则将所述服务调用请求添加到异步服务发送队列,最后将调用结果消息发送给结果处理单元。
具体说明如下:
请求处理单元401,设置有表征调用方式的标志位与计时器。所述请求处理单元用于获取服务调用请求,所述服务调用请求用于请求调用目标服务,根据结果处理单元中所述目标服务的最近一次调用处理结果(获取调用时长),判定采用何种方式调用所述目标服务(如时长小于3秒则采用同步调用方式),同时更新用于表征调用方式的标志位(例如0为同步方式,1为异步方式)。如果采用同步调用方式则启动计时器开始计时,3秒后切换为异步调用方式。
异步处理单元402,用于将所述服务调用请求和所述用于表征异步调用方式的标志位打包成异步请求发送给请求服务单元。
同步处理单元403,用于将所述服务调用请求和所述用于表征同步调用方式的标志位打包成同步请求发送给请求服务单元。
结果处理单元404,用于处理所述目标服务的调用结果消息,以文件缓存方式存储结果消息,所述结果消息包括用于表征调用方式的标志位,(所述标志位的初始值为0)、结果值、时间戳、本次调用目标服务的调用时长以及失败日志,但不限于这些数据。
请求服务单元405,包含一个异步服务发送队列。所述请求服务单元根据用于表征调用方式的标志位确定所述目标服务的调用方式,如果是同步调用方式则将所述服务调用请求发送给所述目标服务,如果是异步调用方式则将所述服务调用请求添加到发送队列,最后将所述目标服务的调用结果消息发送给结果处理单元。
基于图4-1所示的实施例,本发明实施例再提供一种服务调用方法,图4-2为本发明实施例四服务调用方法的实现流程示意图,如图4-2所示,所述方法包括:
步骤S401:请求处理单元获取到服务调用请求后,向结果处理单元发送获取所述目标服务的调用时长的请求;
这里,所述服务调用请求,用于请求调用所述目标服务,所述目标服务的调用时长为上一次调用所述目标服务的调用时长。
步骤S402:结果处理单元接收到获取所述目标服务的调用时长的请求后,向所述请求处理单元发送所述目标服务的最近一次处理结果记录;
这里,所述处理结果记录中包含所述目标服务的调用时长,如果所述目标服务一次都没有被调用,则调用时长为0。
步骤S403:所述请求处理单元根据所述目标服务的调用时长,确定所述目标服务的调用方式,根据所述目标服务的调用方式更新用于表征调用方式的标志位,并根据所述目标服务的调用方式将所述服务调用请求发送给相应的处理单元;
这里,所述请求处理单元根据所述目标服务的调用时长,确定所述目标服务的调用方式,包括:判断所述目标服务的调用时长是否小于预定的第一门限值(这里假定第一门限值为3秒),如果所述目标服务的调用处理时长小于所述第一门限值,采用同步调用方式调用所述目标服务,启动计时器开始计时;如果所述目标服务的调用时长不小于所述第一门限值,采用异步调用方式调用所述目标服务。
所述根据所述目标服务的调用方式更新用于表征调用方式的标志位,包括:所述调用方式为同步调用方式时,所述更新用于表征所述调用方式的标志位包括:将所述标志位更新为用于表征同步调用方式的第一预设值;所述调用方式为异步调用方式时,所述更新用于表征所述调用方式的标志位包括:将所述标志位更新为用于表征异步调用方式的第二预设值,所述第一预设值与所述第二预设值不同,例如,0为同步方式,1为异步方式。
所述根据所述目标服务的调用方式将所述服务调用请求发送给相应的处理单元包括:如果所述目标服务的调用方式为同步调用方式,将所述服务调用请求和所述用于表征同步调用方式的标志位发送给同步处理单元;如果所述目标服务的调用方式为异步调用方式,将所述服务调用请求所述用于表征异步调用方式的标志位发送给异步处理单元。
步骤S404:同步处理单元将所述服务调用请求和所述用于表征同步调用方式的标志位打包成同步请求发送给请求服务单元;
步骤S405:请求处理单元中的计时器达到3秒后则废除同步请求,转为异步请求方式,进行步骤6。同时更新用于表征调用方式的标志位;
步骤S406:请求处理单元将所述服务调用请求和所述用于表征异步调用方式的标志位发送给异步处理单元;
步骤S407:异步处理单元将所述服务调用请求和所述用于表征异步调用方式的标志位打包成异步请求发送给请求服务单元;
步骤S408:请求服务单元接收并解析接收到的请求,得到用于表征调用方式的标识位和所述服务调用请求,根据所述标志位确定所述目标服务的调用方式,如果是同步调用方式则将所述服务调用请求发送给所述目标服务,如果是异步调用方式则将所述服务调用请求添加到所述请求服务单元中包含的异步服务发送队列中,最后将所述目标服务的调用结果消息发送给结果处理单元;
这里,所述调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长。
步骤S409:结果处理单元接收所述调用结果消息,并将所述调用结果消息中携带的本次调用所述目标服务的调用时长与之前调用所述目标服务的调用时长根据预定的算法进行加权平均,得到结果值,所述结果处理单元将携带有结果值的第一结果消息发送给请求处理单元。
这里,所述第一结果消息至少包括:用于表征调用方式的标志位,(所述标志位的初始值为0)、结果值、时间戳、本次调用目标服务的调用时长以及失败日志,所述时间戳是所述结果处理单元发送第一结果消息的时间点。
至此,流程结束。
实施例五
基于前述的实施例,本实施例提供一种服务调用装置,图5为本发明实施例五服务调用装置的组成结构示意图,如图5所示,所述装置包括请求处理线程51、同步处理线程52和异步处理线程53,所述请求处理线程51包括第一获取单元511、第二获取单元512、第一确定单元513、第一更新单元514和第一发送单元515,所述同步处理线程包括第一接收单元521,所述异步处理线程包括第二接收单元531,其中:
所述第一获取单元511,用于获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;
所述第二获取单元512,用于响应所述服务调用请求,获取所述目标服务的调用时长;
这里,所述目标服务的调用时长是之前调用目标服务的调用时长;所述第二获取单元512进一步包括第一请求单元5121和第三接收单元5122,所述第一请求单元5121,用于响应所述服务调用请求,向结果处理线程请求所述目标服务的调用时长;所述第三接收单元5122,用于接收所述结果处理线程返回的所述目标服务的调用时长。
所述第一确定单元513,用于根据所述目标服务的调用时长,确定调用所述目标服务的调用方式;
这里,所述调用方式包括同步调用方式或异步调用方式;所述第一确定单元513进一步包括第一判断单元5131、第二确定单元5132和第三确定单元5133,所述第一判断单元5131,用于判断所述目标服务的调用时长是否小于预先设定的第一门限值;所述第二确定单元5132,用于如果所述目标服务的调用时长小于所述第一门限值,请求处理线程确定采用同步调用方式调用所述目标服务;所述第三确定单元5133,用于如果所述目标服务的调用时长不小于所述第一门限值,请求处理线程确定采用异步调用方式调用所述目标服务。
所述第一更新单元514,用于根据所述调用方式更新用于表征所述调用方式的标志位;
这里,所述第一更新单元514进一步包括第二更新单元5141和第三更新单元5142,所述第二更新单元5141,用于当所述调用方式为同步调用方式时,将所述标志位更新为用于表征同步调用方式的第一预设值;所述第三更新单元5142,用于当所述调用方式为异步调用方式时,将所述标志位更新为用于表征异步调用方式的第二预设值;其中,所述第一预设值与所述第二预设值不同。
所述第一发送单元515,用于将所述服务调用请求及所述用于表征调用方式的标志位,发送给同步处理线程或异步处理线程;
所述第一接收单元521,用于接收所述请求处理线程发送的所述服务调用请求和所述用于表征同步调用方式的标志位;
所述第二接收单元531,用于接收所述请求处理线程发送的所述服务调用请求和所述用于表征异步调用方式的标志位。
实施例六
本发明实施例提供一种服务调用装置,图6为本发明实施例六服务调用装置的组成结构示意图,如图6所示,所述装置包括请求处理线程51、同步处理线程52、请求服务线程54和结果处理线程55,所述请求处理线程51还包括第一启动单元516、第二发送单元517、第四更新单元518和第十接收单元510,所述同步处理线程52还包括第一生成单元522和第三发送单元523,所述请求服务线程54包括第四接收单元541、第四发送单元542、第五接收单元543、第五发送单元544和第十发送单元549,所述结果处理线程55包括第六接收单元551,其中:
所述第一启动单元516,用于如果所述调用方式为同步调用方式,启动计时器开始计时;
所述第二发送单元517,用于将所述服务调用请求和所述用于表征同步调用方式的第一预设值发送给同步处理线程;
所述第四更新单元518,用于如果所述计时器的计时时长达到所述第一门限值且所述请求处理线程未收到所述请求服务线程发送的所述返回值时,将用于表征调用方式的标志位更新为第二预设值;
所述第十接收单元510,用于接收请求服务线程发送的用于表示表示所述服务调用请求已经发送给所述目标服务的返回值;
所述第一生成单元522,用于根据所述服务调用请求和所述第一预设值,生成同步请求;
所述第三发送单元523,用于将所述同步请求发送给请求服务线程;
所述第四接收单元541,用于接收并解析所述同步请求,得到所述服务调用请求和所述第一预设值;
所述第四发送单元542,用于根据所述第一预设值将所述服务调用请求发送给所述目标服务;
所述第五接收单元543,用于接收所述目标服务发送的第一调用结果消息;
这里,所述第一调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长。
所述第五发送单元544,用于将所述第一调用结果消息发送给结果处理线程;
所述第十发送单元549,用于所述请求服务线程根据所述第一预设值将所述服务调用请求发送给所述目标服务后,向所述请求处理线程发送返回值;
这里,所述返回值用于表示所述服务调用请求已经发送给所述目标服务。
所述第六接收单元551,用于接收并处理所述请求服务线程发送的所述第一调用结果消息。
实施例七
本发明实施例提供一种服务调用装置,图7为本发明实施例七服务调用装置的组成结构示意图,如图7所示,所述装置包括请求处理线程51、异步处理线程53、请求服务线程54和结果处理线程55,所述请求处理线程51包括第六发送单元519,所述异步处理线程53包括第二生成单元532和第七发送单元533,所述请求服务线程54包括第七接收单元545、第八发送单元546、第八接收单元547和第九发送单元548,所述结果处理线程55包括第九接收单元552,其中:
所述第六发送单元519,用于如果所述调用方式为异步调用方式,将所述服务调用请求和所述用于表征异步调用方式的第二预设值发送给异步处理线程;
所述第二生成单元532,用于根据所述服务调用请求和所述第二预设值,生成异步请求;
所述第七发送单元533,用于将所述异步请求发送给请求服务线程;
所述第七接收单元545,用于接收并解析所述异步请求,得到所述服务调用请求和所述第二预设值;
所述第八发送单元546,用于根据所述第二预设值将所述服务调用请求发送到异步服务发送队列;
所述第八接收单元547,用于所述异步服务发送队列中的所述服务调用请求发送给所述目标服务后,接收所述目标服务发送的第二调用结果消息;
这里,所述第二调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长。
所述第九发送单元548,用于将所述第二调用结果消息发送给结果处理线程;
所述第九接收单元552,用于接收并处理所述请求服务线程发送的所述第二调用结果消息。
这里需要指出的是:以上服务调用装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本发明服务调用装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解,为节约篇幅,因此不再赘述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种服务调用方法,其特征在于,所述方法包括:
获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;
响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长为之前调用目标服务的调用时长;
根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;
根据所述调用方式更新用于表征所述调用方式的标志位;
将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程。
2.根据权利要求1中所述的方法,其特征在于,所述响应所述服务调用请求,获取目标服务的调用时长,包括:
请求处理线程响应所述服务调用请求,向结果处理线程请求所述目标服务的调用时长;
所述请求处理线程接收所述结果处理线程返回的所述目标服务的调用时长。
3.根据权利要求1中所述的方法,其特征在于,所述根据所述目标服务的调用时长,确定所述目标服务的调用方式,包括:
请求处理线程判断所述目标服务的调用时长是否小于预先设定的第一门限值;
如果所述目标服务的调用时长小于所述第一门限值,请求处理线程确定所述目标服务的调用方式为同步调用方式;
如果所述目标服务的调用时长不小于所述第一门限值,请求处理线程确定所述目标服务的调用方式为异步调用方式。
4.根据权利要求1至3任一项中所述的方法,其特征在于,所述请求处理线程根据所述调用方式更新用于表征所述调用方式的标志位,包括:
所述调用方式为同步调用方式时,所述更新用于表征所述调用方式的标志位包括:请求处理线程将所述标志位更新为用于表征同步调用方式的第一预设值;
所述调用方式为异步调用方式时,所述更新用于表征所述调用方式的标志位包括:请求处理线程将所述标志位更新为用于表征异步调用方式的第二预设值;
其中,所述第一预设值与所述第二预设值不同。
5.根据权利要求4中所述的方法,其特征在于,所述将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程,包括:
如果所述调用方式为同步调用方式,请求处理线程启动计时器开始计时;
所述请求处理线程将所述服务调用请求和所述用于表征同步调用方式的第一预设值发送给同步处理线程;
所述方法还包括:
所述同步处理线程根据所述服务调用请求和所述第一预设值,生成同步请求;
所述同步处理线程将所述同步请求发送给请求服务线程;
所述请求服务线程接收并解析所述同步请求,得到所述服务调用请求和所述第一预设值;
所述请求服务线程根据所述第一预设值将所述服务调用请求发送给所述目标服务;
所述请求服务线程接收所述目标服务发送的第一调用结果消息,所述第一调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长;
所述请求服务线程将所述第一调用结果消息发送给结果处理线程。
6.根据权利要求5中所述的方法,其特征在于,所述方法还包括:
所述请求服务线程根据所述第一预设值将所述服务调用请求发送给所述目标服务后,所述请求服务线程向所述请求处理线程发送返回值,所述返回值用于表示所述服务调用请求已经发送给所述目标服务;
如果所述计时器的计时时长达到所述第一门限值且所述请求处理线程未收到所述请求服务线程发送的所述返回值,所述请求处理线程将用于表征调用方式的标志位更新为第二预设值。
7.根据权利要求1至3任一项中所述的方法,其特征在于,所述将所述服务调用请求及所述标志位,发送给同步处理线程或异步处理线程,包括:
如果所述目标服务的调用方式为异步调用方式,请求处理线程将所述服务调用请求和用于表征异步调用方式的第二预设值发送给异步处理线程;
所述方法还包括:
所述异步处理线程根据所述服务调用请求和所述第二预设值,生成异步请求;
所述异步处理线程将所述异步请求发送给请求服务线程;
所述请求服务线程接收并解析所述异步请求,得到所述服务调用请求和所述第二预设值;
所述请求服务线程根据所述第二预设值将所述服务调用请求发送到异步服务发送队列;
所述异步服务发送队列中的所述服务调用请求发送给所述目标服务后,所述请求服务线程接收所述目标服务发送的第二调用结果消息,所述第二调用结果消息包括用于表征调用方式的标志位和本次调用所述目标服务的调用时长;
所述请求服务线程将所述第二调用结果消息发送给结果处理线程。
8.一种服务调用的装置,所述装置包括请求处理线程、同步处理线程和异步处理线程,所述请求处理线程包括第一获取单元、第二获取单元、第一确定单元、第一更新单元和第一发送单元,所述同步处理线程包括第一接收单元,所述异步处理线程包括第二接收单元,其中:
所述第一获取单元,用于获取服务调用请求,其中,所述服务调用请求用于请求调用目标服务;
所述第二获取单元,用于响应所述服务调用请求,获取所述目标服务的调用时长,其中,所述目标服务的调用时长是之前调用目标服务的调用时长;
所述第一确定单元,用于根据所述目标服务的调用时长,确定调用所述目标服务的调用方式,其中,所述调用方式包括同步调用方式或异步调用方式;
所述第一更新单元,用于根据所述调用方式更新用于表征所述调用方式的标志位;
所述第一发送单元,用于将所述服务调用请求及所述用于表征调用方式的标志位,发送给同步处理线程或异步处理线程;
所述第一接收单元,用于接收所述请求处理线程发送的所述服务调用请求和所述用于表征同步调用方式的标志位;
所述第二接收单元,用于接收所述请求处理线程发送的所述服务调用请求和所述用于表征异步调用方式的标志位。
9.根据权利要求8中所述的装置,其特征在于,所述请求处理线程还包括第一请求单元和第三接收单元,其中:
所述第一请求单元,用于响应所述服务调用请求,向结果处理线程请求所述目标服务的调用时长;
所述第三接收单元,用于接收所述结果处理线程返回的所述目标服务的调用时长。
10.根据权利要求8或9中所述的装置,其特征在于,所述请求处理线程还包括第一判断单元、第二确定单元和第三确定单元,其中:
所述第一判断单元,用于判断所述目标服务的调用时长是否小于预先设定的第一门限值;
所述第二确定单元,用于如果所述目标服务的调用时长小于所述第一门限值,请求处理线程确定采用同步调用方式调用所述目标服务;
第三确定单元,用于如果所述目标服务的调用时长不小于所述第一门限值,请求处理线程确定采用异步调用方式调用所述目标服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610418376.3A CN107493312B (zh) | 2016-06-12 | 2016-06-12 | 一种服务调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610418376.3A CN107493312B (zh) | 2016-06-12 | 2016-06-12 | 一种服务调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107493312A true CN107493312A (zh) | 2017-12-19 |
CN107493312B CN107493312B (zh) | 2020-09-04 |
Family
ID=60642251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610418376.3A Active CN107493312B (zh) | 2016-06-12 | 2016-06-12 | 一种服务调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107493312B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109873863A (zh) * | 2019-01-18 | 2019-06-11 | 北京百度网讯科技有限公司 | 服务的异步调用方法和装置 |
CN112231114A (zh) * | 2020-09-22 | 2021-01-15 | 深圳云天励飞技术股份有限公司 | 一种事件处理方法及相关设备 |
CN113254225A (zh) * | 2021-05-26 | 2021-08-13 | 北京沃东天骏信息技术有限公司 | 一种数据同步方法和装置 |
CN114979285A (zh) * | 2022-05-10 | 2022-08-30 | 百果园技术(新加坡)有限公司 | 服务调用方法、装置、设备、系统、存储介质及产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097527A (zh) * | 2006-06-27 | 2008-01-02 | 中国银联股份有限公司 | 一种应用进程的流程调度方法及系统 |
CN101917487A (zh) * | 2010-08-23 | 2010-12-15 | 中国电信股份有限公司 | 移动终端与服务器通信优化方法及系统 |
US20120311024A1 (en) * | 2009-12-17 | 2012-12-06 | International Business Machines Corporation | Managed channel for asynchronous requests |
CN103164273A (zh) * | 2012-09-06 | 2013-06-19 | 佳都新太科技股份有限公司 | 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法 |
US20150186181A1 (en) * | 2013-12-27 | 2015-07-02 | Oracle International Corporation | System and method for supporting flow control in a distributed data grid |
CN105577795A (zh) * | 2015-12-24 | 2016-05-11 | 北京奇虎科技有限公司 | 服务接口调用方法和装置 |
-
2016
- 2016-06-12 CN CN201610418376.3A patent/CN107493312B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101097527A (zh) * | 2006-06-27 | 2008-01-02 | 中国银联股份有限公司 | 一种应用进程的流程调度方法及系统 |
US20120311024A1 (en) * | 2009-12-17 | 2012-12-06 | International Business Machines Corporation | Managed channel for asynchronous requests |
CN101917487A (zh) * | 2010-08-23 | 2010-12-15 | 中国电信股份有限公司 | 移动终端与服务器通信优化方法及系统 |
CN103164273A (zh) * | 2012-09-06 | 2013-06-19 | 佳都新太科技股份有限公司 | 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法 |
US20150186181A1 (en) * | 2013-12-27 | 2015-07-02 | Oracle International Corporation | System and method for supporting flow control in a distributed data grid |
CN105577795A (zh) * | 2015-12-24 | 2016-05-11 | 北京奇虎科技有限公司 | 服务接口调用方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109873863A (zh) * | 2019-01-18 | 2019-06-11 | 北京百度网讯科技有限公司 | 服务的异步调用方法和装置 |
CN109873863B (zh) * | 2019-01-18 | 2021-10-15 | 北京百度网讯科技有限公司 | 服务的异步调用方法和装置 |
CN112231114A (zh) * | 2020-09-22 | 2021-01-15 | 深圳云天励飞技术股份有限公司 | 一种事件处理方法及相关设备 |
CN113254225A (zh) * | 2021-05-26 | 2021-08-13 | 北京沃东天骏信息技术有限公司 | 一种数据同步方法和装置 |
CN114979285A (zh) * | 2022-05-10 | 2022-08-30 | 百果园技术(新加坡)有限公司 | 服务调用方法、装置、设备、系统、存储介质及产品 |
CN114979285B (zh) * | 2022-05-10 | 2024-02-27 | 百果园技术(新加坡)有限公司 | 服务调用方法、装置、设备、系统、存储介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN107493312B (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105721318B (zh) | 一种软件定义网络sdn中发现网络拓扑的方法和装置 | |
CN107493312A (zh) | 一种服务调用方法及装置 | |
CN102904738B (zh) | 工单处理方法及相关装置和系统 | |
CN108540568B (zh) | 计算能力共享方法及智能设备 | |
CN106815066A (zh) | 一种定时任务调度方法、装置及系统 | |
CN111526606B (zh) | 用于数据传输的方法及装置、智能家居设备、存储介质 | |
CN106161256A (zh) | 一种边界网关协议bgp路由的处理方法及装置 | |
CN108540402A (zh) | 一种优化队列时延的方法和设备 | |
CN110430590A (zh) | 网络切片匹配方法及装置 | |
CN109062681A (zh) | 一种周期性循环任务的执行方法、系统、装置及存储介质 | |
CN111555984B (zh) | 用于数据传输的方法及装置、智能家居设备、存储介质 | |
CN103701653B (zh) | 一种接口热插拔配置数据的处理方法及网络配置服务器 | |
CN108445788A (zh) | 一种酒店场景控制方法及相关装置 | |
CN110098976A (zh) | 网络参数的测量方法、装置、计算机设备和存储介质 | |
CN103299298A (zh) | 处理业务的方法和系统 | |
CN112714159A (zh) | 消息转发方法和装置、存储介质及电子装置 | |
CN104917884B (zh) | 一种数据传输方法及装置 | |
CN107862040A (zh) | 一种应用实例的缓存中数据的更新方法、装置及一种集群 | |
CN107018095B (zh) | 基于离散事件的交换单元仿真系统及方法 | |
CN109224451A (zh) | 基于区块链子链的游戏开发方法、设备以及存储介质 | |
CN1997008B (zh) | 一种解除激活pdp上下文的方法及其装置 | |
CN109062758A (zh) | 一种服务器系统宕机处理方法、系统、介质及设备 | |
CN104123261B (zh) | 一种电子设备及信息传送方法 | |
CN105227451B (zh) | 一种报文处理方法及装置 | |
CN104660521B (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 |