CN110995780A - Api调用方法、装置、存储介质及电子设备 - Google Patents
Api调用方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN110995780A CN110995780A CN201911047673.1A CN201911047673A CN110995780A CN 110995780 A CN110995780 A CN 110995780A CN 201911047673 A CN201911047673 A CN 201911047673A CN 110995780 A CN110995780 A CN 110995780A
- Authority
- CN
- China
- Prior art keywords
- service
- api call
- call request
- node
- api
- 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
Images
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例公开了一种API调用方法、装置、存储介质及电子设备,属于网络通信领域。本申请实施例的方法包括:接收用于用于第一服务的API调用请求时,直接返回表示第一服务调用成功的调用成功消息,不需要等到完成第一服务的或第一服务依赖的其他服务执行完毕,对于调用者来说能及时响应API调用请求,减少API调用的时延。同时,在第一服务需要调用第二服务时,生成调用第二服务的API调用请求,在第二服务不可用时,将调用第二服务的API调用服务进行存储,检测到第二服务可用时,再重发该API调用请求,不需要由发起者重发API调用请求,减少API调用请求经过的节点数量,降低API调用失败处理的复杂度和减少API调用请求的传输时延。
Description
技术领域
本申请涉及网络通信领域,尤其涉及一种API调用、装置、存储介质及电子设备。
背景技术
API(Application Programming Interface,应用程序编程接口)用于将服务器的能力对外 开放,服务器响应于API调用请求向自身的能力提供给API调用者。服务器中可以配置多个 可被调用的服务,API调用者向服务器发送API调用请求,API调用请求用于调用服务A, 假设服务A为不可用状态,服务A所在的节点会向API调用者返回调用失败消息,API调用 者接收到调用失败消息后,重新发起API调用请求,直到服务A切换为可用状态。同时,服 务A可能需要依赖其他服务才能完成,所有共同完成API调用请求指示的业务的多个服务构 成的调用链,调用链上的任意一个服务不可用状态时,都会触发API调用者重新发送API调 用请求,直到调用链上所有服务都切换为可用状态,从上述对于API调用失败的处理过程可 用看出:调用链中服务恢复为可用状态的时间是不确定的,这样可能会导致处理时延和处理 开销比较大。
发明内容
为解决上述的技术问题,本申请提供一种API调用方法、装置、存储介质及电子设备, 解决现有技术中API调用失败时处理过程繁琐造成的处理时延和开销大的问题。
第一方面,本申请提供了一种API调用请求,包括:
接收第一API调用请求,所述第一API调用请求携带第一服务的参数,所述API调用请 求用于调用所述第一服务;响应于所述第一API调用请求向所述第一API调用请求的发起者 发送调用成功消息;在所述第一服务需要调用第二服务时,生成第二API调用请求;其中所 述第二API调用请求携带第二服务的参数;检测所述第二服务的状态;在所述第二服务为不 可用状态时,存储所述第二API调用请求,在检测到所述第二服务恢复为可用状态时,将所 述第二API调用请求发送给所述第二服务所在的服务节点。
在一种可能的设计中,
本申请又一方面提供了一种装置,可以实现上述第一方面或第二方面的分布式任务调度 方法。例如所述装置可以是芯片(如基带芯片,或通信芯片等)或者服务器。可以通过软件、 硬件、或者通过硬件执行相应的软件实现上述方法。
在一种可能的实现方式中,所述装置的结构中包括处理器、存储器;所述处理器被配置 为支持所述装置执行上述应用测试方法中相应的功能。存储器用于与处理器耦合,其保存所 述装置必要的程序(指令)和/或数据。可选的,所述装置还可以包括通信接口用于支持所述 装置与其他网元之间的通信。
在另一种可能的实现方式中,所述装置可以包括执行上述方法中相应动作的单元模块。
在又一种可能的实现方式中,包括处理器和收发装置,所述处理器与所述收发装置耦合, 所述处理器用于执行计算机程序或指令,以控制所述收发装置进行信息的接收和发送;当所 述处理器执行所述计算机程序或指令时,所述处理器还用于实现上述方法。其中,所述收发 装置可以为收发器、收发电路或输入输出接口。当所述装置为芯片时,所述收发装置为收发 电路或输入输出接口。
当所述装置为芯片时,发送单元可以是输出单元,比如输出电路或者通信接口;接收单 元可以是输入单元,比如输入电路或者通信接口。当所述装置为网络设备时,发送单元可以 是发射器或发射机;接收单元可以是接收器或接收机。
本申请又一方面提供了一种装置,该装置包括:存储器和处理器;其中,所述存储器中 存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行各方面所述 的方法。
本申请的又一方面提了供一种计算机可读存储介质,所述计算机可读存储介质中存储有 指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使 得计算机执行上述各方面所述的方法。
根据以上的实施例,在需要执行目标任务时,在服务器集群中选择一个目标服务器,由 目标服务器调度执行目标任务的客户端,服务器集群中除目标服务器之外的其他服务器监听 目标服务器的任务调度结果,在调度失败的情况下,竞争目标任务,重新调度执行该任务的 客户端,本申请能在调度失败的情况下重新进行调度,能提高任务执行的可靠性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术 描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一 些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些 附图获得其他的附图。
图1是本申请实施例提供的一种系统架构图;
图2是本申请实施例提供的API调用的原理示意图;
图3是本申请实施例提供的API调用方法的流程示意图;
图4是本申请实施例提供的API调用方法的另一流程示意图;
图5-图6是本申请实施例提供的API调用的原理示意图;
图7是本申请实施例提供的一种装置的结构示意图;
图8是本申请提供的一种装置的另一结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申 请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用 于限定本申请。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不 能理解为指示或暗示相对重要性。本领域的技术人员应当清楚,在没有这些具体细节的其它 实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法 的详细说明,以免不必要的细节妨碍本申请的描述。
图1示出了可以应用于本申请的API调用方法或API调用装置的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、终端设备102、终端设备103、网络104和服务器105。网络104用于在终端设备101~103之间提供通信链路的介质。网络104 可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真(WIreless-FIdelity,Wi-Fi)通信 链路或微波通信链路等。
用户可以使用终端101~103通过网络104与服务器105交互,以接收来自服务器105的 消息或向服务器105发送消息。终端设备101~103上可以安装有各种通信客户端应用,例如: 视频录制应用、视频播放应用、语音交互应用、搜索类应用、及时通信工具、邮箱客户端、 社交平台软件等。
终端设备101~103可以是硬件,也可以是软件。当终端设备101~103为硬件时,可以是 具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台 式计算机等等。当终端设备101~103为软件时,可以是安装上上述所列举的电子设备中。其 可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软 件模块,在此不作具体限定。
当终端设备101~103为硬件时,其上还可以安装有显示设备,显示可以是各种能实现显 示功能的设备,例如:阴极射线管显示器(Cathode ray tubedisplay,简称CR)、发光二极管 显示器(Light-emitting diode display,简称LED)、电子墨水屏、液晶显示屏(Liquid crystal display,简称LCD)、等离子显示面板(Plasma displaypanel,简称PDP)等。用户可以利用 终端设备101~103上的显示设备,来查看显示的文字、图片、视频等信息。
需要说明的是,本申请实施例提供的API调用方法一般由服务器执行,相应的,API调 用装置一般设置于服务器中。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以 实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软 件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件 或软件模块,在此不做具体限定。
应理解,图1中的终端设备、网络和服务器的数目仅是示意性的。根据实现需要,可以 是任意数量的终端设备、网络和服务器。
其中,服务器105中部署有多种类型的服务,每种类型的服务关联有一个或多个版本的 服务实例,多种类型的服务可能部署在同一个服务器上,也可能部署在不同的服务器上;同 一个服务下关联的多个服务实例可能部署在同一个服务实例上,也可能部署在不同的服务实 例上,本申请不作限制。服务实例表示执行该服务的功能的软件环境和硬件环境。终端设备 可以向服务器105发送API调用请求,请求调用服务器中的一个或多个服务来完成指定的功 能,服务器执行该API调用请求后向终端设备发送服务调用响应。
例如:参见图2所示,节点A不是有服务A1、服务A2和服务A3,节点B部署有服务 B1、服务B2和服务B3,节点C部署有服务C1、服务C2和服务C3,发起者向节点A发送 API调用请求,API调用请求用于调用服务A1,节点A判断服务A1是否为可用状态,若服 务A1为不可用状态,节点A1向调用者发送调用失败消息,节点A接收到调用失败消息会 重新向节点A发送API调用请求;若服务A1为可用状态,节点A确定服务A1需要调用服 务B2才能完成,节点A1判断服务B2是否为可用状态,若服务B2为不可用状态,节点A 会向调用者发送调用失败消息,节点A接收到调用失败消息后,会重新向节点A发送API 调用请求;若服务B2为可用状态,节点A会向服务B2所在的节点B发送API调用请求, 节点B确定服务B2需要依赖服务C1才能完成,节点B判断服务C1是否为可用状态;若服 务C1为不可用状态,服务B通过节点A向调用者返回调用失败消息,调用者接收到调用失 败消息后,重新向节点A发送API调用请求;若服务C1为可用状态,节点C判断服务C1 不需要依赖其他服务就能执行,节点C1执行服务C1,然后节点C向发起者返回调用成功消 息。从以上的API调用的过程可以看出:API调用失败时处理过程繁琐造成的处理时延和开 销大的问题。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
参见图3,图2是本申请实施例提供的API调用方法的流程示意图,在本申请实施例中, 所述方法包括:
S301、接收第一API调用请求。
其中,API调用请求的发起者可以是一个服务,也可以是一个应用程序。第一API调用 请求携带第一服务的参数,第一API调用请求用于调用第一服务,第一服务的参数包括第一 服务的标识、调用时间、资源使用量、传入参数值中的一种或多种。
在本申请实施例中,节点上部署一个或多个服务,节点通过API对外提供服务,节点又 可成为服务器或服务设备。第一服务所在的节点接收第一API调用请求,在第一API调用请 求的发起者为服务时,该服务和第一服务可能部署在相同的节点上,也可能部署在不同的节 点上。
其中,第一API调用请求的消息类型可以为HTTP请求,第一API调用请求包括请求头 和消息体,请求头的数量可以是多个,不同的请求头具有不同的身份标识,可以根据需要在 API调用请求中自定义请求头。
S302、响应于第一API调用请求向第一API调用请求的发起者返回调用成功消息。
其中,第一服务所在的节点接收到第一API调用请求后,不需要等到成功调用第一服务, 直接向第一API调用请求的发起者返回调用成功消息,调用成功消息表示第一API调用请求 成功被执行。这样在第一API调用的发起者看来,第一API调用请求能快速的被响应,如果 第一API调用请求的发起者依赖调用成功消息执行相关操作的情况下,能减少发起者执行相 关操作的时延。
例如:第一API调用请求用于A账户向B账户转账X元,第一服务所在的节点不需要等到A账户扣除X元,B账户增加X元的操作执行完毕,直接向第一API调用请求的发起 者返回转账成功的消息。
S303、在第一服务需要调用第二服务时,生成第二API调用请求。
其中,执行第一服务可能需要依赖其他服务(即第二服务)才能完成,也可能不需要依 赖其他服务就能完成。第一服务所在的节点可以根据第一服务预存储或预配置的属性信息确 定第一服务是否需要调用第二服务,若为是,第一服务所在的节点生成第二API调用请求, 第二API调用请求携带第二服务的参数,第二API调用请求用于调用第二服务,第二服务的 参数包括但不限于第二服务的标识、调用时间、资源使用量和传入参数值。
在一个或多个实施例中,第一服务所在的节点与存储或预配置有本次调用的调用链信息, 调用链信息表示本次调用的多个服务的调用顺序,第一服务所在的节点可以根据调用链信息 确定第一服务的下一服务,第一服务的下一服务即为第二服务。
例如:第一服务为服务A1,本次调用的调用链为服务A1→服务B1→服务C1,服务A1所在的节点接收第一API调用请求,第一API调用请求用于调用服务A1,服务A1所在的节 点根据调用链确定服务A1需要调用服务B1,服务A1所在的节点向第一API调用请求的发 起者返回表示成功调用服务A1的调用成功消息,服务A1所在的节点生成第二API调用请求, 第二API调用请求用于调用服务B1。
在一个或多个实施例中,在第一服务不需要依赖其他服务执行时,即第一服务不需要调 用第二服务时,第一服务所在的节点直接执行第一服务。
S304、检测第二服务的状态。
其中,第二服务的状态包括可用状态和不可用状态,可用状态表示第二服务可用正常对 外提供服务,不可用状态表示第二服务无法正常对外提供服务。第二服务为不可用状态的原 因可能是第二服务所在的服务器发生硬件故障,也可能是第二服务的负荷过大。第一服务所 在的节点可以周期性的检测第二服务的状态,检测的周期可以根据实际需求来定,本申请实 施例不作限制。
在一个或多个实施例中,检测第二服务的状态包括:
获取第二服务上的API调用请求数,在所述API调用请求数大于预设数量时,确定所述 第二服务为不可用状态;在所述API调用请求数小于或等于预设数量时,确定所述第二服务 为可用状态。
在一个或多个实施例中,检测第二服务的状态包括:
获取所述第二服务上的空闲资源量,在所述空闲资源量小于所述第二API调用请求所需 的资源量时,确定所述第二服务为不可用状态;在所述空闲资源量大于或等于第二API调用 请求所需的资源量时,确定所述第二服务为可用状态。
在一个或多个实施例中,所述第一服务和所述第二服务之间建立有安全传输通道,所述 第二API调用请求通过所述安全传输通道传输。
例如:安全传输通道中的数据经过加密后进行传输,例如:安全传输通道中的发送者利 用公钥对数据进行加密然后传输给接收者。
S305、在第二服务为不可用状态时,存储第二API调用请求,在检测到第二服务恢复为 可用状态时,将第二API调用请求发送给第二服务所在的节点。
其中,第一服务所在的节点在检测到第二服务为不可用状态时,捕获第二API调用请求, 存储第二API调用请求,在检测到第二服务恢复为可用状态时,将第二API调用请求发送给 第二服务所在的节点,第一服务所在的节点根据预存储或预配置的映射关系,映射关系表示 服务和节点之间的映射关系。
实施本申请实施例,接收用于用于第一服务的API调用请求时,直接返回表示第一服务 调用成功的调用成功消息,不需要等到完成第一服务的或第一服务依赖的其他服务执行完毕, 对于调用者来说能及时响应API调用请求,减少API调用的时延。同时,在第一服务需要调 用第二服务时,生成调用第二服务的API调用请求,在第二服务不可用时,将调用第二服务 的API调用服务进行存储,检测到第二服务可用时,再重发该API调用请求,不需要由发起 者重发API调用请求,减少API调用请求经过的节点数量,降低API调用失败处理的复杂度 和减少API调用请求的传输时延。
参见图4,为本申请实施例提供的一种API调用方法的另一流程示意图,在本申请实施 例中,所述方法包括:
S401、接收第一API调用请求。
其中,API调用请求的发起者可用是一个服务,也可是一个应用程序。第一API调用请 求携带第一服务的参数,第一服务的参数包括第一服务的标识、调用时间、资源使用量、传 入参数值中的一种或多种。第一API调用请求用于调用第一服务。
例如:应用程序A发送第一API调用请求,第一API调用节点1上的服务A,第一API调用请求携带服务A的标识、服务A的调用时间、服务A的资源使用量、传输参数值。
其中,节点上部署一个或多个服务,节点通过API向外提供服务,节点又可称为服务器 或服务设备,在第一API调用请求的发起者为服务时,该服务和第一服务可以位于相同的节 点,也可以位于不同的节点。
S402、对第一API调用请求进行鉴权的鉴权结果为通过。
其中,第一服务所在的节点对第一API调用请求进行鉴权,鉴权用于判断第一API调用 请求的发起者的身份是否合法,例如:第一API调用请求的请求头中携带数字签名,第一服 务所在的节点基于预设的消息摘要算法对第一API调用请求的消息体进行运算得到第一摘 要,然后第一服务所在的节点基于预存储后与配置的公钥对数字签名进行解密得到第二摘要, 第一服务所在的节点判断第一摘要和第二摘要是否相同,若相同,则确定对第一API调用请 求的进行鉴权的鉴权结果为通过;若不相同,则确定对第一API调用请求进行鉴权的鉴权结 果为不通过。
S403、响应于第一API调用请求向第一API调用请求的发起者返回调用成功消息。
其中,第一服务所在的节点接收到第一API调用请求后,不需要等到成功调用第一服务, 直接向第一API调用请求的发起者返回调用成功消息,这样第一API调用请求能够被快速响 应,如果第一API调用请求的发起者需要依赖调用成功消息执行相关操作的情况下,能减少 发起者的执行相关操作的时延。
例如:第一API调用请求用于购买商品,第一服务所在的节点不需要等到成功执行购买 商品的操作后,直接向第一API调用请求的发起者返回购买成功响应,用户只需要等待收货 即可。
S404、判断第一服务是否需要调用第二服务。
其中,执行第一服务可能需要依赖其他服务(即第二服务)才能完成,也可能不需要依 赖其他服务就能完成。第一服务所在的节点可以根据预存储或预配置的属性信息确定第一服 务是否需要调用第二服务,若为是,第一服务所在的节点生成第二API调用请求,第二API 调用请求携带第二服务的参数,第二API调用请求用于调用第二服务,第二服务的参数包括 但不限于第二服务的标识、调用时间、资源使用量和传输参数值中的一种或多种。
在一个或多个实施例中,第一服务所在的节点与存储或预配置有本次调用的调用链信息, 调用链信息表示本次调用的多个服务的调用顺序,第一服务所在的节点可以根据调用链信息 确定第一服务的下一服务,第一服务的下一服务即为第二服务。
例如:第一服务为服务A1,本次调用的调用链为服务A1→服务B1→服务C1,服务A1所在的节点接收第一API调用请求,第一API调用请求用于调用服务A1,服务A1所在的节 点根据调用链确定服务A1需要调用服务B1,服务A1所在的节点向第一API调用请求的发 起者返回表示成功调用服务A1的调用成功消息,服务A1所在的节点生成第二API调用请求, 第二API调用请求用于调用服务B1。
S405、指示第一服务处理第一API调用请求。
其中,在第一服务不需要依赖其他服务执行时,即第一服务不需要调用第二服务时,第 一服务所在的节点直接执行第一服务。
S406、生成第二API调用请求。
其中,第二API调用请求用户调用第二服务,第二API调用请求携带第二服务的参数。
S407、检测第二服务的状态。
其中,第二服务的状态包括可用状态和不可用状态,可用状态表示第二服务可用正常对 外提供服务,不可用状态表示第二服务无法正常对外提供服务。第二服务为不可用状态的原 因可能是第二服务所在的服务器发生硬件故障,也可能是第二服务的负荷过大。第一服务所 在的节点可以周期性的检测第二服务的状态,检测的周期可以根据实际需求来定,本申请实 施例不作限制。
在一个或多个实施例中,检测第二服务的状态包括:
获取第二服务上的API调用请求数,在所述API调用请求数大于预设数量时,确定所述 第二服务为不可用状态;在所述API调用请求数小于或等于预设数量时,确定所述第二服务 为可用状态。
在一个或多个实施例中,检测第二服务的状态包括:
获取所述第二服务上的空闲资源量,在所述空闲资源量小于所述第二API调用请求所需 的资源量时,确定所述第二服务为不可用状态;在所述空闲资源量大于或等于第二API调用 请求所需的资源量时,确定所述第二服务为可用状态。
S408、判断第二服务是为不可用状态。
S409、检测第二服务所在的节点集群中各个节点的负荷。
其中,第二服务分布式部署在节点集群中,节点集群包括多个节点,第一服务所在的节 点监测节点集群中各个节点的负荷,负荷包括吞吐率、节点带宽、时延中的一种或多种。
S410、将第二API调用请求发送给负荷最轻的节点。
其中,第二服务所在的节点将第二API调用请求发送给节点集群中符合最轻的节点。
S411、存储第二API调用请求。
其中,在第二服务为不可用状态时,存储第二API调用请求,然后继续检测第二服务的 状态,一旦检测到第二服务的状态恢复为可用状态,向第二服务所在的节点发送第二API调 用请求。
实施本申请实施例,接收用于用于第一服务的API调用请求时,直接返回表示第一服务 调用成功的调用成功消息,不需要等到完成第一服务的或第一服务依赖的其他服务执行完毕, 对于调用者来说能及时响应API调用请求,减少API调用的时延。同时,在第一服务需要调 用第二服务时,生成调用第二服务的API调用请求,在第二服务不可用时,将调用第二服务 的API调用服务进行存储,检测到第二服务可用时,再重发该API调用请求,不需要由发起 者重发API调用请求,减少API调用请求经过的节点数量,降低API调用失败处理的复杂度 和减少API调用请求的传输时延。
下面就两个具体的实施例对本申请的API调用方法的过程进行详细说明。
参见图5所示,节点1上部署有服务A1、服务A2和服务A3,节点2上部署有服务B1、服务B2和服务B3。API调用方法包如下步骤:
步骤1:发起者向节点1上的服务A1发送API调用请求1,API调用请求1用于调用服务A1,节点1接收来自发起者的API调用请求1。
步骤2:节点1响应于API调用请求1向发起者返回调用成功消息2,调用成功消息2用于表示成功调用服务A1。
步骤3:节点1确定执行服务A1需要调用服务B2,节点1首先执行调用本地资源执行部分功能。
步骤4:节点2确定服务B2位于节点2,节点1生成API调用请求2,节点1向节点2 发送API调用请求2,API调用请求2用于调用服务2,节点2接收来自节点2的API调用请 求2。
步骤5:节点2确定服务B2需要依赖服务C3才能完成相应的功能,节点2生成API调用请求3,API调用请求3用于调用服务C3,节点2确定服务C3位于节点3上,节点2向 节点3发送API调用请求3。
又例如:参见图6所示,节点1上部署有服务A1、服务A2和服务A3,节点2上部署 有服务B1、服务B2和服务B3。API调用方法包如下步骤:
步骤1:发起者向节点1上的服务A1发送API调用请求1,API调用请求1用于调用服务A1,节点1接收来自发起者的API调用请求1。
步骤2:节点1响应于API调用请求1向发起者返回调用成功消息2,调用成功消息2用于表示成功调用服务A1。
步骤3:节点1确定执行服务A1不需要依赖其他服务就能执行,节点1首先执行服务A1。
实施本申请实施例,接收用于用于第一服务的API调用请求时,直接返回表示第一服务 调用成功的调用成功消息,不需要等到完成第一服务的或第一服务依赖的其他服务执行完毕, 对于调用者来说能及时响应API调用请求,减少API调用的时延。同时,在第一服务需要调 用第二服务时,生成调用第二服务的API调用请求,在第二服务不可用时,将调用第二服务 的API调用服务进行存储,检测到第二服务可用时,再重发该API调用请求,不需要由发起 者重发API调用请求,减少API调用请求经过的节点数量,降低API调用失败处理的复杂度 和减少API调用请求的传输时延。
上述图2至图6详细阐述了API调用方法。相应的本申请实施例的一种装置的结构示意 图。
请参见图7,图7是本申请实施例提供的一种装置7的结构示意图,该装置7可以包括 收发单元701、处理单元702和存储单元703。
收发单元701,用于接收第一API调用请求;其中,所述第一API调用请求携带第一服 务的参数,所述第一API调用请求用于调用所述第一服务;
所述收发单元701,还用于响应于所述第一API调用请求向所述第一API调用请求的发 起者返回调用成功消息;
处理单元702,用于在所述第一服务需要调用第二服务时,生成第二API调用请求;其 中,所述第二API调用请求携带所述第二服务的参数,所述第二API调用请求用于调用所述 第二服务;
所述处理单元702,还用于检测所述第二服务的状态;
所述处理单元702,还用于在所述第二服务为不可用状态时,指示所述存储单元703存 储所述第二API调用请求,在检测到所述第二服务恢复到可用状态时,指示所述收发单元将 所述第二API调用请求发送给所述第二服务所在的节点。
在一个或多个实施例中,所述第二服务所在的节点包括由多个节点组成的节点集群;
其中,处理单元702用于所述将所述第二API调用请求发送给所述第二服务所在的节点, 包括:
监测所述节点集群中各个节点的负荷;
指示收发单元701将所述第二API调用请求发送给所述节点集群中负荷最轻的节点。
在一个或多个实施例中,处理单元702用于所述检测第二服务的状态包括:
获取所述第二服务上的API调用请求数;
若所述API调用请求数大于预设数量,则确定所述第二服务为不可用状态;
若所述API调用请求数小于或等于所述预设数量,则确定所述第二服务为可用状态。
在一个或多个实施例中,所述第二服务的参数包括资源使用量;其中,处理单元702用 于所述检测所述第二服务的状态包括:
获取所述第二服务的空闲资源量;
若所述资源使用量大于所述空闲资源量,则确定所述第二服务为不可用状态;
若所述资源使用量小于或等于所述空闲资源量,则确定所述第二服务为可用状态。
在一个或多个实施例中,处理单元702还用于:
在所述第一服务不需要调用第二服务时,执行所述第一服务。
在一个或多个实施例中,所述第一服务和所述第二服务之间建立有安全传输通道,所述 第二API调用请求通过所述安全传输通道传输。
在一个或多个实施例中,处理单元702还用于:对第一API调用请求中携带的数字签名 进行鉴权,鉴权结果为通过。
本申请实施例和图3和图4的方法实施例基于同一构思,其带来的技术效果也相同,具 体过程可参照图3和图4的方法实施例的描述,此处不再赘述。
装置7可以是服务器或节点,所述装置7也可以为实现相关功能的现场可编程门阵列 (field-programmable gate array,FPGA),专用集成芯片,系统芯片(system on chip,SoC), 中央处理器(central processor unit,CPU),网络处理器(network processor,NP),数字信号 处理电路,微控制器(micro controller unit,MCU),还可以采用可编程控制器(programmable logic device,PLD)或其他集成芯片。
图8为本申请实施例提供的一种装置结构示意图,以下简称装置8,装置8可以集成服 务器或节点中,如图8所示,该装置8包括:存储器802、处理器801和收发器803。
存储器802可以是独立的物理单元,与处理器801和收发器803可以通过总线连接。存 储器802、处理器801、收发器803也可以集成在一起,通过硬件实现等。
存储器802用于存储实现以上方法实施例,或者装置实施例各个模块的程序,处理器801 调用该程序,执行以上方法实施例的操作。
可选的,装置8还包括输入装置和输出装置,输入装置包括但不限于键盘、鼠标、触摸 面板、摄像头和麦克风;输出装置包括但限于显示屏。
通信接口用于收发各种类型的消息,通信接口包括但不限于无线接口或有线接口。
可选地,当上述实施例的API调用方法中的部分或全部通过软件实现时,装置也可以只 包括处理器。用于存储程序的存储器位于装置之外,处理器通过电路/电线与存储器连接,用 于读取并执行存储器中存储的程序。
处理器可以是中央处理器(central processing unit,CPU),网络处理器(networkprocessor, NP)或者CPU和NP的组合。
处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device, PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device, CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器可以包括易失性存储器(volatile memory),例如存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储 器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-statedrive,SSD);存 储器还可以包括上述种类的存储器的组合。
本申请实施例还提供了一种计算机存储介质,存储有计算机程序,该计算机程序用于执 行上述实施例提供的API调用方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得 计算机执行上述实施例提供的API调用方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。 因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的 形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储 介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形 式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/ 或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/ 或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令 到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个 机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程 图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工 作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制 造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指 定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或 其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编 程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多 个方框中指定的功能的步骤。
Claims (10)
1.一种API调用方法,其特征在于,包括:
接收第一API调用请求;其中,所述第一API调用请求携带第一服务的参数,所述第一API调用请求用于调用所述第一服务;
响应于所述第一API调用请求向所述第一API调用请求的发起者返回调用成功消息;
在所述第一服务需要调用第二服务时,生成第二API调用请求;其中,所述第二API调用请求携带所述第二服务的参数,所述第二API调用请求用于调用所述第二服务;
检测所述第二服务的状态;
在所述第二服务为不可用状态时,存储所述第二API调用请求,在检测到所述第二服务恢复到可用状态时,将所述第二API调用请求发送给所述第二服务所在的节点。
2.根据权利要求1所述的方法,其特征在于,所述第二服务所在的节点包括由多个节点组成的节点集群;
其中,所述将所述第二API调用请求发送给所述第二服务所在的节点,包括:
监测所述节点集群中各个节点的负荷;
将所述第二API调用请求发送给所述节点集群中负荷最轻的节点。
3.根据权利要求1或2所述的方法,其特征在于,所述检测第二服务的状态包括:
获取所述第二服务上的API调用请求数;
若所述API调用请求数大于预设数量,则确定所述第二服务为不可用状态;
若所述API调用请求数小于或等于所述预设数量,则确定所述第二服务为可用状态。
4.根据权利要求1或2所述的方法,其特征在于,所述第二服务的参数包括资源使用量;其中,所述检测所述第二服务的状态包括:
获取所述第二服务的空闲资源量;
若所述资源使用量大于所述空闲资源量,则确定所述第二服务为不可用状态;
若所述资源使用量小于或等于所述空闲资源量,则确定所述第二服务为可用状态。
5.根据权利要求1所述的方法,其特征在于,还包括:
在所述第一服务不需要调用第二服务时,执行所述第一服务。
6.根据权利要求5所述的方法,其特征在于,所述第一服务和所述第二服务之间建立有安全传输通道,所述第二API调用请求通过所述安全传输通道传输。
7.根据权利要求5或6所述的方法,其特征在于,所述响应于所述第一API调用请求向所述第一API调用请求的发起者返回调用成功消息之前,还包括:
对第一API调用请求中携带的数字签名进行鉴权,鉴权结果为通过。
8.一种API调用装置,其特征在于,包括:收发单元、处理单元和存储单元;
收发单元,用于接收第一API调用请求;其中,所述第一API调用请求携带第一服务的参数,所述第一API调用请求用于调用所述第一服务;
所述收发单元,还用于响应于所述第一API调用请求向所述第一API调用请求的发起者返回调用成功消息;
处理单元,用于在所述第一服务需要调用第二服务时,生成第二API调用请求;其中,所述第二API调用请求携带所述第二服务的参数,所述第二API调用请求用于调用所述第二服务;
所述处理单元,还用于检测所述第二服务的状态;
所述处理单元,还用于在所述第二服务为不可用状态时,指示所述存储单元存储所述第二API调用请求,在检测到所述第二服务恢复到可用状态时,指示所述收发单元将所述第二API调用请求发送给所述第二服务所在的节点。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的方法步骤。
10.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~7任意一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911047673.1A CN110995780A (zh) | 2019-10-30 | 2019-10-30 | Api调用方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911047673.1A CN110995780A (zh) | 2019-10-30 | 2019-10-30 | Api调用方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110995780A true CN110995780A (zh) | 2020-04-10 |
Family
ID=70082784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911047673.1A Pending CN110995780A (zh) | 2019-10-30 | 2019-10-30 | Api调用方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995780A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726923A (zh) * | 2022-05-07 | 2022-07-08 | 中国工商银行股份有限公司 | 服务调用方法及相关装置 |
CN115277847A (zh) * | 2022-07-27 | 2022-11-01 | 阿里巴巴(中国)有限公司 | 服务处理方法、装置、设备、平台、介质及程序产品 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917077A (zh) * | 2012-11-20 | 2013-02-06 | 无锡城市云计算中心有限公司 | 云计算系统中的资源分配方法 |
CN103888435A (zh) * | 2012-12-24 | 2014-06-25 | 中国电信股份有限公司 | 用于业务接纳控制的方法、装置和系统 |
CN105635083A (zh) * | 2014-11-14 | 2016-06-01 | 航天信息股份有限公司 | 基于服务器和客户端架构的业务处理方法及业务处理系统 |
CN106161511A (zh) * | 2015-03-31 | 2016-11-23 | 华为技术有限公司 | 业务请求处理方法、相关装置及系统 |
CN108038145A (zh) * | 2017-11-23 | 2018-05-15 | 携程旅游网络技术(上海)有限公司 | 分布式服务跟踪方法、系统、存储介质和电子设备 |
CN109412963A (zh) * | 2018-11-16 | 2019-03-01 | 电子科技大学 | 一种基于流拆分的服务功能链部署方法 |
CN109428753A (zh) * | 2017-08-29 | 2019-03-05 | 西门子公司 | 计量指标获取方法、服务调用记录获取方法及装置 |
CN109976921A (zh) * | 2019-02-25 | 2019-07-05 | 青岛迅隆信息科技有限责任公司 | Rpc服务或消息的指定消费方法及装置、可存储介质和终端 |
CN109976935A (zh) * | 2019-03-14 | 2019-07-05 | 北京三快在线科技有限公司 | 微服务架构、微服务节点及其熔断恢复方法、装置 |
CN109995817A (zh) * | 2017-12-29 | 2019-07-09 | 中移信息技术有限公司 | 一种服务调度方法及装置 |
CN110166507A (zh) * | 2018-02-12 | 2019-08-23 | 北京京东尚科信息技术有限公司 | 多资源调度方法和装置 |
CN110336865A (zh) * | 2019-06-21 | 2019-10-15 | 北京大米科技有限公司 | 服务调用方法、装置、存储介质和电子设备 |
CN110351366A (zh) * | 2019-07-12 | 2019-10-18 | 西安雷迪信息技术有限公司 | 一种互联网应用的服务调度方法、系统及计算机可读存储介质 |
CN110365752A (zh) * | 2019-06-27 | 2019-10-22 | 北京大米科技有限公司 | 业务数据的处理方法、装置、电子设备和存储介质 |
CN111371603A (zh) * | 2020-02-27 | 2020-07-03 | 长沙市源本信息科技有限公司 | 应用于边缘计算的服务实例部署方法和装置 |
-
2019
- 2019-10-30 CN CN201911047673.1A patent/CN110995780A/zh active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917077A (zh) * | 2012-11-20 | 2013-02-06 | 无锡城市云计算中心有限公司 | 云计算系统中的资源分配方法 |
CN103888435A (zh) * | 2012-12-24 | 2014-06-25 | 中国电信股份有限公司 | 用于业务接纳控制的方法、装置和系统 |
CN105635083A (zh) * | 2014-11-14 | 2016-06-01 | 航天信息股份有限公司 | 基于服务器和客户端架构的业务处理方法及业务处理系统 |
CN106161511A (zh) * | 2015-03-31 | 2016-11-23 | 华为技术有限公司 | 业务请求处理方法、相关装置及系统 |
US20180013822A1 (en) * | 2015-03-31 | 2018-01-11 | Huawei Technologies Co., Ltd. | Service request processing method, related apparatus, and system |
CN109428753A (zh) * | 2017-08-29 | 2019-03-05 | 西门子公司 | 计量指标获取方法、服务调用记录获取方法及装置 |
CN108038145A (zh) * | 2017-11-23 | 2018-05-15 | 携程旅游网络技术(上海)有限公司 | 分布式服务跟踪方法、系统、存储介质和电子设备 |
CN109995817A (zh) * | 2017-12-29 | 2019-07-09 | 中移信息技术有限公司 | 一种服务调度方法及装置 |
CN110166507A (zh) * | 2018-02-12 | 2019-08-23 | 北京京东尚科信息技术有限公司 | 多资源调度方法和装置 |
CN109412963A (zh) * | 2018-11-16 | 2019-03-01 | 电子科技大学 | 一种基于流拆分的服务功能链部署方法 |
CN109976921A (zh) * | 2019-02-25 | 2019-07-05 | 青岛迅隆信息科技有限责任公司 | Rpc服务或消息的指定消费方法及装置、可存储介质和终端 |
CN109976935A (zh) * | 2019-03-14 | 2019-07-05 | 北京三快在线科技有限公司 | 微服务架构、微服务节点及其熔断恢复方法、装置 |
CN110336865A (zh) * | 2019-06-21 | 2019-10-15 | 北京大米科技有限公司 | 服务调用方法、装置、存储介质和电子设备 |
CN110365752A (zh) * | 2019-06-27 | 2019-10-22 | 北京大米科技有限公司 | 业务数据的处理方法、装置、电子设备和存储介质 |
CN110351366A (zh) * | 2019-07-12 | 2019-10-18 | 西安雷迪信息技术有限公司 | 一种互联网应用的服务调度方法、系统及计算机可读存储介质 |
CN111371603A (zh) * | 2020-02-27 | 2020-07-03 | 长沙市源本信息科技有限公司 | 应用于边缘计算的服务实例部署方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726923A (zh) * | 2022-05-07 | 2022-07-08 | 中国工商银行股份有限公司 | 服务调用方法及相关装置 |
CN115277847A (zh) * | 2022-07-27 | 2022-11-01 | 阿里巴巴(中国)有限公司 | 服务处理方法、装置、设备、平台、介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110365752B (zh) | 业务数据的处理方法、装置、电子设备和存储介质 | |
CN109905312B (zh) | 消息推送方法、装置及系统 | |
CN104348697B (zh) | 视频通讯信息的处理方法、装置及系统 | |
CN110377440B (zh) | 信息处理方法和装置 | |
CN112989325A (zh) | 服务调用方法、装置、存储介质和电子设备 | |
CN115951923B (zh) | 订阅事件管理方法、显示系统、设备和存储介质 | |
CN112615753A (zh) | 一种链路异常追踪方法、第一节点、第二节点以及链路 | |
CN114338793A (zh) | 消息推送方法、装置、电子设备及可读存储介质 | |
CN105468513A (zh) | 一种基于移动终端的测试方法、装置及系统 | |
CN110995780A (zh) | Api调用方法、装置、存储介质及电子设备 | |
CN112346751A (zh) | 应用程序的安装方法、装置、电子设备和存储介质 | |
CN114048441A (zh) | 登录用户的控制方法、装置、存储介质和终端设备 | |
CN110597920A (zh) | 一种信息处理的方法及装置 | |
CN112152879B (zh) | 网络质量确定方法、装置、电子设备和可读存储介质 | |
CN111787048B (zh) | 一种终端设备的连接方法、调度服务器及物联网系统 | |
CN110673970B (zh) | 一种基于web应用的跨进程调用系统及方法 | |
CN106385516A (zh) | 一种设置业务转移的方法、装置及终端 | |
CN111200653A (zh) | 多平台通讯方法、多平台通讯装置及中间服务器 | |
CN113726883B (zh) | 云数据处理方法、相关装置及计算机程序产品 | |
CN108289165B (zh) | 一种基于手机控制相机的实现方法、装置及终端设备 | |
CN106488537B (zh) | 一种发送方法、装置及移动终端 | |
CN112395204B (zh) | 用于获取测试覆盖率的方法、系统、相关装置和介质 | |
CN115695497A (zh) | 诊断数据远程传输方法、装置、电子设备及介质 | |
CN113079085B (zh) | 商服交互方法、装置、设备及存储介质 | |
CN112860770B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200410 |