CN113590236B - 一种服务器及微服务声明式接口超时配置方法 - Google Patents

一种服务器及微服务声明式接口超时配置方法 Download PDF

Info

Publication number
CN113590236B
CN113590236B CN202110885801.0A CN202110885801A CN113590236B CN 113590236 B CN113590236 B CN 113590236B CN 202110885801 A CN202110885801 A CN 202110885801A CN 113590236 B CN113590236 B CN 113590236B
Authority
CN
China
Prior art keywords
interface
timeout
service
client
micro
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110885801.0A
Other languages
English (en)
Other versions
CN113590236A (zh
Inventor
张纪宽
刘先攀
胡晓峰
胡新静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juhaokan Technology Co Ltd
Original Assignee
Juhaokan Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juhaokan Technology Co Ltd filed Critical Juhaokan Technology Co Ltd
Priority to CN202110885801.0A priority Critical patent/CN113590236B/zh
Publication of CN113590236A publication Critical patent/CN113590236A/zh
Application granted granted Critical
Publication of CN113590236B publication Critical patent/CN113590236B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请提供一种服务器及微服务声明式接口超时配置方法,所述方法可以在客户端输入用于调用目标接口的控制指令后,通过检测目标接口的注解参数,获取客户端为基于微服务框架为该目标接口设置的超时策略,从而按照超时策略应用目标接口。所述方法可以通过对目标接口添加注解的方式配置超时策略,实现基于单个维度的接口超时策略,使不同的目标接口可以配置不同的超时策略,满足微服务中特殊接口的需求,解决传统声明式接口超时配置影响其他接口稳定性的问题。

Description

一种服务器及微服务声明式接口超时配置方法
技术领域
本申请涉及云数据平台技术领域,尤其涉及一种服务器及微服务声明式接口超时配置方法。
背景技术
微服务是一种云原生架构方法,用于将单个应用程序由许多松散耦合且可独立部署的组件或服务组成,实现应用程序对应的功能。多个组件或服务可以通过特定的接口相互调用运行,实现数据计算和传递。
例如,基于Spring cloud微服务间的接口相互调用通常有两个方案,即表述性状态传递模板(Representational State Transfer Template,RestTemplate)和Feign客户端。其中,RestTemplate是Spring cloud支持的一个超文本传输协议(Hyper TextTransfer Protocol,HTTP)请求工具,可通过提供REST请求方案模板,实现在使用时可以不用关心HTTP的基本方法实现,但是仍然需要拼装统一资源定位器(Uniform ResourceLocator,URL)和参数。Feign相比RestTemplate更加便利,调用方只需要实现Feign客户机(FeignClient)的声明式接口,而微服务启动时会把接口加载为对象实例(Bean)直接调用。
微服务间的接口可以被配置超时策略,如连接超时时间、请求超时时间和超时重试次数等。超时策略可以基于整个微服务实例维度设置,即统一为所有接口设置相同的超时策略。但是由于接口调用要求不同,如果要设置Feign的超时策略,是基于整个微服务实例维度的,有时因一个接口有特殊要求就要改整个实例上的接口超时策略,会影响到其他接口的稳定性。
发明内容
本申请提供了一种服务器及微服务声明式接口超时配置方法,以解决传统声明式接口超时配置影响其他接口稳定性的问题。
一方面,本申请提供一种服务器,包括:存储器、通信器和控制器。其中,所述存储器被配置为存储微服务框架应用;所述通信器被配置为与客户端建立通信连接;所述控制器被配置为执行以下程序步骤:
获取客户端输入的用于调用目标接口的控制指令,所述目标接口为声明式接口;
响应于所述控制指令,检测所述目标接口的注解参数,所述注解参数包括通过微服务框架针对每个所述目标接口配置的超时策略;
根据所述注解参数,为所述目标接口应用所述超时策略。
另一方面,本申请还提供一种微服务声明式接口超时配置方法,应用于上述服务器,所述服务器内置微服务框架应用,并与客户端建立通信连接;所述微服务声明式接口超时配置方法包括以下步骤:
获取客户端输入的用于调用目标接口的控制指令,所述目标接口为声明式接口;
响应于所述控制指令,检测所述目标接口的注解参数,所述注解参数包括通过微服务框架针对每个所述目标接口配置的超时策略;
根据所述注解参数,为所述目标接口应用所述超时策略。
由以上技术方案可知,本申请提供的服务器及微服务声明式接口超时配置方法可以在客户端输入用于调用目标接口的控制指令后,通过检测目标接口的注解参数,获取客户端为基于微服务框架为该目标接口设置的超时策略,从而按照超时策略应用目标接口。所述方法可以通过对目标接口添加注解的方式配置超时策略,实现基于单个维度的接口超时策略,使不同的目标接口可以配置不同的超时策略,满足微服务中特殊接口的需求,解决传统声明式接口超时配置影响其他接口稳定性的问题。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中服务器与客户端场景示意图;
图2为本申请实施例中微服务框架结构示意图;
图3为本申请实施例中服务器结构示意图;
图4为本申请实施例中服务接口连接状态示意图;
图5为本申请实施例中接口超时策略示意图;
图6为本申请实施例中微服务接口超时配置方法流程示意图;
图7为本申请实施例中根据注解参数应用超时策略流程示意图;
图8为本申请实施例中根据响应速度配置超时策略流程示意图;
图9为本申请实施例中根据微服务数量配置超时策略流程示意图;
图10为本申请实施例中判断接口类型流程示意图。
具体实施方式
为使本申请的目的和实施方式更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
术语“模块”是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。参见图1,为一种的结构示意图。
本申请实施例中,服务器100可以与客户端200构成微服务网络系统,如图1所示。即如图2所示,在服务器100中可以内置微服务框架和具体的组件或服务组成,以供客户端200在实现特定功能时调用。为此,服务器100可以由允许客户端200通过局域网(LAN)、无线局域网(WLAN)和其他网络进行通信连接。服务器400可以向客户端200提供各种内容和互动。服务器400可以是一个集群,也可以是多个集群,可以包括一类或多类服务器。
其中,客户端200是触发调用微服务的智能终端设备,包括但不限于通信终端、智能手机、智能电视、平板电脑、个人电脑(PC)、智能可穿戴设备、游戏设备等。在一些实施例中,客户端200可以基于实际需要创建微服务应用,并通过网络连接调用服务器100中的微服务组件。在客户端200运行微服务应用时,随着应用的运行,会产生应用数据。应用数据通过网络连接由一个或多个微服务组件进行处理,最终获得结果数据传递回客户端200,以在客户端200中实现所创建应用对应的功能。
为了实现上述微服务组件的调用功能,服务器100需要内置多种电气元件。在一些实施例中,为了存储微服务框架和微服务组件,服务器100中可以设置存储器110。存储器100可以包括只读存储器(Read-Only Memory,ROM)和随机存取存储器(Random AccessMemory,RAM)。其中,只读存储器可以用于存储微服务相关的控制程序和运算模型等与微服务相关的数据。随机存取存储器则用于在客户端200调用微服务组件时,将只读存储器中的被调用的微服务组件相关数据设置在运行内存中,以使服务器100可以运行该微服务组件。
如图3所示,在一些实施例中,为了使客户端200能够通过网络调用服务器100中的微服务组件,服务器100中还可以包括通信器120,通信器120用于与客户端200建立通信连接。通信器120可以根据各种通信协议类型与客户端200的通信装置建立通信连接关系。例如:通信器120可以包括Wifi模块、蓝牙模块、有线以太网模块等其他网络通信协议芯片或近场通信协议芯片,以及红外接收器中的至少一种。
需要说明的是,为了使客户端200与服务器100之间可以建立通信连接,在客户端200中也需要设置具有通信功能的模块。例如,客户端200中的通信装置也可以Wifi模块、蓝牙模块、有线以太网模块等其他网络通信协议芯片或近场通信协议芯片,以及红外接收器中的至少一种。显然,客户端200需要与服务器100需要同时内置至少一种相同的通信方式模块。例如,在客户端200和服务器100中可以均内置有线以太网模块,在创建微服务应用过程中,客户端200可以将创建的微服务应用数据通过有线以太网模块传输到网络线路,并经过网络线路传递给服务器100,服务器100再通过有线以太网模块从网络线路中接收应用数据。
在一些实施例中,为了使服务器100可以在接收到客户端200调用微服务组件的请求后,通过运行微服务组件执行对应用数据进行处理,服务器100中还可以设置有控制器130。所述控制器130可以包括中央处理器(Central Processing Unit,CPU)。所述CPU处理器用于执行存储在存储器中操作系统和应用程序指令,以及根据接收外部输入的各种交互指令,来执行各种应用程序、数据和内容,以便最终对应用数据执行各种形式的处理,生成反馈数据。CPU处理器还可以包括多个处理器。例如,控制器130可以包括一个主处理器以及一个或多个子处理器。
除上述存储器110、通信器120以及控制器130外,服务器100中还可以根据具体的微服务功能,包括其他部件。例如,视频处理器、音频处理器、图形处理器(GraphicsProcessing Unit,GPU)等。其中,视频处理器用于接收外部视频信号,并根据输入信号的标准编解码协议,进行解压缩、解码、缩放、降噪、帧率转换、分辨率转换、图像合成等视频处理,从而得到直接面向客户端200显示或播放的视频信号。图形处理器用于产生各种图形对象,如:图标、操作菜单以及用户输入指令显示图形等。通过接收客户端200输入各种交互指令进行运算,以根据显示属性显示各种对象;并基于得到的各种对象,进行渲染。音频处理器,则用于接收外部的音频信号,根据输入信号的标准编解码协议,进行解压缩和解码,以及降噪、数模转换和放大处理等处理,得到声音信号反馈给客户端200。
服务器100中内置的微服务架构可以按照具体的使用用途呈现为不同的形式。例如,服务器100中内置的微服务架构可以为spring cloud微服务架构。服务器100中内置的微服务组件可以通过特定的接口方式与微服务应用对接,使客户端200可以通过接口调用微服务组件。例如,spring cloud微服务架构中的组件可以依靠feign接口相互调用。Feign是一款声明式、模板化的HTTP客户端,spring cloud对其进行了增强。通过与负载均衡工具(如Ribbon)和开源框架(如Eureka)进行融合,从而使得Feign的使用更加方便。
在spring cloud微服务架构下,会根据不同维度把后端服务拆分为多个微服务,但是服务间可能有依赖关系,因此使用Feign可以快捷高效的进行服务间相互调用,并对要调用的其他微服务中的接口进行声明。微服务启动时会根据Feign注解对声明的接口进行对象实例(Bean)加载,以提高服务间调用过程的灵活。此外spring cloud融合的负载均衡和注册中心功能,还可以使feign在微服务中的使用更加便利。
但是,feign并未提供对不同接口配置不同超时策略的功能,因此无法满足微服务中特殊接口的需求,尤其是执行时间较久,不能重试等接口的超时策略需求。例如,如图4所示,Spring cloud基于Feign的接口调用过程,由两个提供(provider)服务和一个客户(consumer)服务组成。其中,两个provider服务分别提供了三个接口,即provider服务1提供接口A、接口B、接口C,provider服务2提供接口D、接口E、接口F。
Consumer服务需要远程调用这六个接口,则需要在Consumer服务中分别实现Feign的接口,使得在Consumer服务中直接调用Feign接口实现provider的远程调用。当微服务需要特殊接口时,如图5所示,如果provider服务1提供的三个接口响应很快,且为原子调用,不能连续重复调用;但是provider服务2提供的接口响应很慢,可以重复调用,这样基于Feign统一配置的超时策略方式就无法兼容这两种类型的接口,而如果通过对统一配置的超时策略进行调整,使接口的超时策略适应provider服务2提供的接口需求,则provider服务1提供的接口将无法满足,影响provider服务1对应接口的稳定性。
为了改善上述统一配置超时策略方式时无法满足特殊接口需求的问题,在本申请的部分实施例中提供一种微服务声明式接口超时配置方法,该配置方法可以应用于服务器100,使服务器100可以通过接口的注解声明配置超时策略,实现不同类型接口的调用。如图6所示,所述微服务声明式接口超时配置方法具体包括以下内容:
获取客户端200输入的用于调用目标接口的控制指令。客户端200可以在搭建的微服务应用后,随着应用运行的需要,向服务器100发送控制指令,以调用微服务组件对应的接口。其中,被调用的微服务组件接口被称为目标接口。
为了在调用接口后,能够根据接口注解参数应用自定义的超时策略,在本申请实施例中,所述目标接口为声明式接口。声明式接口是指能够通过添加注解参数,设置微服务组件调用状态的接口形式。例如,feign接口可以作为spring cloud微服务框架下的一种声明式接口。当客户端200依据搭建的微服务应用通过feign接口调用微服务组件时,可在调用过程中向服务器100发送调用请求,使服务器100可以获取到用于调用feign接口的控制指令。
用于调用目标接口的控制指令可以在搭建微服务应用时输入,即在客户端200首次调用微服务组件时,服务器100可以响应客户端200的调用请求,获取用于调用目标接口的控制指令。用于调用目标接口的控制指令还可以在客户端200运行微服务应用时,每次调用对应微服务组件时输入。例如,部分微服务应用需要多测调用同一个微服务组件对应用数据执行计算,则在每一次调用微服务组件时,服务器100都可以获取用于调用目标接口的控制指令。
在获取客户端200输入的控制指令后,服务器100可以响应于所述控制指令,检测目标接口的注解参数。客户端200在调用前对单个目标接口配置超时策略。其中,超时策略可以包括连接超时的时长、请求超时的时长以及超时重试策略(如重试次数、重试触发条件等)等策略。超时策略可以在针对微服务组件对应的接口进行超时相关控制,以使接口的超时控制方式能够适应接口的响应方式和调用方式。
当目标接口为声明式接口时,对目标接口配置的超时策略还可以定义在注解参数中,即所述注解参数包括通过微服务框架针对每个所述目标接口配置的超时策略。例如,在构建微服务应用时,可以重新定义服务接口客户机(Feign Client)的注解参数“PaasFeign Client”并添加三个属性“connect Timeout”,“read Timeout”和“retryer”,分别代表连接超时的时长、请求超时的时长以及超时重试策略。
通过在声明式接口的注解参数中添加上述超时策略属性后,服务器100可以在客户端100调用目标接口时,自动触发对注解参数的扫描,从而在注解参数中检测获得定义的超时策略属性。因此服务器100可以再根据注解参数,为目标接口应用超时策略。应用超时策略后,服务器100在控制当前目标接口时,可以按照定义的超时策略执行超时相关控制。
例如,在Consumer服务中直接调用Feign接口实现provider的远程调用,但其在调用过程中,provider服务1提供的接口A、接口B、接口C三个接口响应很快,且为原子调用,不能连续重复调用;但是provider服务2提供的接口D、接口E、接口F三个接口响应很慢,可以重复调用。因此,服务器100可以在实现Feign接口D、接口E、接口F时,通过PaasFeignClient注解声明超时配置策略,实现不同类型接口的调用。
可见,在上述实施例中,服务器100可以通过对目标接口注解参数进行检测,确定每个目标接口定义超时策略。由于每个目标接口均可以定义注解参数,因此通过注解参数定义的超时策略可以实现为单个接口设置超时策略。如此细粒度的配置可以适应更多个性化场景,防止因某个接口超时造成微服务卡顿的现象,让微服务接口的使用更加便利,而且在接口注解参数处直接添加超时策略,可以避免对各接口配置复杂的超时策略控制程序,方便易用。
为了使服务器100能够对目标接口的注解参数进行检测,在本申请的部分实施例中,客户端200或服务器100还可以根据要定义的超时策略,为目标接口设置注解参数以及相关的触发程序。即客户端200或服务器100可以根据超时策略,为服务接口客户机的注解参数以及使能服务接口客户机的注解参数添加超时策略属性。
例如,可以通过在服务接口客户机Feign Client注解新添加三个属性并定义为新的注解Paas Feign Client,即:
int connectTimeout()default 0;
int readTimeout()default 0;
Class<?>retryer()default void.class;
再通过指定服务接口客户机的注册类,并应用服务接口客户机的注册类,以使目标接口在调用时触发检测目标接口的注解参数。例如,在添加上述三个属性参数后,还可以更改使能服务接口客户机Enable Feign Client注解的register为新的注解Enable PaasFeign Client,即:
Import(PaasFeignClientsRegister.class)。
在应用服务接口客户机的注册类后,还可以调用服务接口客户机的工厂类,并使用服务接口客户机的工厂类,将目标接口加载为对象实例。例如,在应用服务接口客户机的注册类后,实现Paas Feign Clients Register类,用于启动时扫描带有Paas FeignClient注解的接口,并调用PaaS Feign Client Factory Bean工厂类把接口转换为FeignClient bean,注册到spring container Paas Feign Clients Register,即:
在Register类中扫描新实现的Paas Feign Client注解;
在Register中传递Enable Paas Feign Client的公共配置;
在Register类中更改加载Bean的工厂类为PaaS Feign Client Factory Bean,并传递Paas Feign Client中新定义的三个属性到工厂类;
实现加载Bean的工厂类PaaS Feign Client Factory Bean,用于加载PaaS FeignClient的接口为bean,使服务器100可以在转换bean的过程中会扫描是否带有特定超时策略配置。
在一些实施例中,如果在构建微服务应用时在超时策略中定义了重试策略,如定义了重试次数和重试触发条件等,则在将目标接口加载为对象实例时,根据重试策略构建重试策略基类,再使用构造函数传递重试次数值,从而基于重试策略基类,构建重试策略类。
由以上技术方案可知,用户可以通过客户端200或者服务器100对在被调用接口中添加注解参数,并通过实现注册类和工厂类,使服务器100在调用目标接口时可以通过注解参数确定特定的超时策略。根据不同的接口形式,配置的超时策略可以包括连接超时时间、请求超时时间以及超时重试策略中的一种或多种的组合。
如图7所示,在一些实施例中,服务器100在为所述目标接口应用所述超时策略时,可以对当前目标接口是否定义了注解参数进行检测,以根据注解参数的定义情况,应用不同的超时策略。即服务器100可以先扫描目标接口的注解参数,根据注解参数的扫描结果,如果所述注解参数中包括所述超时策略,即在构建的微服务应用中,为当前目标接口定义了特定的超时策略,因此可以按照上述实施例中提供的方式,根据注解参数确定自定义的超时策略,并按照自定义的超时策略为目标接口应用超时策略。
如果注解参数中不包括超时策略,即在构建的微服务应用中,未对当前目标接口定义特定的超时策略。因此服务器100可以按照统一的服务调用方式实施超时策略控制,即服务器100可以获取公共策略,并为目标接口应用公共策略。
例如,在Consumer服务调用Feign接口实现provider的远程调用时,由于provider服务1提供的接口A、接口B、接口C三个接口响应很快,且为原子调用,不能连续重复调用,其可以按照统一配置的超时控制方式进行接口控制。而provider服务2提供的接口D、接口E、接口F三个接口响应很慢,可以重复调用,由于无法与接口A、接口B、接口C的超时控制方式相统一,因此在构建微服务应用时,可以对接口D、接口E、接口F添加超时策略的注解参数,而对接口A、接口B、接口C无需添加特定的超时策略的注解参数。因此,在客户端200调用provider服务1和provider服务2时,可以通过扫描PaasFeignClient的注解参数确定接口D、接口E、接口F采用定义的超时配置策略,而接口A、接口B、接口C采用公共配置策略,实现不同类型接口的调用。
由于需要特殊定义超时策略的接口数量占微服务应用所调用的总接口数量的比例不高,因此在一些实施例中,服务器100还可以在为目标接口应用超时策略时,先获取公共策略,并为全部的微服务接口应用公共策略。再通过遍历目标接口的注解参数,以获得被配置超时策略的目标接口;从而将被配置超时策略的目标接口的公共策略覆盖为超时策略。
例如,在微服务应用调用的接口A、接口B、接口C、接口D、接口E、接口F中,仅接口D响应很慢,可以重复调用,其余接口的响应很快,不能连续重复调用时。可以在公共策略中针对响应很快,不能连续重复调用的方式配置超时策略,并且针对接口D配置单独的,适用于响应很慢且可以重复调用的超时策略,添加至接口D对应的注解参数中。在调用接口并应用超时策略时,服务器100可以先对全部接口应用公共策略,再通过检测接口D的注解参数,使用注解参数中定义的超时策略覆盖公共策略,使接口D维持特有的超时控制方式。
在一些实施例中,为了使各接口能够配置特定的超时策略,服务器100还可以对各接口是否需要配置不同的超时策略进行判断,即服务器100可以获取客户端200需要调用的接口信息,并根据所述接口信息,遍历每个所述目标接口的响应速度。例如,在构建微服务应用时,客户端200可以先上报需要调用的接口信息。上报的接口信息中可以包括待调用的接口名称、接口性质等内容。服务器100在接收到接口信息后,可以根据接口信息中接口名称和/或接口类型,在数据库中进行匹配,以获取待调用接口所对应的响应速度。
如图8所示,在一些实施例中,为了获取客户端200待调用的接口对应的响应速度,服务器100还可以在接收到接口信息后,对接口信息中包含的接口名称进行提取,并按照接口名称对该名称下接口运行状态进行测试,以确定接口对应的响应速度。
例如,客户端200上报的接口信息中包括接口名称分别为接口A、接口B、接口C时,服务器100可以对接口名称进行识别,并运行测试程序,分别向接口A、接口B、接口C发送测试指令。在测试指令发送后,测试程序可以记录每个接口反馈数据的时间,从而根据反馈数据的时间和发送测试指令的时间,分别计算接口A、接口B、接口C的响应速度。显然,反馈数据的时间越短,则对应响应速度越快。
在获得每个目标接口的响应速度后,服务器100可以根据获取的响应速度遍历结果,查询各接口响应速度归属的类型区间。其中,所述类型区间包括第一区间和第二区间,如果响应速度归属于第一区间,即当前接口的响应速度适应公共策略的控制形式,因此可以为目标接口配置公共策略;如果响应速度归属于第二区间,即当前接口的响应速度不适应公共策略的控制形式,因此可以为目标接口配置超时策略。
由于在实际接口调用过程中,同一个微服务组件的接口通常维持同一种超时策略,因此当微服务应用需要调用多个微服务组件时,更容易产生特殊接口。为此,在一些实施例中,服务器100还可以通过对微服务应用所调用的微服务数量进行判断,以确定是否对接口进行超时策略配置。
即如图9所示,服务器100在获取客户端需要调用的接口信息后,可以根据所述接口信息,遍历客户端需要调用的微服务数量,如果微服务数量大于或等于2,执行遍历每个目标接口的响应速度的步骤,以按照响应速度为每个微服务对应的目标接口配置公共策略或超时策略;如果微服务数量等于1,统一为微服务对应的目标接口设置公共策略或超时策略。
通过对微服务应用所需要调用的微服务组件数量进行检测,服务器100可以对接口需求状况进行筛选,从而在微服务数量大于或等于2,即可能产生特殊接口时,再通过检测响应速度确定超时策略的配置方式,以及时完成超时策略配置,减小数据判断量。
由于上述实施例提供的超时配置方法需要依赖从注解参数中提取的超时策略,因此接口需要能够携带注解参数,即接口需要是声明式接口,因此如图10所示,在一些实施例中,服务器100还可以对接口类型进行判断,即在为所述目标接口配置超时策略时,根据接口信息,遍历客户端需要调用的接口类型;如果接口类型为声明式接口,获取客户端输入的超时策略属性参数;并将属性参数添加至目标接口的注解参数中,以将目标接口定义为服务。
基于上述超时配置方法,本申请的部分实施例还提供一种服务器100,包括:存储器110、通信器120以及控制器130。其中,所述存储器110被配置为存储微服务框架应用,以及各种微服务组件。所述通信器120被配置为与客户端200建立通信连接。所述控制器130被配置为执行以下程序步骤:
获取客户端输入的用于调用目标接口的控制指令,所述目标接口为声明式接口;
响应于所述控制指令,检测所述目标接口的注解参数,所述注解参数包括通过微服务框架针对每个所述目标接口配置的超时策略;
根据所述注解参数,为所述目标接口应用所述超时策略。
由以上技术方案可知,上述实施例提供的服务器100可以在客户端200输入用于调用目标接口的控制指令后,通过检测目标接口的注解参数,获取客户端200为基于微服务框架为该目标接口设置的超时策略,从而按照超时策略应用目标接口。所述服务器100可以通过对目标接口添加注解的方式配置超时策略,实现基于单个维度的接口超时策略,使不同的目标接口可以配置不同的超时策略,满足微服务中特殊接口的需求,解决传统声明式接口超时配置影响其他接口稳定性的问题。
需要说明的是,上述实施例以spring cloud微服务架构中,feign形式的声明式接口为例对超时策略的配置方式进行阐述,应当理解的是,上述实施例中提供的超时策略配置方式还可以应用于其他微服务架构的声明式接口中,因此本领域技术人员基于上述实施例中提供的超时策略配置方式,所能够联想到的其他方式和应用场景均属于本申请的保护范围。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。

Claims (8)

1.一种服务器,其特征在于,包括:
存储器,被配置为存储微服务框架应用;
通信器,被配置为与客户端建立通信连接;
控制器,被配置为:
获取客户端输入的用于调用目标接口的控制指令,所述目标接口为声明式接口,所述声明式接口通过添加注解参数设置微服务组件调用状态;
响应于所述控制指令,检测所述目标接口的注解参数,所述注解参数包括通过微服务框架针对每个所述目标接口配置的超时策略,所述超时策略包括连接超时的时长、请求超时的时长以及超时重试策略;
根据所述注解参数,扫描所述目标接口的注解参数;如果所述注解参数中包括所述超时策略,为所述目标接口应用所述超时策略;如果所述注解参数中不包括所述超时策略,获取公共策略,以及为所述目标接口应用所述公共策略;
或者,获取公共策略;为全部的微服务接口应用所述公共策略;遍历所述目标接口的注解参数,以获得被配置所述超时策略的目标接口;将被配置所述超时策略的目标接口的公共策略覆盖为所述超时策略。
2.根据权利要求1所述的服务器,其特征在于,所述控制器被进一步配置为:
根据所述超时策略,为服务接口客户机的注解参数以及使能所述服务接口客户机的注解参数添加超时策略属性;
指定所述服务接口客户机的注册类;
应用所述服务接口客户机的注册类,以使所述目标接口在调用时触发检测所述目标接口的注解参数。
3.根据权利要求2所述的服务器,其特征在于,所述控制器被进一步配置为:
在应用所述服务接口客户机的注册类的步骤后,调用所述服务接口客户机的工厂类;
使用所述服务接口客户机的工厂类,将所述目标接口加载为对象实例。
4.根据权利要求1所述的服务器,其特征在于,所述超时策略包括连接超时时间、请求超时时间以及超时重试策略中的一种或多种的组合;所述控制器被进一步配置为:
构建重试策略基类;
使用构造函数传递重试次数值;
基于所述重试策略基类,构建重试策略类。
5.根据权利要求1所述的服务器,其特征在于,所述控制器被进一步配置为:
获取客户端需要调用的接口信息;
根据所述接口信息,遍历每个所述目标接口的响应速度;
查询所述响应速度归属的类型区间,所述类型区间包括第一区间和第二区间;
如果所述响应速度归属于所述第一区间,为所述目标接口配置公共策略;
如果所述响应速度归属于所述第二区间,为所述目标接口配置超时策略。
6.根据权利要求5所述的服务器,其特征在于,所述控制器被进一步配置为:
在获取客户端需要调用的接口信息的步骤后,根据所述接口信息,遍历所述客户端需要调用的微服务数量;
如果所述微服务数量大于或等于2,执行遍历每个所述目标接口的响应速度的步骤,以按照所述响应速度为每个所述微服务对应的目标接口配置公共策略或超时策略;
如果所述微服务数量等于1,统一为所述微服务对应的目标接口设置公共策略或超时策略。
7.根据权利要求5所述的服务器,其特征在于,所述控制器被进一步配置为:
在为所述目标接口配置超时策略的步骤中,根据所述接口信息,遍历所述客户端需要调用的接口类型;
如果所述接口类型为声明式接口,获取客户端输入的超时策略属性参数;
将所述属性参数添加至所述目标接口的注解参数中,以将所述目标接口定义为服务。
8.一种微服务声明式接口超时配置方法,其特征在于,应用于服务器,所述服务器内置微服务框架应用,并与客户端建立通信连接;所述微服务声明式接口超时配置方法包括:
获取客户端输入的用于调用目标接口的控制指令,所述目标接口为声明式接口,所述声明式接口通过添加注解参数设置微服务组件调用状态;
响应于所述控制指令,检测所述目标接口的注解参数,所述注解参数包括通过微服务框架针对每个所述目标接口配置的超时策略,所述超时策略包括连接超时的时长、请求超时的时长以及超时重试策略;
根据所述注解参数,扫描所述目标接口的注解参数;如果所述注解参数中包括所述超时策略,为所述目标接口应用所述超时策略;如果所述注解参数中不包括所述超时策略,获取公共策略,以及为所述目标接口应用所述公共策略;
或者,获取公共策略;为全部的微服务接口应用所述公共策略;遍历所述目标接口的注解参数,以获得被配置所述超时策略的目标接口;将被配置所述超时策略的目标接口的公共策略覆盖为所述超时策略。
CN202110885801.0A 2021-08-03 2021-08-03 一种服务器及微服务声明式接口超时配置方法 Active CN113590236B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110885801.0A CN113590236B (zh) 2021-08-03 2021-08-03 一种服务器及微服务声明式接口超时配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110885801.0A CN113590236B (zh) 2021-08-03 2021-08-03 一种服务器及微服务声明式接口超时配置方法

Publications (2)

Publication Number Publication Date
CN113590236A CN113590236A (zh) 2021-11-02
CN113590236B true CN113590236B (zh) 2023-10-31

Family

ID=78254339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110885801.0A Active CN113590236B (zh) 2021-08-03 2021-08-03 一种服务器及微服务声明式接口超时配置方法

Country Status (1)

Country Link
CN (1) CN113590236B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114430396B (zh) * 2022-04-06 2022-07-05 中国光大银行股份有限公司 交易频率控制方法、装置、存储介质和电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483538A (zh) * 2017-07-06 2017-12-15 聚好看科技股份有限公司 一种在微服务集群的节点上处理访问请求包的方法和装置
US10503534B1 (en) * 2016-09-09 2019-12-10 Hewlett-Packard Development Company, L.P. Adaptive clock scaling to optimize time-based operations within virtualized guest operating systems
CN111124679A (zh) * 2019-12-19 2020-05-08 南京莱斯信息技术股份有限公司 一种面向多源异构海量数据限时自动处理方法
CN111414263A (zh) * 2020-03-20 2020-07-14 深圳乐信软件技术有限公司 一种信息处理方法、装置、服务器及存储介质
CN112104521A (zh) * 2020-09-08 2020-12-18 北京金山云网络技术有限公司 请求超时监控方法、装置、计算机设备和存储介质
CN112256351A (zh) * 2020-10-26 2021-01-22 卫宁健康科技集团股份有限公司 Feign组件的实现方法、微服务调用方法及装置
CN112506709A (zh) * 2020-12-16 2021-03-16 北京航天智造科技发展有限公司 微服务治理方法及装置
CN112650572A (zh) * 2020-12-30 2021-04-13 平安普惠企业管理有限公司 一种分布式任务调度方法、装置、计算机设备及存储介质
CN112764919A (zh) * 2020-12-31 2021-05-07 中国工商银行股份有限公司 分布式服务自适应负载均衡方法及装置
CN112997153A (zh) * 2018-09-24 2021-06-18 思杰系统有限公司 用于经由嵌入式浏览器跨不同的saas应用的一致的执行策略的系统和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050065970A1 (en) * 2003-08-20 2005-03-24 King Anthony Graham System, method and apparatus for developing software

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503534B1 (en) * 2016-09-09 2019-12-10 Hewlett-Packard Development Company, L.P. Adaptive clock scaling to optimize time-based operations within virtualized guest operating systems
CN107483538A (zh) * 2017-07-06 2017-12-15 聚好看科技股份有限公司 一种在微服务集群的节点上处理访问请求包的方法和装置
CN112997153A (zh) * 2018-09-24 2021-06-18 思杰系统有限公司 用于经由嵌入式浏览器跨不同的saas应用的一致的执行策略的系统和方法
CN111124679A (zh) * 2019-12-19 2020-05-08 南京莱斯信息技术股份有限公司 一种面向多源异构海量数据限时自动处理方法
CN111414263A (zh) * 2020-03-20 2020-07-14 深圳乐信软件技术有限公司 一种信息处理方法、装置、服务器及存储介质
CN112104521A (zh) * 2020-09-08 2020-12-18 北京金山云网络技术有限公司 请求超时监控方法、装置、计算机设备和存储介质
CN112256351A (zh) * 2020-10-26 2021-01-22 卫宁健康科技集团股份有限公司 Feign组件的实现方法、微服务调用方法及装置
CN112506709A (zh) * 2020-12-16 2021-03-16 北京航天智造科技发展有限公司 微服务治理方法及装置
CN112650572A (zh) * 2020-12-30 2021-04-13 平安普惠企业管理有限公司 一种分布式任务调度方法、装置、计算机设备及存储介质
CN112764919A (zh) * 2020-12-31 2021-05-07 中国工商银行股份有限公司 分布式服务自适应负载均衡方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
iFixit Myself: User-Generated Content Strategy in "The Free Repair Guide for Everything";Guiseppe Getto等;《IEEE Transactions on Professional Communication》;第37 - 55页 *
高可用微服务系统的设计与实现;常星;《cnki优秀硕士学位论文全文库 信息科技辑》;第I138-479页 *

Also Published As

Publication number Publication date
CN113590236A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
CN107239416B (zh) 为智能设备提供统一抽象表示的计算机系统及实现方法
US20090160694A1 (en) Interaction with autonomous consumer electronics devices
US20200183710A1 (en) Deploying cross-platform applications on mobile devices with native and web components
US20210337015A1 (en) Method and system of application development for multiple device client platforms
JP6258475B2 (ja) クライアントデバイスにメディアアセットを提供するための方法
CN106878361A (zh) 一种终端应用页面的调试方法、装置及客户端
CN105871911A (zh) 一种服务调用引擎、方法及系统
CN113590236B (zh) 一种服务器及微服务声明式接口超时配置方法
Di Martino et al. A semantic IoT framework to support RESTful devices' API interoperability
US11411812B2 (en) Dynamic service creation for microservice-based integration service
CN103975301B (zh) 通过本地服务器对本地客户机应用进行事件服务的方法
US20230117081A1 (en) Providing a user-centric application
CN104038511B (zh) 一种资源管理方法及装置
Sefid‐Dashti et al. A reference architecture for mobile SOA
US11792269B2 (en) Method for generating application for controlling external electronic device and electronic apparatus for supporting the same
CN114282760A (zh) 一种结合动态表单和动态流程的工作流生成方法及装置
CN110262912B (zh) 一种过程调用gRPC的调用方法及装置
CN113112217A (zh) 一种业务流程配置方法、装置、电子设备及计算机可读介质
US9355264B2 (en) Secretly transmitting messages over public channels
CN115774573B (zh) 应用集成方法、装置、电子设备和存储介质
Rodríguez et al. Discovery and registration: finding and integrating components into dynamic systems
CN114189488B (zh) 一种消息共享方法及服务器
US11989558B2 (en) Automatic generation of a cloud integration adapter from a standard, programming language-agnostic interface specification
WO2023124618A1 (zh) 服务管理方法及其装置、系统、电子设备、存储介质
US20230376363A1 (en) Framework for digital workers

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