基于长短期记忆网络的服务器负载均衡优化方法转让专利

申请号 : CN202210556058.9

文献号 : CN114945024B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 景维鹏陈广胜李林辉

申请人 : 东北林业大学

摘要 :

本发明提供一种基于长短期记忆网络的服务器负载均衡优化方法,包括以下步骤:采集服务器集群工作周期一个月的数据作为基于LSTM的负载权重模块的训练数据,对LSTM网络进行训练得到能够识别服务器性能差异的负载权重模块;将训练后的基于LSTM的负载权重模块加载至服务器集群的负载均衡器中进行服务器负载的预测;负载均衡优化算法,接收到每一个服务器的负载置信度后,带权的负载均衡算法以当前置信度作为新权重,对当前请求进行服务器的分配操作并进行请求处理,同时记录下当前服务器集群的状态以便对后续的基于LSTM的负载权重模块进行更新。本发明模型的参数量较小,提高运算的速度,提升了负载均衡算法的计算效率。

权利要求 :

1.基于长短期记忆网络的服务器负载均衡优化方法,其特征在于,包括以下步骤:S1,采集服务器集群工作周期一个月的数据作为基于LSTM的负载权重模块的训练数据,训练数据分为两个部分:将第一个部分数据进行向量化作为训练数据的主体,第二部分数据则作为训练标签;

对长短期记忆网络进行多轮训练,每次训练后对模型的参数进行微调来学习服务器之间的差异,最后得到基于LSTM的负载权重模块;

所述的训练数据分为两个部分:

第一个部分:每一次进行用户请求时各个服务器的状态和当前请求的用户信息;

第二个部分:每一个用户请求的服务器分配结果;

S2,将训练后的基于LSTM的负载权重模块加载至服务器集群的负载均衡器中进行服务器负载的预测;

每当服务器集群接收到一个新的用户请求,负载均衡器先对用户请求进行向量化生成用户特征,再读取当前的集群中每一个服务器状态并进行向量化,将所有服务器的状态向量加权平均得到整个集群的集群特征;将用户特征和集群特征进行拼接得到负载均衡器中的基于LSTM的负载权重模块的输入,经过该模块的三种门结构计算得到当前集群中每一个服务器的负载置信度并输出给负载均衡器的第二组成部分:基于权重置信度的负载均衡优化算法;

S3,负载均衡优化算法,接收到每一个服务器的负载置信度后,带权的负载均衡算法会以负载置信度作为权重的参考数值,对当前请求进行服务器的分配操作并进行请求处理,同时记录下当前服务器集群的状态以便对后续的基于LSTM的负载权重模块进行更新。

2.根据权利要求1所述的基于长短期记忆网络的服务器负载均衡优化方法,其特征在于,S2中,所述的三种门结构,分别为遗忘门、更新门、输出门。

3.根据权利要求1所述的基于长短期记忆网络的服务器负载均衡优化方法,其特征在于,S3中,所述的负载均衡优化算法,选择多种带权的负载均衡算法。

说明书 :

基于长短期记忆网络的服务器负载均衡优化方法

技术领域

[0001] 本发明属于网络的服务器技术领域,具体涉及一种基于长短期记忆网络的服务器负载均衡优化方法。

背景技术

[0002] 在当今的互联网环境中,由于网络用户的急剧增加,对于网络应用的访问请求也在急剧增加,这也导致了后端服务器处理网络请求的压力骤增。对各互联网企业的服务器集群在短时间内处理超大量的网络请求的能力带来了极大的考验。因此,如何让后端服务器既可以处理日常的服务请求,又能够处理上述短时间内的大量网络请求的高并发情况,提高服务质量是一个值得研究的问题。
[0003] 通常来说,单一服务器的请求处理能力有限。因此,要处理数量大,并发量大的请求最简单有效的解决方案是通过增加服务器的数量,这也是诸多互联网公司的普遍使用的最初级的方法,将多个服务器组合在一起形成服务器集群系统为大量用户提供服务,但是在用户角度所观察到仍然是“一台”服务器在提供服务。在解决了服务器数量的限制后,又会带来新的问题。当一个新的用户请求到来时,应该由集群中的哪一个服务器来处理该请求。合理的方法应该是让每一个服务器所处理的请求大致相等,即所负载的压力较为平均,才能保证整个服务器集群处于一个稳定的工作状态。由一个中枢系统(负载均衡器)决定用户请求发送给某一个服务器以保证集群的稳定、高效运行的技术称为负载均衡技术。
[0004] 传统的负载均衡技术主要分为两类:静态负载均衡和动态负载均衡。静态的负载均衡策略是不随当前服务器状态而改变的,例如:轮询算法(RR)、加权轮询算法(WRR)、源地址哈希法算法等等。轮询算法假定每一个服务器的处理能力均相同,将用户的请求依次的分发给每一个服务器,从第一个服务器开始,到最后一个结束,然后开始循环,实现方法较为简单,合适于用户请求的时间间隔较为平均且软硬件配置相同的服务器集群。由于现实中的服务器很难做到在软硬件设置上的完全一致,不同的服务器往往处理不同的业务需求。加权轮询算法则为了解决这一问题,根据每一个服务器的请求处理能力,为每一个服务器赋予了相应的权重。当多个请求到来时,权重较高的服务器会被分配较多请求。加权轮询算法的核心是生成一个服务器的序列,序列中元素的个数应等于服务器的总数,每次请求来临时,会按照该序列依次赋予不同的服务器请求,问题是每一个服务器的性能差异很难准确的预估,这也是负载均衡方法中普遍存在的问题。源地址哈希法的思想本质来源于常见的哈希算法,将用户请求的IP地址经过哈希函数得到相应的哈希值,并将其对服务器的数量取模得到相应的应当赋予的服务器的序号。由此可以发现,对于同一用户所发起的请求,源地址哈希发总是将请求分配到同一服务器节点进行处理。
[0005] 对于轮询算法来说,没有考虑服务器之间的性能差异,整个集群的性能会受到性能较差的服务器的限制,而且如果用户请求在时间上分布不均匀也会导致集群的负载分布不均。对于加权轮询算法,每一个服务器的性能无法被精确的估计,因此每一个服务器的权重无法进行动态的调整,一旦某个服务器出现故障,很容易造成负载不均的问题。
[0006] 源地址哈希算法在某一服务器节点出现故障时,会导致该节点的对应的用户请求均无法得到有效的处理。
[0007] 为了能够将服务器的状态引入负载均衡算法中,研究者们提出了动态的负载均衡算法,例如:最小连接数法(LC)、最快响应速度法、观察模式法。最小连接数法在每次用户请求到来时会对根据每一个服务器节点当前所处理的用户连接的情况,选取其中连接数最小的服务器来处理当前的请求,动态的维持每一个服务器所处理的请求数量相等。最快响应速度法是考虑不同服务器节点的响应时间,将响应时间短的服务节点分配更多的请求,响应时间长的节点分配更少的请求。而观察模式法是通过两个综合考虑上述两种指标,对服务器的响应时间和连接情况进行权衡,赋予不同服务器不同的权重。
[0008] 无论是最小连接数法还是最快响应速度法,均需要在请求来临时计算所有服务器的连接数和响应时间,会造成一定程度的延迟,而且仅靠连接数和响应时间也无法精准的反应当前集群的实时性能状态。

发明内容

[0009] 为了解决现有负载均衡算法无法准确的衡量服务器集群性能的问题,本发明提出使用长短期记忆网络的方法对服务器性能进行预测。由于服务器的工作性能会时刻发生变化,则使用具有一定参数量的神经网络模型对其进行学习,将服务器不同时刻的性能指标以特征的形式输入到网络中,利用神经网络的反馈机制得到下一时刻不同服务器的置信度,从而将服务器性能引入负载分配的考量中,缓解静态负载均衡方法的局限性。
[0010] 另外,为了解决动态负载均衡算法计算复杂度较高,无法合理的对负载节点进行请求分配的问题。本发明所提出的基于长短期记忆网络的负载均衡优化算法,通过累计前期的请求分配数据,将当前的服务器状态和请求同时作为网络的输入,利用GPU加速计算来缓解大量请求所带来的负载压力。
[0011] 具体技术方案为:
[0012] 基于长短期记忆网络的服务器负载均衡优化方法,通过现有的深度学习框架Pytorch以及对应的编程库实现。其中Pytorch主要使用以RNN为基础的深度学习模型等。
[0013] 具体步骤为:
[0014] S1,采集服务器集群工作周期一个月的数据作为基于LSTM的负载权重模块的训练数据,训练数据主要分为两个部分:
[0015] 第一个部分,每一次进行用户请求时各个服务器的状态(例如CPU占用率,内存占用率、当前网络带宽等)和当前请求的用户信息;
[0016] 第二个部分,每一个用户请求的服务器分配结果。
[0017] 将第一个部分数据进行向量化作为训练数据的主体,第二部分数据则作为训练标签。对长短期记忆网络进行多轮训练,每次训练后对模型的参数进行微调来学习服务器之间的差异,最后得到基于LSTM的负载权重模块。
[0018] S2,将训练后的基于LSTM的负载权重模块加载至服务器集群的负载均衡器中进行服务器负载的预测。每当服务器集群接收到一个新的用户请求,负载均衡器先对用户请求进行向量化生成用户特征,再读取当前的集群中每一个服务器状态并进行向量化,将所有服务器的状态向量加权平均得到整个集群的集群特征。将用户特征和集群特征进行拼接得到负载均衡器中的基于LSTM的负载权重模块的输入,经过该模块的三种门结构计算得到当前集群中每一个服务器的负载置信度并输出给负载均衡器的第二组成部分:基于权重置信度的负载均衡优化算法。
[0019] 三种门结构为遗忘门、更新门、输出门。
[0020] S3,负载均衡优化算法接收到每一个服务器的负载置信度后,带权的负载均衡算法会以负载置信度作为权重的参考数值,对当前请求进行服务器的分配操作并进行请求处理,同时记录下当前服务器集群的状态以便对后续的基于LSTM的负载权重模块进行更新。
[0021] 负载均衡优化算法可以选择多种带权的负载均衡算法,例如加权轮询算法、加权最小连接数算法。
[0022] 本发明具体实现了如下方法并带来一定的现实收益:
[0023] 1.本发明实现了一种利用LSTM更为精确的预估服务器间性能差异的方法,对传统的负载均衡算法起到了一定的优化效果
[0024] 2.模型的参数量较小,能够提高运算的速度,由于可以使用GPU加速进行计算,进一步提升了负载均衡算法的计算效率。
[0025] 3.随着数据量的不断累积,可以对模型进行动态的更新。

附图说明

[0026] 图1为本发明的框架图;
[0027] 图2为本发明的流程图。

具体实施方式

[0028] 结合实施例说明本发明的具体技术方案。
[0029] 如图1所示,基于LSTM的服务器负载均衡优化方法框架,流程图如图2所示:
[0030] 具体步骤为:
[0031] S1,采集服务器集群工作周期一个月的数据作为基于LSTM的负载权重模块的训练数据,训练数据主要分为两个部分:第一个部分,每一次进行用户请求时各个服务器的状态(例如CPU占用率,内存占用率、当前网络带宽等)和当前请求的用户信息;第二个部分,每一个用户请求的服务器分配结果。将第一个部分数据进行向量化作为训练数据的主体,第二部分数据则作为训练标签。对长短期记忆网络进行多轮训练,每次训练后对模型的参数进行微调来学习服务器之间的差异,最后得到基于LSTM的负载权重模块。
[0032] S2,将训练后的基于LSTM的负载权重模块加载至服务器集群的负载均衡器中进行服务器负载的预测。每当服务器集群接收到一个新的用户请求,负载均衡器先对用户请求进行向量化生成用户特征,再读取当前的集群中每一个服务器状态并进行向量化,将所有服务器的状态向量加权平均得到整个集群的集群特征。将用户特征和集群特征进行拼接得到负载均衡器中的基于LSTM的负载权重模块的输入,经过该模块的三种门结构(遗忘门、更新门、输出门)计算得到当前集群中每一个服务器的负载置信度并输出给负载均衡器的第二组成部分:基于权重置信度的负载均衡优化算法。
[0033] S3,负载均衡优化算法接收到每一个服务器的负载置信度后,带权的负载均衡算法会以负载置信度作为权重的参考数值,对当前请求进行服务器的分配操作并进行请求处理,同时记录下当前服务器集群的状态以便对后续的基于LSTM的负载权重模块进行更新。
[0034] 最后,本发明使用Httperf、Autobench性能测试工具来模拟多个用户对服务器进行大量的访问操作,在较为真实的系统压力环境下,才能得到有效性能测试指标。测试工具对服务器发送多组不同数量的并发请求数据进行测试,并在实验中逐步的增加并发量的数量,总共进行时10轮测试并取平均值作为最终的结果。对比方法由轮询算法、加权轮询算法、最小连接数法、最快响应速度法,观察模式法。最后计算集群的响应时间。
[0035] 表1:响应时间实验结果
[0036]
[0037]
[0038] 实验结果如表1所示,由表中可以观察到使用LSTM优化后的负载均衡算法在响应时间中均有一定程度的缩减,随着并发数的增大,缩减的效果逐渐的增加。相比于其他算法,神经网络更能精准的利用服务器节点的性能,提高系统的整体稳定。