一种RCS负载均衡方法及装置与流程

文档序号:16686177发布日期:2019-01-22 18:20阅读:283来源:国知局
一种RCS负载均衡方法及装置与流程

本发明涉及互联网通信中的富通信业务套件(richcommunicationsuite,rcs)业务领域,特别涉及一种rcs负载均衡方法及装置。



背景技术:

随着互联网通信领域的扩展,以及智能手机的普及,传统的短消息业务已经不能满足用户日益多样化的需求。用户不但希望通过短信文本互相通信,还希望可以通过更加丰富的多媒体平台来实现通信互联。

rcs是一种集语音、即时消息、文件传输、内容共享、呈现、位置服务等多种通信方式于一体的融合通信服务。rcs对现有的语音和短信业务进行了扩展,将呈现、即时聊天、群组聊天、文件传输、视频共享等功能进行了集成。满足运营商的快速提供互联网时代的融合通信及社交服务的需求。

由于rcs系统承载了更多的通信方式,业务量、网络流量、业务处理逻辑复杂度等都大幅增加,并且用户规模也达到上亿级,使用单节点模式无法满足这么大的用户量和业务量,因此必须采用多节点、分布式的系统,多个节点并行承担业务,而采用多节点模式必然面临多个节点之间的负载均衡问题。现有的负载均衡系统,要么采用随机轮发的方式,要么采用一致性hash算法发送到各个业务节点。这两种方式都存在一定的缺陷,若节点是异构的,各个节点的处理能力不一致,采用上述两种方式分发消息会造成系统资源不足的节点处理能力满负荷运转,而系统资源充足的节点,处理能力完全没有利用起来。



技术实现要素:

本发明实施例提供的一种rcs负载均衡方法及装置,解决各个rcs业务节点之间的负载均衡问题。

根据本发明实施例提供的一种rcs负载均衡方法,包括:

接收多个富通信业务套件rcs业务节点发送的当前负荷值;

根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值;

根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡。

优选地,所述根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值包括:

根据所述rcs业务节点的在前负荷值和所述当前负荷值,计算当前一次移动平均值;

根据所述rcs业务节点的在前一次移动平均值和所述当前一次移动平均值,计算当前二次移动平均值;

根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值,计算所述rcs业务节点的负荷预测值。

优选地,优选地,所述根据所述rcs业务节点的在前负荷值和所述当前负荷值,计算当前一次移动平均值包括:

获取当前时间粒度之前接收的所述rcs业务节点的连续n-1个在前负荷值,n为大于1的自然数;

计算所述rcs业务节点的所述当前负荷值和所述连续n-1个在前负荷值的平均值,作为所述rcs业务节点的当前一次移动平均值。

优选地,所述根据所述rcs业务节点的在前一次移动平均值和所述当前一次移动平均值,计算当前二次移动平均值包括:

获取当前时间粒度之前计算的所述rcs业务节点的连续n-1个在前一次移动平均值;

计算所述rcs业务节点的所述当前一次移动平均值和所述连续n-1个在前一次移动平均值的平均值,作为所述rcs业务节点的当前二次移动平均值。

优选地,所述根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值,计算所述rcs业务节点的负荷预测值包括:

根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值,计算所述rcs业务节点的当前时间粒度的负荷基础值和单位时间变化值;

根据所述rcs业务节点的当前时间粒度的负荷基础值和单位时间变化值,计算所述rcs业务节点的负荷预测值。

优选地,所述根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡包括:

根据每个所述rcs业务节点的负荷预测值与超负荷阈值的比较结果,确定负荷正常的rcs业务节点;

根据每个负荷正常的所述rcs业务节点的负荷预测值与超负荷阈值的差值,确定每个负荷正常的所述rcs业务节点的业务量承担比例;

按照每个负荷正常的所述rcs业务节点的业务量承担比例,向每个负荷正常的所述rcs业务节点分发业务。

根据本发明实施例提供的一种rcs负载均衡装置,包括:

接收模块,用于接收多个富通信业务套件rcs业务节点发送的当前负荷值;

预测模块,用于根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值;

均衡模块,用于根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡。

优选地,所述预测模块根据所述rcs业务节点的在前负荷值和所述当前负荷值,计算当前一次移动平均值,根据所述rcs业务节点的在前一次移动平均值和所述当前一次移动平均值,计算当前二次移动平均值,并根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值,计算所述rcs业务节点的负荷预测值。

优选地,所述均衡模块根据每个所述rcs业务节点的负荷预测值与超负荷阈值的比较结果,确定负荷正常的rcs业务节点,根据每个负荷正常的所述rcs业务节点的负荷预测值与超负荷阈值的差值,确定每个负荷正常的所述rcs业务节点的业务量承担比例,按照每个负荷正常的所述rcs业务节点的业务量承担比例,向每个负荷正常的所述rcs业务节点分发业务。

根据本发明另一实施例提供的一种rcs负载均衡装置,包括:

处理器,用于接收多个富通信业务套件rcs业务节点发送的当前负荷值,根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值,并根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡;

存储器,用于存储供所述处理器执行的程序。

本发明实施例提供的技术方案具有如下有益效果:

本发明实施例通过动态预测各个rcs业务节点的负载情况,平衡各个rcs业务节点之间的负荷分担,从而合理分配系统资源。

附图说明

图1是本发明实施例提供的rcs负载均衡方法流程图;

图2是本发明实施例提供的rcs负载均衡装置框图;

图3是本发明实施例提供的rcs负载均衡系统的结构图;

图4是本发明实施例提供的rcs负载均衡的处理流程图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1是本发明实施例提供的rcs负载均衡方法流程图,如图1所示,步骤包括:

步骤s101:接收多个rcs业务节点发送的当前负荷值yt。

rcs业务节点的当前负荷值yt是rcs业务节点根据对当前时间粒度内的cpu占用率、内存占用率、网络吞吐量和业务量进行加权计算得到的。

步骤s102:根据每个所述rcs业务节点的在前负荷值和所述当前负荷值yt,确定每个所述rcs业务节点的负荷预测值。

步骤s102包括:

步骤s1021:根据所述rcs业务节点的在前负荷值和所述当前负荷值,计算当前一次移动平均值。具体地说,获取当前时间粒度之前接收的所述rcs业务节点的连续n-1个在前负荷值yt-1,…,yt-n+1,然后计算所述rcs业务节点的所述当前负荷值yt和所述连续n-1个在前负荷值yt-1,…,yt-n+1的平均值,作为所述rcs业务节点的当前一次移动平均值其中,n为大于1的自然数.

步骤s1022:根据所述rcs业务节点的在前一次移动平均值和所述当前一次移动平均值计算当前二次移动平均值具体地说,获取当前时间粒度之前计算的所述rcs业务节点的连续n-1个在前一次移动平均值并计算所述rcs业务节点的所述当前一次移动平均值和所述连续n-1个在前一次移动平均值的平均值,作为所述rcs业务节点的当前二次移动平均值

步骤s1023:根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值计算所述rcs业务节点的负荷预测值ft+t。具体地说,根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值,计算所述rcs业务节点的当前时间粒度的负荷基础值(即第t期现象的基础水平)at和单位时间变化值(即第t期现象的单位时间变化量)bt,并根据所述rcs业务节点的当前时间粒度的负荷基础值at和单位时间变化值bt,计算所述rcs业务节点的负荷预测值ft+t。其中,t为未来预测的期数,例如t=1时,ft+1是下一时间粒度的负荷预测值。

步骤s103:根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡。

步骤s103包括:

步骤s1031:根据每个所述rcs业务节点的负荷预测值与超负荷阈值的比较结果,确定负荷正常的rcs业务节点。具体地说,若所述rcs业务节点的负荷预测值小于超负荷阈值,则该rcs业务节点是负荷正常的节点,即正常负荷节点。

步骤s1032:根据每个负荷正常的所述rcs业务节点的负荷预测值与超负荷阈值的差值di,确定每个负荷正常的所述rcs业务节点的业务量承担比例,该比例为每个负荷正常的rcs业务节点的di值与所有负荷正常的rcs业务节点di值之和的比值。

步骤s1033:按照每个负荷正常的所述rcs业务节点的业务量承担比例,向每个负荷正常的所述rcs业务节点分发业务。

本发明实施例基于线性二次移动平均法进行rcs负载均衡,具体地说,根据各个节点的负荷历史状态,预测下一个时间粒度的各个节点负荷状态,并据此实现各个节点间的负载均衡。

在执行步骤s103之后,还包括:若负荷正常的rcs业务节点的数量低于数量阈值,则进行扩容处理,即通知dcf服务模块增加rcs业务节点;或者,若所有rcs业务节点的负荷预测值均低于缩容负荷门限,则进行缩容处理,即通知dcf服务模块减少rcs业务节点。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,包括步骤s101至步骤s103。进一步说,本发明还可以提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时至少实现以下步骤:接收多个rcs业务节点发送的当前负荷值;根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值;根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡。其中,所述的存储介质可以包括rom/ram、磁碟、光盘、u盘。

图2是本发明实施例提供的rcs负载均衡装置框图,如图2所示,包括:

接收模块21,用于接收多个富通信业务套件rcs业务节点发送的当前负荷值。

预测模块22,用于根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值。具体地说,预测模块22根据所述rcs业务节点的在前负荷值和所述当前负荷值,计算当前一次移动平均值,根据所述rcs业务节点的在前一次移动平均值和所述当前一次移动平均值,计算当前二次移动平均值,并根据所述rcs业务节点的所述当前一次移动平均值和所述当前二次移动平均值,计算所述rcs业务节点的负荷预测值。

均衡模块23,用于根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡。具体地说,均衡模块23根据每个所述rcs业务节点的负荷预测值与超负荷阈值的比较结果,确定负荷正常的rcs业务节点,根据每个负荷正常的所述rcs业务节点的负荷预测值与超负荷阈值的差值di,确定每个负荷正常的所述rcs业务节点的业务量承担比例,并按照每个负荷正常的所述rcs业务节点的业务量承担比例,向每个负荷正常的所述rcs业务节点分发业务。

本实施例提供一种rcs负载均衡装置,包括:

处理器,用于接收多个富通信业务套件rcs业务节点发送的当前负荷值,根据每个所述rcs业务节点的在前负荷值和所述当前负荷值,确定每个所述rcs业务节点的负荷预测值,并根据每个所述rcs业务节点的负荷预测值,对多个所述rcs业务节点进行负载均衡;

存储器,与所述处理器耦接,其上存储供所述处理器执行的程序。

图3是本发明实施例提供的rcs负载均衡系统的结构图,如图3所示,rcs负载均衡系统的组成包括如下几个模块:

sipproxy31:该模块负责sip协议的转换,将会话初始协议(sessioninitiationprotocol,sip)消息转换为内部消息,发送给负载均衡模块32;同时将负载均衡模块32转来的内部消息转换为sip标准消息,向外发送。

负载均衡模块32(实现图2各模块的功能):负责整个系统的负荷运算和负载均衡,主要有如下几个功能:

1.接收sipproxy31转换后的内部消息,分发给各个rcs业务节点(即rcs业务处理机)34;

2.将各个rcs业务节点34提交的内部消息转发给sipproxy31;

3.接收各个rcs业务节点34上报的系统负荷值;

4.估算各个rcs业务节点34未来的负荷预测值,并据此分配各个rcs业务节点34负载的业务量;

5.通知dcf服务模块33动态收缩或扩展rcs业务节点34。

dcf服务模块33:分布式节点管理模块,可以动态收缩或扩展rcs业务节点34。

rcs业务处理机34:rcs主要的业务承载模块,接收负载均衡模块32分发的内部消息,完成rcs的业务逻辑处理;同时需要计算本节点的负荷状态,并上报给负载均衡模块32。

本发明实施例基于线性二次移动平均法,实现rcs各个业务处理节点之间的负载均衡。随着rcs业务量的扩大,rcs业务处理需要采用多节点、分布式的部署方式来处理日益增加的业务量,而且各个业务处理节点的系统可能是异构的,性能和处理能力不同。此种情况下,如果采用随机,轮询或一致性hash的负载均衡算法,完全没有考虑各个节点实际的负荷状态和承载能力,则可能会造成各个rcs节点之间负载不均衡,处理能力小的节点满负荷运转,而处理能力强的节点负荷能力还绰绰有余。因此,必须根据各个节点实际的负荷状态来做负载均衡,这样就需要预测各个节点的下一个时间粒度的负荷状态。由于系统负荷状态是一段连续变化的过程,无法准确的预测各个节点下一秒的负荷状态,本发明实施例根据系统负荷的历史数据,采用预测算法,来估计节点未来的负荷状态,并据此进行各个节点间的负载均衡。

本发明实施例的rcs业务节点的负载均衡系统先收集各个节点的负荷状态(即负荷值或负荷状态综合值),负荷状态由如下几个参数综合得出:cpu占用率、内存占用率、网络吞吐量和业务量。

如果简单的根据上一秒的负荷状态来预测下一时间粒度的负荷状态,则系统出现负荷抖动时,即负荷瞬时出现大幅增加或大幅减低的情况下,不能准确预测下一时间粒度的负荷状态。而如果采用一次移动平均法,可以消除负荷抖动带来的预测误差,但是其求得的移动平均值存在滞后偏差,特别在某些特定时间段内,业务量的增长和减少趋势呈线性变化时,该预测值总是会落后于观察值数据的变化。而采用二次移动平均法,可以解决预测值滞后于实际观察值的矛盾,建立预测目标的线性时间关系数学模型,以求得预测值,适用于有明显业务量趋势变动的时间序列预测,同时还保留了一次移动平均法的优点。

二次移动平均法是对时间序列的一次移动平均值再进行第二次移动平均,利用一次移动平均值和二次移动平均值构成时间序列的最后一个数据为依据建立线性预测模型进行预测。

其计算公式如下:

公式1中,为第t期的一次移动平均值,yt为第t期的观察值,n是计算移动平均值的跨越期,为第t期的二次移动平均值。

在计算出一次移动平均值和二次移动平均值后,可以据此计算下一个时间粒度的负荷状态的预测值,其计算公式如下:

ft+t=at+btt公式3

其中,ft+t为预测值,t为未来预测的期数,at为截距,即第t期现象的基础水平,bt为斜率,即第t期现象的单位时间变化量。

at和bt的计算公式如下:

通过公式3计算出各个节点下一个时间粒度的负荷状态预测值(即负荷预测值),并根据该预测值,决定下一个时间粒度的业务分发的策略,具体如下:

如果节点的预测值超过超负荷阈值,则下一个时间粒度不向此节点发送消息;

如果节点的预测值低于超负荷阈值,则根据该预测值和超负荷阈值的差值,决定下一个时间粒度,该节点承担的业务量比例,按照比例向该节点分发业务量,该负荷承担的比例计算公式如下:

其中,ri为第i个业务节点的业务量分配比例,di为第i个业务节点负荷预测值和超负荷阈值的差值。根据该比例进行业务量的分发。

如果正常负荷节点的数量低于某个阈值,则通知dcf动态调起一个备用的业务处理机节点,参与业务负荷的分担。

如果一个时间段内所有节点的负荷都低于某个阈值,则通知dcf动态关闭一个业务处理机节点,将其转为备用状态,以节省系统资源占用。

图4是本发明实施例提供的rcs负载均衡的处理流程图,如图4所示,基于线性二次移动平均法的rcs负载均衡系统的处理流程包括:

步骤s401:负载均衡模块接收sipproxy模块转发的内部消息,并将其分发到各个rcs业务处理模块(即rcs业务处理机或rcs业务节点)。

步骤s402:rcs业务处理模块计算本节点当前时间粒度的系统负荷状态综合值(即当前负荷值或当前的系统负荷),负荷状态的计算主要由如下4个参数组成:cpu占用率、内存占用率、网络吞吐量和业务量。

rcs业务处理模块分别计算本时间粒度(即当前时间粒度)内上述参数的统计值,再按照一定的算法得到整个系统负荷状态的综合值。

步骤s403:rcs业务处理模块将计算出的系统负荷状态综合值,上报给负载均衡模块。

步骤s404:负载均衡模块根据业务上报的系统负荷状态,计算各个rcs业务处理机的一段时间跨度内的线性二次移动平均值。

首先根据公式1计算一次移动平均值,然后再根据公式2利用一次移动平均值计算二次移动平均值,其中计算涉及的跨越期由用户配置决定。

步骤s405:负载均衡模块根据计算出的一次移动平均值和二次移动平均值,结合公式3、公式4和公式5,得出每个rcs业务处理节点的下一个时间粒度的系统负荷预测值,由于仅仅预测一个时间粒度,所以公式3中的t设为1,而其中涉及的跨越期由用户配置决定。

步骤s406:判断每个节点的系统负荷预测值是否小于系统超负荷阈值,如果小于系统超负荷阈值,则该rcs业务处理节点下一个时间粒度可以接收消息,执行步骤s407;如果大于或等于系统超负荷阈值,则执行步骤s409,即下一个时间粒度,负载均衡模块不向该rcs业务处理节点分发消息。其中,系统超负荷阈值由用户配置决定。

步骤s407:计算每个rcs业务处理节点的消息分发比例,每个rcs业务处理节点的消息分发比例由系统负荷预测值根据公式6计算得出,在下一个时间粒度,负载均衡模块根据每个rcs业务处理节点的分发比例来发送消息。

步骤s408:负载均衡模块计算负荷正常的rcs业务处理机(即正常负荷节点)的数量,判断其在一段时间内是否都低于阈值,如果都低于阈值,则执行步骤s410,即通知dcf服务模块,要求其动态扩展一个备用的rcs业务处理机节点。其中,计算涉及的阈值由用户配置决定。

步骤s409:负载均衡模块判断在一段时间内是否所有rcs业务处理节点的负荷预测值都低于某个阈值,如果是则执行步骤s411,即通知dcf动态收缩一个rcs业务处理机节点,将其转为备用状态,否则结束流程。其中计算设计的阈值由用户配置决定。

其中步骤s409中用于确定缩容与否时采用的阈值小于步骤s406所述的超负荷阈值。

综上所述,本发明的实施例具有以下技术效果:

本发明实施例实现各个rcs业务节点间的负载均衡,使用线性二次移动平均法来动态预测各个节点的负载情况,负载均衡模块据此来平衡各个节点之间的负荷分担,以合理分配系统资源,并实现节点的动态扩展与收缩。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

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