一种动态周期的媒体服务器负载均衡算法制造技术

技术编号:24455123 阅读:19 留言:0更新日期:2020-06-10 15:19
一种动态周期的媒体服务器负载均衡算法涉及服务器集群负载均衡技术的算法领域。本方法包括步骤如下:(1)收集服务器节点的负载信息,进行加权平均,计算出每个服务器节点的总负载;(2)根据负载参数动态调整周期值,实现周期随负载变化的动态更新;(3)自定义负载均衡算法模块,实现加权一致性哈希算法;通过模拟退火算法动态调整加权一致性哈希算法的权值向量。本发明专利技术提高了权值更新的效率,实现了实时性负载均衡,同时保持了服务器集群的稳定性和用户session一致性。

A dynamic period load balancing algorithm for media server

【技术实现步骤摘要】
一种动态周期的媒体服务器负载均衡算法
本专利技术涉及服务器集群负载均衡技术的算法领域,特别涉及一种基于加权一致性哈希算法的改进负载均衡算法。
技术介绍
随着互联网技术的普及和发展,互联网用户快速增加,同时新媒体不断涌现,更多的人开始使用互联网来观看视频或直播、进行网络会议、视频互动等。传统视频直播和会议软件采用C/S架构,近年来随着以HTML5为代表的Web技术的高速发展,基于Web浏览器的B/S架构直播日渐兴起。WebRTC(WebReal-TimeCommunication,网页实时通信)是一种不必使用插件就可以在浏览器之间进行实时通信的开源技术.目前大多数主流浏览器(例如Chrome、Firefox、Safari等)都已支持WebRTC功能,WebRTC建立实时通信主要包括两个步骤:信令交互和媒体传输。信令交互方面开发者可以根据需要选用合适的协议(JSON、SIP等);媒体传输常用P2P方式传输媒体流,当用户量较高而P2P不能满足并发需求时,则采用媒体服务器转发方式扩展并发量。KurentoMediaServer是一个开源的WebRTC媒体服务器,提供了一系列API简化WebRTC应用程序开发流程。单台Kurento媒体服务器满足实时通信要求的最大并发量是175,当用户量超过175时,就会出现明显的卡顿现象。为了提高并发量,必须采取媒体服务器集群的方式,在现有的服务器集群方案中,常用Nginx、LVS等作为负载均衡器分配用户请求到后台服务器。其中Nginx中自带的经典负载均衡算法有轮询法(RoundRobin)、基于ip的哈希法(IP_hash)、基于url的哈希法(url_hash)、最小响应时间法(fair)等,前4种算法都可根据服务器节点的处理能力而对服务器节点分配不同权值,进行静态加权或动态加权。静态加权以服务器处理能力固定权值,当并发量较高时,服务器节点的实时剩余负载能力并不能以初始权值来判断,可能会导致负载分配的不均衡。动态分配权值算法一般以任务请求数、CPU利用率、内存利用率、带宽利用率和其他参数等作为负载参数,每个固定周期读取当前服务器节点负载,综合计算后根据节点总负载量来实时分配权值,具有较好的负载均衡能力,但是也存在着一定的不足,比如当瞬时负载较高时,用户请求会大量分配给权值较高的服务器,降低该服务器节点的处理能力,但因为未达到周期值,服务器权值并未更新,该服务器节点依然大量接收请求,无法满足实时性负载均衡的需求。
技术实现思路
为了解决存在的上述问题,本专利技术提供了一种动态周期的加权一致性哈希的负载均衡改进算法,利用二次指数平滑法,通过请求量的历史数据,预测下个周期的任务请求量,从而计算下一个周期的周期值。此方法是在Nginx负载均衡器自带的负载算法基础上,实现加权一致性哈希算法,将权值映射为哈希环中虚拟节点的个数,通过模拟退火算法来动态调整,能够满足用户将同群组客户端转发到同一台服务器节点上,保持session一致性的需求。为了实现以上目的,本专利技术主要通过以下技术方案实现:一种动态周期的媒体服务器负载均衡算法,其特点是,包括如下步骤:(1)收集服务器节点的初始处理能力,参数包括服务器的CPU、内存、带宽。计算出节点的初始权重K0,初始化负载均衡服务;(2)每个周期内,通过负载均衡器收集服务器节点的负载信息,参数包括CPU利用率、内存利用率、带宽利用率,任务请求数;(3)根据步骤(2)中收集到的负载信息,进行加权平均,计算出每个服务器节点的总负载L(i),其中i为当前节点,取值为1-N,N是服务器节点总个数;(4)采用二次指数平滑法,以任务请求数作为负载参数,通过预测下个周期的并发量,来动态调整周期值:二次指数平滑法是将历史数据进行加权平均,预测未来结果,距离越近,影响权重越高。它拥有计算简单、样本要求量少、结果稳定等优点。为避免计算过长影响延迟,取最近的前5个周期内每秒任务请求数作为样本,对5个数据依次进行平滑,利用二次指数平滑模型预测出下个周期的结果。根据该预测请求量,计算下个周期的周期长度。(5)Nginx中实现自定义负载均衡算法模块,实现加权一致性哈希算法:一致性哈希算法是将服务器节点通过哈希函数映射到一个值域为[0,232–1]的环上,同时将请求也映射到环上,顺时针寻找最近的服务器节点。一致性哈希算法添加或删除节点时,只影响前面或后面的节点,不影响整个集群的稳定性。一致性哈希算法可通过在哈希环上添加虚拟节点的方式来配置节点的权重,权重高的服务器可配置多个虚拟节点。通过Consul和Nginx中的开源模块nginx-upsync-module来实现权重的动态调整,nginx-upsync-module是Nginx实现动态配置的第三方模块,通过拉取Consul上游数据,实现无需重新加载nginx.conf,即可动态修改配置中后端服务器属性(weight,max_fails,fail_timeout等)。利用http命令在服务端将权重动态写入consul配置,Nginx周期性从consul中读取配置信息来动态改变当前权重;(6)动态调整加权一致性哈希算法的权值向量,更新算法中的服务器节点权值:动态权值算法采用经典启发式算法模拟退火算法,模拟退火算法是从一足够高的初始温度出发,逐渐降温,在初始解的基础上扰动产生新解,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,有效避免陷入局部最优并最终趋于全局最优。其中解向量为权值向量K0,目标函数为服务器集群中的节点总负载之和L_all;算法的输入值为初始解、初始温度、每个温度下的迭代次数、终止温度、阈值,输出值为使目标函数最低的新解。(7)Nginx负载均衡器根据加权一致性哈希算法寻找后端可用服务器节点,将任务请求分配到可用节点进行并发处理。本专利技术与现有技术相比,具有以下优点:本专利技术实现了周期的动态变化,相比目前的固定周期动态权值算法,提高了权值更新的效率。以任务请求量的历史数据作为样本,利用时序预测算法二次指数平滑法,有效预测下个周期的负载变化,实现了服务器集群对实时负载状况的良好自适应调整。本专利技术实现的加权一致性哈希算法是基于传统哈希算法的改进,添加或删除节点时,只影响前面或后面的节点,不影响整个集群的稳定性。做到了将同一个IP地址的请求转发到同一台服务器节点上,保持session一致性的同时,可随时修改服务器节点的个数。本专利技术的动态权值算法不同于只根据负载信息计算动态权值,而是采用启发式算法模拟退火,输入权值向量作为初始解,求得能使服务器集群总负载量降低的新解,并概率性跳出局部最优解,迭代降温并最终趋于全局最优。实现了服务器集群良好的负载均衡。附图说明图1是本专利技术实施例中的负载均衡总步骤流程图;图2是本专利技术实施例中的动态权值调整算法流程图;具体实施方式初始化负载均衡服务:读取服务器节点配置文件,将服务器的CPU、内本文档来自技高网
...

【技术保护点】
1.一种动态周期的媒体服务器负载均衡算法,其特征在于,包括如下步骤:/n(1)收集服务器节点的初始处理能力,参数包括服务器的CPU、内存、带宽;计算出节点的初始权重K0,初始化负载均衡服务;/n(2)每个周期内,通过负载均衡器收集服务器节点的负载信息,参数包括包括CPU利用率、内存利用率、带宽利用率、任务请求数;/n(3)根据步骤(2)中收集到的负载信息,进行加权平均,节点权值之和为1,计算出每个服务器节点的总负载L(i),其中i为当前节点,取值为1-N,N是服务器节点总个数;/n(4)根据负载参数动态调整周期值,实现周期随负载变化的动态更新;/n(5)Nginx中实现自定义负载均衡算法模块,实现加权一致性哈希算法;/n(6)动态调整加权一致性哈希算法的权值向量,更新算法中的服务器节点权值;/n(7)Nginx负载均衡器根据加权一致性哈希算法寻找后端可用服务器节点,将任务请求分配到可用节点进行并发处理。/n

【技术特征摘要】
1.一种动态周期的媒体服务器负载均衡算法,其特征在于,包括如下步骤:
(1)收集服务器节点的初始处理能力,参数包括服务器的CPU、内存、带宽;计算出节点的初始权重K0,初始化负载均衡服务;
(2)每个周期内,通过负载均衡器收集服务器节点的负载信息,参数包括包括CPU利用率、内存利用率、带宽利用率、任务请求数;
(3)根据步骤(2)中收集到的负载信息,进行加权平均,节点权值之和为1,计算出每个服务器节点的总负载L(i),其中i为当前节点,取值为1-N,N是服务器节点总个数;
(4)根据负载参数动态调整周期值,实现周期随负载变化的动态更新;
(5)Nginx中实现自定义负载均衡算法模块,实现加权一致性哈希算法;
(6)动态调整加权一致性哈希算法的权值向量,更新算法中的服务器节点权值;
(7)Nginx负载均衡器根据加权一致性哈希算法寻找后端可用服务器节点,将任务请求分配到可用节点进行并发处理。


2.根据权利要求1所述的一种动态周期的媒体服务器负载均衡算法,其特征在于,所述步骤(4)中,周期值的调整方法为:利用二次指数平滑法,通过每秒任务请求数的历史数据,预测下个周期的每秒任务请求数,从而计算下一个周期的周期长度,当预测请求数较高时,周期缩短;预测请求数较低时,周期延长;所述的周期长度pt+1为:
其中周期长度pt+1以初始周期8s为基础,取值范围为[6,15]以内的整数,非整数向下取整,低于6s时取值为6s,高于15s时取值为15s;Y为理想并发量,Yt+1为通过二次指数平滑模型预测出的周期t+1内的请求数。


3.根据权利要求2所述的一种动态周期的媒体服务器负载均衡算法,其特征在于,预测请求数Yt+1的计算过程为:









Yt+1=at+bt
其中是周期t时任务请求数的一次平滑值;yt是周期t时任务请求量的实际值;是上个周期的一次平滑值,初始值取为前两个数据平均值;A是平滑常数,取值为0.6;

是周期t时任务请求数的二次平滑值;是上个周期的二次平滑值,初始值取为前两个数据平均值,at和bt为二次平滑模型的参数变量。


4.根据权利要求1所述的一种动态周期的媒体服务器负载均衡算法,其特征在于,所述步...

【专利技术属性】
技术研发人员:王晓彤李娟
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1