前面学习了一些动态负载均衡算法,基本思想都是量化后端服务器的性能指标,分配指标权重,计算实时权重,然后动态改变nginx的权重来实现请求转发和处理,下面是一篇利用机器学习算法来预测某一个请求在各个服务器的请求响应时间,将该请求转发至响应时间最小的机器上,依次实现nginx高并发处理。
论文三
[1]陈大才. 基于Nginx的高并发访问服务器的研究与应用[D].中国科学院大学(中国科学院沈阳计算技术研究所),2018. |
影响高并发的因素分析:
单机性能 集群架构 网络层面 操作系统层面 数据库问题 中间件性能 扩展性问题 应用服务层面 负载均衡算法
通过对历史数据进行训练得到响应时间预测模型,来预测新请求的响应时间,根据每个服务器节点的预估响应时间将请求分配给具有最少
响应时间的服务器节点,从而提高集群中请求分配的均衡性,提高集群的效率。
算法流程图如下:
每个后端服务器的性能指标:
当前性能情况P 预估请求等待时间Tw 预估响应时间Rp
每个请求的衡量指标:
请求类型Action 请求开始时间Rstart 请求结束时间Rend 请求实际响应时间Rr = Rstart-Rend
响应时间预测模型:
性能P使用cpu,内存,磁盘,网络来衡量
机器学习算法使用朴素贝叶斯,决策树,支持向量机等
算法目标是估计请求的预估响应时间,分析请求响应时间的响应因素,即构建特征向量,然后利用机器学习算法来进行预测
作者的结果:
朴素贝叶斯:
决策树模型:
支持向量机:
动态均衡或者响应时间预测等一定要考虑算法本身的开销以及算法时间复杂度,如果算法运行太慢,那那就没有意义了。
论文四
[1]王利萍. 基于Nginx服务器集群负载均衡技术的研究与改进[D].山东大学,2015. |
动态自适应负载均衡算法
通过搜集大量的后端服务器集群中各服务器在最近一段时间处理请求的响应时间并进行数学分析,将各服务器处理响应时间的动态变化应用到后端服务器权值的动态计算当中,从而实现动态调整请求分配策略。
后端服务器集群:
初始权重为Wi
第i个服务器在最近n次的响应时间:
整个集群的响应时间:
服务器集群最后一次请求的平均处理时间
集群负载的平均方差:
第i个服务器的响应时间方差值,反映服务器Si的负载稳定情况,越小越稳定
实时权重的调整:
算法流程图:
作者测试的结果: