流控配置方法及系统与流程

文档序号:17480942发布日期:2019-04-20 06:27阅读:689来源:国知局
流控配置方法及系统与流程

本发明涉及流控领域,尤其涉及一种流控配置方法及系统。



背景技术:

“流控”是“流量控制”的简称。流控技术分为两种:一种是流控作为完整的功能模块加入到业务服务之中,业务服务通过调用模块接口实现流控功能;另一种是流控作为一个单独的服务,业务服务请求流控服务实现流控功能。

在实现本发明过程中,发明人发现相关技术中至少存在如下问题:

如果作为完整的流控功能模块,则需要在每个需要流控的业务服务中引入该模块,若需要更新或修复流控功能模块,则需要批量更新,这样较为繁琐。

作为单独的流控服务,可以避免作为完整流控模块的缺点;但是,每次请求都需要向流控服务查询,这样显然影响了效率,且流控服务也面临很大压力。

由于业务服务之间并不会保证使用相同的业务信息进行流控,就导致了流控的具体实现需要与业务相关,所以:若作为完整的流控模块,对于一个异构系统,无法得到复用。当需要更新修改时会很繁琐。若作为流控服务来部署,则需要业务服务收到请求时,询问流控服务当前业务服务的流量状态完成限流功能。



技术实现要素:

为了至少解决现有技术中使用完整的流控模块,需要在每个需要流控的业务服务中引入该模块,使得后期维护较为繁琐,作为单独的流控服务在每次流控请求时,都需要向流控服务查询,影响了效率的问题。

第一方面,本发明实施例提供一种流控配置方法,包括:

在各个业务系统中部署流控客户端;

流控客户端以及流控服务端集群同步从etcd分布式存储集群中获取流控配置信息进行初始化;

监听所述etcd分布式存储集群,响应于所述etcd分布式存储集群中流控配置信息的更新,所述流控客户端以及流控服务端集群获取更新后的流控配置;

所述流控客户端响应于各个业务系统的业务请求的输入,确定所述业务请求的需求配额,所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策,以向所述流控服务端集群拉取配额。

第二方面,本发明实施例提供一种流控配置系统,包括:

客户端部署程序模块,用于在各个业务系统中部署流控客户端;

初始化程序模块,用于流控客户端以及流控服务端集群同步从etcd分布式存储集群中获取流控配置信息进行初始化;

流控配置获取程序模块,用于监听所述etcd分布式存储集群,响应于所述etcd分布式存储集群中流控配置信息的更新,所述流控客户端以及流控服务端集群获取更新后的流控配置;

配额拉取程序模块,用于所述流控客户端响应于各个业务系统的业务请求的输入,确定所述业务请求的需求配额,所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策,以向所述流控服务端集群拉取配额。

第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的流控配置方法的步骤。

第四方面,本发明实施例提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本发明任一实施例的流控配置方法的步骤。

本发明实施例的有益效果在于:通过流控服务端监听所述etcd配置,当配置更改时,即可立即生效,提高了系统整理处理流控的实时性。同时由于是流控客户端确定出需要的配额向流控服务端集群拉取,减轻了流控服务端集群的任务,使得各个业务之间流量分配更加合理且相对均匀,保证了整体系统运行的稳定性。

附图说明

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

图1是本发明一实施例提供的一种流控配置方法的流程图;

图2是本发明一实施例提供的一种流控配置系统的结构示意图。

具体实施方式

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

如图1所示为本发明一实施例提供的一种流控配置方法的流程图,包括如下步骤:

s11:在各个业务系统中部署流控客户端;

s12:流控客户端以及流控服务端集群同步从etcd分布式存储集群中获取流控配置信息进行初始化;

s13:监听所述etcd分布式存储集群,响应于所述etcd分布式存储集群中流控配置信息的更新,所述流控客户端以及流控服务端集群获取更新后的流控配置;

s14:所述流控客户端响应于各个业务系统的业务请求的输入,确定所述业务请求的需求配额,所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策,以向所述流控服务端集群拉取配额。

在本实施方式中,将流控功能作为单独的服务部署。然后业务服务通过拉去配额信息到本地,进行流控工作。可以根据业务的场景进行特殊的处理。

对于步骤s11,在各个业务系统中部署流控客户端,其中,所述流控客户端可包含在需要进行限流的程序中,或者部署在与程序相同的机器上。需限流的程序通过调用流控客户端接口,从而流控客户端会结合维度指标(包含程序传入的信息,本机器的负载信息)等信息查询到指定的流控规则,一并传送到流控服务端,请求流量配额到本地。根据流量配额,请求流量通过。

对于步骤s12,流控服务端集群和流控客户端都采用etcd存储配置信息。其中,所述etcd是用于共享配置和服务发现的分布式,一致性的kv(key-value键值)存储系统。etcd使用raft协议来维护集群内各个节点状态的一致性。简单说,etcd集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过raft协议保证每个节点维护的数据是一致的。每个etcd节点都维护了一个状态机,并且,任意时刻至多存在一个有效的主节点。主节点处理所有来自客户端写操作,通过raft协议保证写操作对状态机的改动会可靠的同步到其他节点。由于etcd的分布式特性并提供数据监听的特性,配置的修改可以直接实时反馈到流控服务端集群和流控客户端,使配置生效,不需要重启服务。

对于步骤s13,配置有流控配置信息控制台来修改配置信息,响应于所述etcd分布式存储集群中流控配置信息的更新,其中,流控服务端集群启动,从etcd中读取更新后的流控配置信息,进行初始化流控配置以提供服务,流控客户端随业务系统启动,从所述etcd中读取更新后的流控配置信息以初始化。

对于步骤s14,所述流控客户端响应于各个业务系统的业务请求流量的输入,其中,所述请求包括请求流量的参数指标,例如,可以使用业务系统参数,也可以使用与业务无关的类似ip等信息。进而所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策,例如,确定出需要多少配额,附上业务系统的类参数以及本机的负载信息,向所述流控服务端集群拉去配额。

通过该实施方式可以看出,通过流控服务端监听所述etcd配置,当配置更改时,即可立即生效,提高了系统整理处理流控的实时性。同时由于是流控客户端确定出需要的配额向流控服务端集群拉取,减轻了流控服务端集群的任务,使得各个业务之间流量分配更加合理且相对均匀,保证了整体系统运行的稳定性。

作为一种实施方式,在本实施例中,所述流控客户端响应于各个业务系统业务请求数的输入,确定所述业务请求的需求配额,所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策包括:

流控客户端检查本地流控配额信息;

若所述本地流控配额信息不满足需求配额时,将所述流控客户端本地负载信息以及所述需求配额发送至所述流控服务端集群,以拉取配额。

在本实施方式中,流控客户端会先检查本地的流控配额够不够,若所述本地流控配额信息不满足需求配额时,将所述流控客户端本地负载信息以及所述需求配额发送至所述流控服务端集群,以拉取配额。

通过该实施方式可以看出,只有当本地流控配额信息不满足配额需求时,才会将所述流控客户端本地负载信息以及所述需求配额发送至所述流控服务端集群,如果本地流控配额足够时,不会打扰所述流控服务集群,提高流控配额的效率。

作为一种实施方式,在本实施例中,在将所述流控客户端本地负载信息以及所述需求配额发送至所述流控服务端集群,以拉取配额之后,所述方法还包括:

验证所述拉取配额是否满足所述业务请求的配额需求;

当满足所述业务请求的配额需求时,给予所述业务系统响应;

当不满足所述业务请求的配额需求时,拒绝所述业务系统的请求。

在本实施方式中,由于流控服务端集群可使用的配额也有限,即使流控客户端将本地负载信息以及所述需求配额发送至所述流控服务端集群,所拉取的配额也不一定能满足业务请求的配额需求,当满足所述业务请求的配额需求时,给予所述业务系统响应;当不满足所述业务请求的配额需求时,拒绝所述业务系统的请求。

通过该实施方式可以看出,由于配额有一定上限,并不一定完全能满足业务的请求,当不满足所述业务请求的配额需求时,拒绝所述业务系统的请求,保证系统的稳定性。

作为一种实施方式,所述流控客户端响应于各个业务系统业务请求的输入包括:

所述业务请求通过websocket连接向所述业务系统输入,响应于所述业务请求的输入,对所述业务系统的引用次数加1,其中,所述业务系统的初始引用次数为0;

当断开所述websocket连接时,对所述业务系统的引用次数减1;

当所述引用次数为0时,以向所述流控服务端集群归还拉取的配额。

在本实施方式中,由于大部分的业务场景是websocket长连接,可以在创建连接和断开连接时做些事:当创建连接时,业务服务在本地查询不到配额信息,请求流控服务端集群拉取配额,本地存储配额信息,并新增引用计数。当断开连接时,业务服务在本地配额信息引用计数减1,若引用计数为0,则将该配额信息重新还给流控服务。若在创建连接时,业务服务在本地查询到配额信息,只需要新增引用计数即可。

通过该实施方式可以看出,通过及时的将流控客户端请求的配额归还,实现了动态配额。

如图2所示为本发明一实施例提供的一种流控配置系统的结构示意图,该系统可执行上述任意实施例所述的流控配置方法,并配置在终端中。

本实施例提供的一种流控配置系统包括:客户端部署程序模块11,初始化程序模块12,流控配置获取程序模块13和配额拉取程序模块14。

其中,客户端部署程序模块11用于在各个业务系统中部署流控客户端;初始化程序模块12用于流控客户端以及流控服务端集群同步从etcd分布式存储集群中获取流控配置信息进行初始化;流控配置获取程序模块13用于监听所述etcd分布式存储集群,响应于所述etcd分布式存储集群中流控配置信息的更新,所述流控客户端以及流控服务端集群获取更新后的流控配置;配额拉取程序模块14用于所述流控客户端响应于各个业务系统的业务请求的输入,确定所述业务请求的需求配额,所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策,以向所述流控服务端集群拉取配额。

进一步地,所述配额拉取程序模块用于:

流控客户端检查本地流控配额信息;

若所述本地流控配额信息不满足需求配额时,将所述流控客户端本地负载信息以及所述需求配额发送至所述流控服务端集群,以拉取配额。

进一步地,所述配额拉取程序模块还用于:

验证所述拉取配额是否满足所述业务请求的配额需求;

当满足所述业务请求的配额需求时,给予所述业务系统响应;

当不满足所述业务请求的配额需求时,拒绝所述业务系统的请求。

进一步地,所述配额拉取程序模块用于:

所述业务请求通过websocket连接向所述业务系统输入,响应于所述业务请求的输入,对所述业务系统的引用次数加1,其中,所述业务系统的初始引用次数为0;

当断开所述websocket连接时,对所述业务系统的引用次数减1;

当所述引用次数为0时,以向所述流控服务端集群归还拉取的配额。

本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的流控配置方法;

作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,计算机可执行指令设置为:

在各个业务系统中部署流控客户端;

流控客户端以及流控服务端集群同步从etcd分布式存储集群中获取流控配置信息进行初始化;

监听所述etcd分布式存储集群,响应于所述etcd分布式存储集群中流控配置信息的更新,所述流控客户端以及流控服务端集群获取更新后的流控配置;

所述流控客户端响应于各个业务系统的业务请求的输入,确定所述业务请求的需求配额,所述流控客户端根据所述需求配额通过所述流控服务端集群进行流控决策,以向所述流控服务端集群拉取配额。

作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的测试软件的方法对应的程序指令/模块。一个或者多个程序指令存储在非易失性计算机可读存储介质中,当被处理器执行时,执行上述任意方法实施例中的流控配置方法。

非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据测试软件的装置的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至测试软件的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本发明实施例还提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的流控配置方法的步骤。

本申请实施例的客户端以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如平板电脑。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器,掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)其他具有流控配置功能的电子装置。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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