专利名称:计费服务器定时输出用户计费信息的方法
技术领域:
本发明涉及电信计费服务器,尤其涉及计费服务器计费信息定时输出的方法。
背景技术:
用户计费信息的输出是网络计费系统中很关键的一部分。尤其在大用户量的电信服务中,均对承担用户计费信息输出的计费服务器有很严格的要求。由于用户数量的巨大,如何提高计费服务器的性能就成为一个很重要的问题。
在常规的计费服务器中,主要采用以下三种方案输出用户计费信息1.定时输出所有用户的计费信息。
2.定时输出在同一秒开始计费的用户的计费信息。
3.由其它系统控制计费服务器输出用户计费信息。
方案1的缺点是,由于电信业务用户量极大,会造成在输出用户计费信息的时候产生系统工作高峰,不利于计费服务器的稳定运行。
方案2虽然在方案1的基础上有所改进,但是在大量用户同时开始计费的情况下仍然无法解决产生系统工作高峰的问题。
方案3虽然能解决前两个方案的问题,但缺点是与别的系统过度耦合。
发明内容
本发明是为了克服现有技术中的不足之处,提供一种能避免计费服务器输出计费信息时产生系统工作高峰的计费服务器定时输出用户计费信息的方法。
本发明通过下述技术方案实现一种计费服务器定时输出用户计费信息的方法,包括下述步骤(1)初始化操作设计费服务器总用户容量为N,计费服务器上所有的计费用户被放置在T个用户队列中,每个队列可容纳的用户最大数量为M,三者之间的关系为M*T>N;设计费服务器本秒指向的用户队列索引为P,所述P的值每过一秒后重新生成,新生成的值为(P+1)对T取余数,以实现队列以T秒为周期循环使用;(2)设一个用户计费信息输出单位时间为X秒,当该用户进入等待输出计费信息状态的时候,执行如下步骤a.计算用户放置队列索引的相对值OFFSET=P+X;b.计算用户放置队列索引的实际值POS的值为OFFSET对T取余数;c.检查队列POS中的用户数是否已经达到最大值;d.若队列POS中用户数未达到最大值,继续下面的步骤f;
e.若队列POS中的用户数已经达到最大值,将POS置为下一个队列,取POS的值为(POS+1)对T取余数,重复步骤c,直至找到最近的未满队列,设找到最近的未满队列的次数为n;f.计算用户还需被检测次数,所述用户被检测的次数的值ROUNDTRIP为X整除T得到的值;(3)计费服务器每秒钟对本秒指向的用户队列P中的所有单个用户进行检测,所述单个用户的检测包括下述步骤a.判断用户属性ROUNDTRIP是否大于零,如果大于零,则设置ROUNDTRIP=ROUNDTRIP-1,结束对该用户的检测;如果不大于零,则执行步骤b;b.输出用户计费信息;c.用户进入等待下一次输出计费信息状态。
本发明具有下述有益效果本发明的计费服务器定时输出用户计费信息的方法可以在用户大量集中开始计费时,均匀地将输出计费信息的分散到各个时间段中,从而避免系统工作高峰的出现,有效地提高计费服务器的用户容量和系统运行的稳定性。
图1为用户进入等待输出计费信息状态的流程图;图2为单个用户的检测步骤。
具体实施例方式
下面结合附图和具体实施例对本发明作进一步说明。设计费服务器总用户容量为N,计费服务器上所有的计费用户被放置在T个用户队列中,每个队列可容纳的用户最大数量为M。三者之间的关系为M*T>N。计费服务器本秒指向的用户队列索引为P。P的值每过一秒后重新生成,新生成的值为(P+1)对T取余数,此方法实现了队列以T秒为周期循环使用。
设一个用户计费信息输出单位时间为X秒。当该用户进入等待下一次输出计费信息状态的时候,须按照图1所示的步骤放置到相应的用户队列当中。步骤如下a.计算用户放置队列索引的相对值OFFSET=P+X。见图1步骤11。
b.计算用户放置队列索引的实际值POS的值为OFFSET对T取余数。见图1步骤12。
c.检查队列POS中的用户数是否已经达到最大值,见图1步骤13。若队列POS中用户数未达到最大值,继续下面的步骤d。若队列POS中的用户数已经达到最大值,将POS置为下一个队列,取POS的值为(POS+1)对T取余数,见图1步骤14。重复图1步骤13,直至找到最近的未满队列,设步骤14执行次数为n。
d.计算用户还需被检测次数后产生计费信息输出事件,次数的值ROUNDTRIP为X整除T得到的值。见图1步骤15。
按照以上步骤操作后,用户将在X+n秒后产生计费信息输出事件。
单个用户的检测步骤如图2所示,计费服务器每秒钟对本秒指向的用户队列P中的所有用户进行检测,当检测到有用户输出计费信息的事件发生时,输出该用户的计费信息。对单个用户的检测步骤如下a.若用户属性ROUNDTRIP大于零,设置ROUNDTRIP=ROUNDTRIP-1,结束对该用户的检测。反之继续以下步骤。
b.输出用户计费信息。
c.用户进入等待下一次输出计费信息状态。
下面举例说明本发明的计费服务器定时输出用户计费信息的方法。
例如,一个为拨号接入用户提供计费服务的计费服务器系统的最大用户容量为200,000用户,每秒钟系统最多可以输出的计费信息为200条,所有拨号接入用户产生计费信息的周期都为600秒。按照本发明的技术方案,在系统中设置1500个用户队列,每个队列最大可容纳的用户数量为200个。
首先,我们分析单个用户所经历的流程。设当前有用户A拨号接入成功,进入等待输出计费信息状态,用户队列数T为1500,当前的用户队列索引P为1400,用户产生计费信息的周期X为600。按照图1流程,执行以下步骤a.步骤11,计算用户放置队列索引的相对值OFFSET=P+X=2000;b.步骤12,计算用户放置队列索引的实际值POS的值为OFFSET对T取余数即为500;c.步骤13,检查队列POS(500)中的用户数是否已经达到最大值;d.若队列POS(500)中用户数未达到最大值,继续下面的步骤f;e.步骤14,若队列POS(500)中的用户数已经达到最大值,将POS置为下一个队列,取POS的值为(POS+1)对T取余数,重复步骤c,直至找到最近的未满队列,设找到最近的未满队列的次数为n;f.步骤15,计算用户还需被检测次数,所述用户被检测的次数的值ROUNDTRIP为X整除T得到的值即为0;以步骤c检查出POS(500)中用户数未达到最大值为例,则POS=500,n=0,那么在600秒后,队列POS(500)中的用户将被逐个检测。
单个用户的检测步骤执行图2的流程,当对用户A进行检测时,发现用户A的ROUNDTRIP属性值为0,输出用户计费信息,使用户进入下一次等待输出计费信息的状态。
下面,我们对本方案与其它已有方案相比的不同点及优势进行说明。
当白天拨号接入用户数量较小时,即在每一秒同时开始计费的用户不大于200个的时候,本发明与方案2的效果相同,所有的用户都以600秒为周期输出计费信息。
当晚上拨号接入用户数量较大时,即在每一秒同时开始计费的用户大于200个的时候,本发明与方案2的效果就会产生以下的不同a.设在从当前这一秒开始连续3秒钟都有300个用户同时开是计费且此前系统中没有用户。对于方案2来说,在600秒后的连续3秒钟,每秒都需要输出300用户计费信息,超过了系统能承受的最大值,非常不利于系统的稳定运行。而按照本发明的设计方案,第一秒钟的300个用户,有200个在设定的单位时间后输出计费信息。100个会比设定的单位时间延迟一秒输出计费信息。第二秒钟的300个用户,有100个在设定的单位时间后输出计费信息,200个会比设定的单位时间延迟一秒输出计费信息。第三秒钟的300个用户,有200个比设定的单位时间延迟一秒输出计费信息,100个会比设定的单位时间延迟两秒输出计费信息。从输出用户计费信息的时间精确度上看,本发明的方案会略有误差,但它可以有效的将消除系统的工作高峰。
b.在以上的分析中可以深入看到,方案2每600秒都会产生一个连续3秒钟的系统工作高峰。本发明的方案就可以避免同样的问题。
c.在以上的分析中可以深入看到,方案2每600秒产生的3秒工作高峰中新的开始计费的用户会继续叠加到这3秒钟,在明知遇到工作高峰的情况下仍无法有效规避。而对于本发明的方案来说,这些用户会通过少量的延迟输出计费信息的方法,均匀分布,从而消除系统工作高峰。
权利要求
1.一种计费服务器定时输出用户计费信息的方法,其特征是,包括下述步骤(1)初始化操作设计费服务器总用户容量为N,计费服务器上所有的计费用户被放置在T个用户队列中,每个队列可容纳的用户最大数量为M,三者之间的关系为M*T>N;设计费服务器本秒指向的用户队列索引为P,所述P的值每过一秒后重新生成,新生成的值为(P+1)对T取余数,以实现队列以T秒为周期循环使用;(2)设一个用户计费信息输出单位时间为X秒,当该用户进入等待输出计费信息状态时,执行如下步骤a.计算用户放置队列索引的相对值OFFSET=P+X;b.计算用户放置队列索引的实际值POS的值为OFFSET对T取余数;c.检查队列POS中的用户数是否已经达到最大值;d.若队列POS中用户数未达到最大值,继续下面的步骤f;e.若队列POS中的用户数已经达到最大值,将POS置为下一个队列,取POS的值为(POS+1)对T取余数,重复步骤c,直至找到最近的未满队列,设执行次数为n;f.计算用户还需被检测次数,所述用户需被检测次数的值ROUNDTRIP为X整除T得到的值;(3)计费服务器每秒钟对本秒指向的用户队列P中的所有单个用户进行检测,所述单个用户的检测包括下述步骤a.判断用户属性ROUNDTRIP是否大于零,如果大于零,则设置ROUNDTRIP=ROUNDTRIP-1,结束对该用户的检测;如果不大于零,则执行步骤b;b.输出用户计费信息;c.用户进入等待下一次输出计费信息状态。
全文摘要
本发明公开了一种计费服务器定时输出用户计费信息的方法,旨在提供一种能避免计费服务器输出计费信息时产生系统工作高峰的计费服务器定时输出用户计费信息的方法。设计费服务器总用户容量为N,计费服务器上所有的计费用户被放置在T个用户队列中,每个队列可容纳的用户最大数量为M。三者之间的关系为M
文档编号H04L12/26GK1571339SQ03131780
公开日2005年1月26日 申请日期2003年7月22日 优先权日2003年7月22日
发明者周苏远 申请人:中兴通讯股份有限公司