发明内容
为了解决上述问题,本发明提供了一种多模块负荷分配方法及装置,综合了上述两种传统负荷分配方法,取两者之所长,既使得负荷能够平均分配,又满足了号码归属模块的要求。
本发明的一个方面提供了一种多模块负荷分配方法,包括以下步骤:步骤S102,将负荷的数量转换成整数,并用所述整数对预设数值求余;步骤S104,将所得到的余数分配给所述多模块中的指定数量的模块节点;以及步骤S106,根据分配给所述不同的模块节点的余数,将所述号码分配给不同的模块节点。
根据本发明的一个方面,预定数值是由期望的分配精确度决定的,其中,所述预定数值越大,则分配的精确度越高。
另外,根据本发明的一个方面,在步骤S104中,将相邻的余数分配给不同的所述模块节点中。
本发明的另一方面还提供了一种多模块负荷分配装置,其包括:求余单元,用于将负荷的数量转换成整数,并用所述整数对预设数值求余;余数分配单元,用于将所得到的余数分配给所述多模块中的指定数量的模块节点;以及负荷分配单元,用于根据分配给所述不同的模块节点的余数,将所述负荷分配给不同的模块节点。
根据本发明的另一方面,预定数值是由期望的分配精确度决定的,其中,所述预定数值越大,则分配的精确度越高。
另外,根据本发明的另一方面,在所述余数分配单元中,将相邻的余数分配给不同的所述模块节点中。
如上所述,可以看出本发明实现了以下技术效果:根据模块的实际处理能力,可以灵活配置模值以及各处理模块的负荷;即使在大量号码分发的情况下,各模块节点处理负荷比例可以与配置比例一致,而按照号段归属不同的模块进行负荷分担的负荷分配方法则不能做到;某个号码还是永久归属唯一的处理模块;按照轮询的负荷分担方法则不能做到;以及当期望模块节点负荷调整或者模块节点增加减少的时候,调整也很方便快捷。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是根据本发明的多模块负荷分配方法的流程图,以下将参照图1所示的步骤大致描述本发明。如图1所示,该方法包括以下步骤:
步骤S102,将负荷的数量转换成整数,并用所述整数对预设数值求余;
步骤S104,将所得到的余数分配给所述多模块中的指定数量的模块节点;以及
步骤S106,根据分配给所述不同的模块节点的余数,将所述号码分配给不同的模块节点。
从上述步骤可以看出,本发明的分配机制如下:首先把号码(或号码的一部分)转化成一个整数,然后用该整数对一个设定的数值(模值)求余,再根据余数把用户分配给不同的模块节点。余数数目的多寡决定用户分配的精细度,模值越大,在不同节点间可调整的余数越多,业务细分比例越精细。
一般来说,某一处理模块分配的余数越多,归属的用户也越多,承担的业务负荷也越大。当其他实体提交消息到处理模块时,根据按模分配机制将消息发送到处理模块上。
这个用户归属模块节点的确定机制是简单的、直接和明确的;同时即使在大量号码分发的情况下各模块节点处理负荷比例可以做到与配置比例一致。
以下将以通信领域中的短消息系统为例更详细地介绍上述思想。如表1所示,当要求模块节点负荷分担平均分配时,某局A现有3个模块节点(140,141,142),要求各节点负荷相等。
其实现方法是:取模值为3;将余数0分配给140,余数1分配给141,余数2分配给142。则140节点分得3334个用户,节点141和142各分得3333个用户,是一种非常均匀的分配。余数分配及用户数如表1。
表1
模块号 | 分发余数值 | 用户数(/10000) |
140 | 0 | 3334 |
141 | 1 | 3333 |
142 | 2 | 3333 |
当要求模块节点负荷调整时,考虑到随着业务的增长,可能增加一个节点143,或者期望略微调节一部分用户到某一节点上,可以采用3*4=12为模值,余数分配及用户数如表2。
表2
模块号 | 分发余数值 | 用户数(/10000) |
140 | 0,3,6,9 | 834+834+833+833=3334 |
141 | 1,4,7,10 | 834+833+833+833=3333 |
142 | 2,5,8,11 | 834+833+833+833=3333 |
当要求增加模块节点分担负荷时,如当增加一个模块节点143时,仅需要把余数3、7、11归属于143节点,则调节后余数分配如表3。
这样的调节简单、方便,并且保证了原来相当一部分用户归属节点保持不变。
表3
模块号 | 分发余数值 | 用户数(/10000) |
140 | 0,6,9 | 834+833+833=2500 |
141 | 1,4,10 | 834+833+833=2500 |
142 | 2,5,8 | 834+833+833=2500 |
143 | 3,7,11 | 834+833+833=2500 |
如表4所示,当要求模块负荷分担按照一定比例时:某局B现有4个模块节点(140,141,142,143),各节点承担负荷的比例分别为:140-1/12,141-1/6,142-1/3,143-5/12。
若采用模值为12,则只需要把表3中的余数按照上述比例分配到对应的模块节点。若希望微调的用户比例不是1/12,而是希望更小,则模值可以是24,36...,相应微调的用户比例为1/24,1/36...。若考虑到可能增加一个模块节点,则模值为5*12=60。模值为24的余数分配表如表4。
从表4中还可以看出,在分配余数值时,尽量把相邻余数分配到不同的节点中,以减少SP提交大号段时,连续目的用户的消息在瞬时都归属于同一个模块节点。
表4
模块号 | 分发余数值 | 用户数(/10000) |
140 | 0,7 | 417*2=834 |
141 | 1,4,8,15 | 417*4=1668 |
142 | 2,5,9,11,13,16,18,20 | 417*5+416*3=3333 |
143 | 3,6,10,12,14,17,19,21,22,23 | 417*5+416*5=4165 |
在短信息实际应用中,MDN和MIN都可以做为负荷分担的号码。以下将以MDN和MIN两种情况为例,参照图2及图3所示的实施例,详细介绍本发明的实施方式。
1.根据MDN号码取模分配节点
图2是在ZXSC100现场采用多模块负荷分配方法的MDN号码的结构示意图,其中,以E.164和联通CDMA网络技术体制为例来说明MDN号码的结构。
如图2所示,CC是国家码(中国使用的是86);MAC是移动接入码,一种联通本网采用的网号方案(为133);H0H1H2H3是HLR识别码,由联通总部统一分配;ABCD是移动用户号,由各HLR自行分配。
另外,H0H1H2由总部统一分配到各省,H3由各省分配到本地网。即在短消息各局(负责管理本省的用户)中,真正用于分配用户归属节点的有意义的号码为H3ABCD五位数字。
在国外,MDN号码格式不一定采用E.164格式,但用于计算余数的号码有效位数不会比国内号码更长。
选取不同号码位数长度计算可能产生相同的模值、不同的余数结果,不过对于均分号码的影响不大。
根据ZXSC100在现场应用的经验,取用户MDN号码中用于计算余数的数字长度(从号码末尾开始)为固定的9位数字,不足9位的取号码全部。
2.根据MIN号码取模分配节点
图3是在ZXSC100现场采用多模块负荷分配方法的MIN号码的结构示意图,其中,以E.212和联通CDMA网络技术体制为例,联通MIN号码的构成因长城网新老用户略有不同。对于新用户,MIN使用联通获得的IRM号码资源,首先使用0910000000到0949999999号码段。MIN的号码结构如图3所示。
其中,为了便于管理,分配M0M1M2M3时与MDN的H0H1H2H3同时分配,两者有一定的对应关系;ABCD是用户号,可以根据MDN号码中的ABCD按一定方式扰码得到,扰码方式由移动、联通总部定义。
同时,由于换卡等业务操作带来号码的移植,MDN和MIN号码也不能认为两者的用户号码是相等的。则有必要按用户MIN号码取模分配归属的模块节点。
目前MIN号码(41D协议)定长为10位。ZXSC100对于用户MIN号码中用于计算余数的数字长度(从号码末尾开始)取固定的9位数字。
图4是根据本发明的多模块负荷分配装置400的框图。如图4所示,该装置包括:求余单元402,用于将负荷的数量转换成整数,并用所述整数对预设数值求余;余数分配单元404,用于将所得到的余数分配给所述多模块中的指定数量的模块节点;以及负荷分配单元406,用于根据分配给所述不同的模块节点的余数,将所述负荷分配给不同的模块节点。
预定数值是由期望的分配精确度决定的,其中,所述预定数值越大,则分配的精确度越高。
在所述余数分配单元404中,将相邻的余数分配给不同的所述模块节点中。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。