服务限流方法及装置与流程

文档序号:21360706发布日期:2020-07-04 04:34阅读:338来源:国知局
服务限流方法及装置与流程

本发明涉及数据处理技术,具体的讲是一种服务限流方法及装置。



背景技术:

随着分布式微服务的流行,安全可靠的内部服务间的限流熔断功能变的越来越重要,传统的限流熔断有两种方式,一种是从服务接入的网关或负载均衡处限流,另一种是微服务中相关框架中或程序中植入限流熔断功能。

从服务接入的网关或负载均衡处限流,这种限流方式控制颗粒度比较粗,无法对微服务内部集群中每个服务之间做到限流,或者无法对内部集群中每个接口调用之间做到精准限流。

在微服务中相关框架中或程序中植入限流熔断功能,这种方式对业务程序有强耦合性,不适合后期限流功能的升级。



技术实现要素:

为至少解决现有技术的一问题,本发明实施例提供了一种服务限流方法,该方法包括:

接收用户设置的限流策略;

将所述限流策略下发至各服务的节点服务器的探针;

利用所述探针根据所述限流策略进行限流。

本发明实施例中,所述的接收用户设置的限流策略包括:

通过探针向远程控制台发送心跳建立连接;

建立连接后,接收用户通过所述远程控制台设置的限流策略。

本发明实施例中,所述的服务节点服务器设置于java虚拟机环境。

本发明实施例中,所述的将所述限流策略下发至各服务的节点服务器的探针之前包括:

预先在各服务的节点服务器分别设置探针.

本发明实施例中,所述的探针为java探针。

同时,本发明还提供一种服务限流装置,包括:

策略接收模块,用于接收用户设置的限流策略;

下发模块,用于将所述限流策略下发至各服务的节点服务器的探针;

限流模块,用于利用所述探针根据所述限流策略进行限流。

本发明实施例中,所述的策略接收模块包括:

连接建立单元,用于通过探针向远程控制台发送心跳建立连接;

接收单元,建立连接后,用于接收用户通过所述远程控制台设置的限流策略。

本发明实施例中,所述的装置还包括:

探针设置模块,用于预先在各服务节点服务器分别设置探针.

本发明实施例中,所述的限流策略包括:对服务的访问截断策略、适配器策略以及流量规划控制策略。

同时,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法。

同时,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有执行上述方法的计算机程序。

本发明提供的服务限流方法及装置,解决了分布式微服务中节点间的限流问题,解决了现有技术中的限流装置,对于传统分布式微服务节点限流装置来说,需对应用程序有侵入性,需应用程序集成相关限流能力的sdk或者框架能力,而本发明对应用程序是无侵入的,应用程序对本装置是无感知的。并且,传统限流中间件只能对目标应用做到接口级别的限流能力,并且限流算法单一,可变性不多,而本发明的方案能对目标应用做到方法级的限流能力,增加限流功能的精确性。

为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的服务限流方法的流程图;

图2为本发明提供的服务限流装置的框图;

图3为本发明实施例中探针整体架构;

图4为本发明实施例中实现服务限流都整体架构图;

图5为本发明实施例中应用程序和探针模块联动方式示意图;

图6为本发明实施例中电子设备示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,为本发明提供的一种服务限流方法的流程图,该方法包括:

步骤s101,接收用户设置的限流策略;

步骤s102,将所述限流策略下发至各服务的节点服务器的探针;

步骤s103,利用所述探针根据所述限流策略进行限流。

本发明运用探针技术,在应用节点服务器中内置探针,探针伴随应用程序启动,可根据设置的相关限流策略规则,动态代理已加载到虚拟机中的应用程序的相关方法,对这些目标服务设置相关限流熔断策略,从而实现对不同服务进行限流,由探针执行限流策略,做到应用程序无感知情况下对其方法级做到限流熔断相关功能。

本发明实施例中,通过预先在各服务的节点服务器分别设置探针,将所述限流策略下发至各服务的节点服务器的探针,利用探针对应用节点做到精准限流。配合相关规则,可以进一步对应用节点中服务级,实现方法级精准限流。

同时,本发明还提供一种服务限流装置,如图2所示,该装置包括:

策略接收模块201,用于接收用户设置的限流策略;

下发模块202,用于将所述限流策略下发至各服务的节点服务器的探针;

限流模块203,用于利用所述探针根据所述限流策略进行限流。

本发明实施例中,其中,策略接收模块包括:

连接建立单元,用于通过探针向远程控制台发送心跳建立连接;

接收单元,建立连接后,用于接收用户通过所述远程控制台设置的限流策略。

本发明一实施例,各服务所在的应用节点启动后通过探针向控制平台发送心跳,与控制平台建立连接,控制平台根据连接下发多种限流策略至探针。

应用节点探针收到限流策略后,根据限流规则执行限流策略,实现对服务的限流。

本发明实施例中,所述的装置还包括:探针设置模块,用于预先在各服务节点服务器分别设置探针。

本发明一实施例中,服务节点服务器设置于java虚拟机环境,置于服务器的探针为java探针。

下面结合一具体的实施例对本发明的技术方案作进一步详细说明。

本实施例提供了一种无侵入的方法级分布式服务限流装置,本实施例中限流装置作为探针伴随应用节点启动,探针通过精心构造了字节码逻辑,使得增强类模块能在不违反jdk(java开发工具包)约束情况下实现对目标应用方法的无侵入运行时aop(面向切面编程)拦截,故能在运行目标方法前完成流量控制模块的策略计划。达到应用无感知情况下,实现方法级的限流功能,本实施例中的探针架构如图3所示。

本实施例运用探针技术(agent),在应用节点服务器中内置agent,伴随应用程序启动,可根据远程控制台对该探针配置相关规则,动态agent已加载到jvm(jvm,java虚拟机)中的应用程序的相关方法,对这些目标方法设置相关限流熔断策略。

java应用程序需要在java虚拟机(jvm)中运行,通常服务器节点会安装jdk等java虚拟机环境,程序员编写好java程序后,就把java程序放到服务器的java虚拟机环境中运行。一般情况下,如果要修改服务器上的运行程序,需要暂停服务器上原有运行程序,然后部署上新的程序并运行,以此来达到修改程序的目的。而本发明实施例中,探针agent会动态加载到服务器的java虚拟机(jvm)环境中,这样就可以在不重新部署程序的情况下,达到动态修改正在运行的程序的目的。

java程序在jvm中运行会被编译成字节码形式在内存中加载执行,本发明通过修改jvm中已经加载java程序字节码,对相关需要修改的逻辑做前置拦截从而达到服务限流目的。

本实施例中,将探针加载到服务器的jvm中,利用探针能动态修改已被加载的部分程序代码,从而当业务逻辑执行到相关代码逻辑时,会执行被修改过的代码,修改的代码中会加入限流熔断相关的业务逻辑,从而达到限流熔断。并且,探针能只针对程序中方法级的代码做动态修改,从而能精准到方法级的限流。

本实施例中,所有限流熔断策略均可通过远程控制台推送至目标服务器探针,并实时生效,做到应用程序(服务)无感知情况下对其做到方法级限流熔断相关功能,如图4所示为本实施例实现限流的整体架构图。其中,各应用节点均设有探针,应用节点启动后,通过探针向控制平台发送心跳,与控制平台建立连接,控制平台可根据连接下发多种限流规则至各探针。

本实施例中,由于agent是伴随应用节点启动,每个节点都有一个agent,故在分布式复杂部署环境下,agent能对应用节点做到精准限流。配合控制台配置相关规则,可以进一步对应用节点中服务级,方法级精准限流。agent通过精心构造了字节码逻辑,使得增强类模块能再不违反jdk约束情况下实现对目标应用方法的无侵入运行时aop拦截。

如图5所示,本实施例中,在流量进入应用前就会被agent拦截,然后根据限流规则对进或出的流量实施限流规则,达到应用无感知,程序无侵入,动态方法及限流功能。

本实施例还提供一种电子设备,该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照前述实施例,其内容被合并于此,重复之处不再赘述。

图6为本发明实施例的电子设备600的系统构成的示意框图。如图6所示,该电子设备600可以包括中央处理器100和存储器140;存储器140耦合到中央处理器100。值得注意的是,该图是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

一实施例中,服务限流功能可以被集成到中央处理器100中。其中,中央处理器100可以被配置为进行如下控制:

接收用户设置的限流策略;

将所述限流策略下发至各服务的节点服务器的探针;

利用所述探针根据所述限流策略进行限流。

本发明实施例中,所述的接收用户设置的限流策略包括:

通过探针向远程控制台发送心跳建立连接;

建立连接后,接收用户通过所述远程控制台设置的限流策略。

本发明实施例中,所述的服务节点服务器设置于java虚拟机环境。

本发明实施例中,所述的将所述限流策略下发至各服务的节点服务器的探针之前包括:预先在各服务的节点服务器分别设置探针。

在另一个实施方式中,服务限流装置可以与中央处理器100分开配置,例如可以将服务限流配置为与中央处理器100连接的芯片,通过中央处理器的控制来实现服务限流功能。

如图6所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图6中所示的所有部件;此外,电子设备600还可以包括图6中没有示出的部件,可以参考现有技术。

如图6所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。

其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。

输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。

该存储器140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。

存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。

本发明实施例还提供一种计算机可读程序,其中当在电子设备中执行所述程序时,所述程序使得计算机在所述电子设备中执行如上面实施例所述的服务限流方法。

本发明实施例还提供一种存储有计算机可读程序的存储介质,其中所述计算机可读程序使得计算机在电子设备中执行上面实施例所述的服务限流。

以上参照附图描述了本发明的优选实施方式。这些实施方式的许多特征和优点根据该详细的说明书是清楚的,因此所附权利要求旨在覆盖这些实施方式的落入其真实精神和范围内的所有这些特征和优点。此外,由于本领域的技术人员容易想到很多修改和改变,因此不是要将本发明的实施方式限于所例示和描述的精确结构和操作,而是可以涵盖落入其范围内的所有合适修改和等同物。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1