本技术实施例涉及计算机网络的,具体而言,涉及一种api网关限流方法、装置和存储介质。
背景技术:
1、api(application programming interface,应用程序编程接口)网关作为应用程序和外部世界之间的关键接口,起着控制和管理数据流的作用。
2、目前api网关的流量控制策略主要依赖于静态的规则和阈值,如限制每秒的请求数量或在一定时间段内限制数据传输量,但是静态流量控制的方法存在多个问题,首先缺乏灵活性,静态阈值不考虑api网关对应的系统的动态变化,如忽略了流量波动、资源利用率的变化等,因此往往不能灵活地适应不同场景;其次,运维成本高,需要人工监控系统状态,并在必要时手动调整限流规则和阈值,增加了运维的工作量和成本;并且忽视了优先级处理的需求,当系统资源紧张时,高优先级的请求可能与普通请求受到同样的限制,影响关键服务的性能。
3、因此,目前静态流量控制策略对于api网关的限流效果仍然较差,亟需更具有灵活性的限流策略。
技术实现思路
1、本技术实施例提供一种api网关限流方法、装置和存储介质,旨在提高限流的灵活性。
2、第一方面,本技术实施例提供一种api网关限流方法,所述方法包括:
3、获取目标系统当前的状态向量,所述状态向量包括资源紧张度、网络延迟、网络吞吐量、每秒请求数、当前活动请求的数量、高优先级请求的比例以及上一次限流动作到现在的时间,所述资源紧张度由所述目标系统的cpu利用率和内存利用率确定;
4、将所述目标系统当前的状态向量输入训练完毕的限流深度网络模型中,通过所述限流深度网络模型确定所述目标系统当前的状态向量对应的目标限流动作,所述目标限流动作为不采取任何行动、增加限流阈值、减少限流阈值、增加高优先级请求的权重、减少高优先级请求的权重、启用请求排队、禁用请求排队以及设置延迟限制中的任一种限流动作;其中,所述限流深度网络模型是根据所述目标系统的历史的状态向量样本与所述状态向量样本对应的限流动作学习得到的;
5、执行所述目标限流动作,对所述目标系统的api网关进行限流调整。
6、可选地,通过所述限流深度网络模型确定所述目标系统当前的状态向量对应的目标限流动作,包括:
7、所述限流深度网络模型输出多种限流动作各自对应的q值;
8、根据ε-greedy策略,在所述多种限流动作中确定所述目标限流动作,其中,ε为探索参数。
9、可选地,根据所述目标限流动作对所述目标系统的api网关进行限流调整之后,所述方法还包括:
10、获取执行所述目标限流动作后所述目标系统的新状态向量以及性能指标,所述性能指标包括请求成功率、稳定性以及高优先级请求的处理时间;
11、将所述目标系统当前的状态向量、所述目标限流动作、所述新状态向量以及根据所述性能指标得到的奖励值作为一个转换组合存储在经验回放缓冲区中;
12、当所述经验回放缓冲区中存储的转换组合数量达到标定值时,根据所述经验回放缓冲区中存储的多个转换组合对所述限流深度网络模型的模型参数进行优化更新。
13、可选地,所述方法还包括:
14、实时监听所述限流深度网络模型的表现性能;
15、当所述表现性能小于界限阈值时,增大所述探索参数ε;
16、当所述表现性能大于等于界限阈值时,减小所述探索参数ε。
17、可选地,训练得到所述限流深度网络模型的过程包括:
18、构建预设模型,所述预设模型的输出层包括多个节点,所述多个节点中每个节点用于对应一个限流动作的q值;
19、在每个时间步t,获取目标系统的状态向量样本输入所述预设模型,所述预设模型输出所述状态向量样本对应的多种限流动作各自对应的q值,并基于ε-greedy策略,确定所述状态向量样本对应的目标限流动作;
20、执行所述状态向量样本对应的目标限流动作,并获取执行所述状态向量样本对应的目标限流动作后所述目标系统的新状态向量样本和本次限流对应的奖励值;
21、将所述状态向量样本、所述状态向量样本对应的目标限流动作、所述新状态向量样本和所述奖励值作为转换组合样本存储在经验回放缓冲区中;
22、从所述经验回放缓冲区中随机选取一批转换组合样本更新所述预设模型的权重;
23、当所述预设模型训练至目标状态时,输出训练完毕的限流深度网络模型。
24、可选地,获取本次限流对应的奖励值包括:
25、获取所述目标系统在执行所述状态向量样本对应的目标限流动作后的请求成功率、稳定性以及高优先级请求的处理时间;
26、基于预设的奖励函数,根据所述请求成功率、稳定性以及高优先级请求的处理时间,确定本次限流的奖励值,所述奖励值用于优化更新所述限流深度网络模型的权重。
27、可选地,构建预设模型,包括:
28、将均方误差作为所述预设模型的损失函数;
29、采用adam优化器最小化所述预设模型在训练过程中的损失函数。
30、可选地,从所述经验回放缓冲区中随机选取一批转换组合样本更新所述预设模型的权重,包括:
31、对一批转换组合样本中的状态向量样本进行预处理,所述预处理包括归一化处理以及数据清洗;
32、基于预处理后的批转换组合样本更新所述预设模型的权重。
33、第二方面,本技术实施例提供一种api网关限流装置,所述装置包括:
34、获取模块,用于获取目标系统当前的状态向量,所述状态向量包括资源紧张度、网络延迟、网络吞吐量、每秒请求数、当前活动请求的数量、高优先级请求的比例以及上一次限流动作到现在的时间,所述资源紧张度由所述目标系统的cpu利用率和内存利用率确定;
35、目标限流动作确定模块,用于将所述目标系统当前的状态向量输入训练完毕的限流深度网络模型中,通过所述限流深度网络模型确定所述目标系统当前的状态向量对应的目标限流动作,所述目标限流动作为不采取任何行动、增加限流阈值、减少限流阈值、增加高优先级请求的权重、减少高优先级请求的权重、启用请求排队、禁用请求排队以及设置延迟限制中的任一种限流动作;其中,所述限流深度网络模型是根据所述目标系统的历史的状态向量样本与所述状态向量样本对应的限流动作学习得到的;
36、限流执行模块,用于执行所述目标限流动作,对所述目标系统的api网关进行限流调整。
37、第三方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例第一方面所述的api网关限流方法。
38、有益效果:
39、获取目标系统当前的状态向量,然后将所述目标系统当前的状态向量输入训练完毕的限流深度网络模型中,所述限流深度网络模型是根据所述目标系统的历史的状态向量样本与所述状态向量样本对应的限流动作学习得到的,通过所述限流深度网络模型确定所述目标系统当前的状态向量对应的目标限流动作,所述目标限流动作为不采取任何行动、增加限流阈值、减少限流阈值、增加高优先级请求的权重、减少高优先级请求的权重、启用请求排队、禁用请求排队以及设置延迟限制中的任一种限流动作,然后执行所述目标限流动作,对所述目标系统的api网关进行限流调整。
40、在对api网关进行限流调整时,基于目标系统当前的状态向量,而目标系统的状态向量包括目标系统的cpu利用率和内存利用率确定的资源紧张度、网络延迟、网络吞吐量、每秒请求数、当前活动请求的数量、高优先级请求的比例以及上一次限流动作到现在的时间,可以根据当前目标系统的实时参数动态的调整限流动作,从而提高限流的灵活性。