具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在数据传输网络中,需要使用多模块网关对外部网元发送的数据或者所要接收的数据进行转发,并对需要转发的数据流量进行流量控制。本发明的以下实施例在此网络中实现。
图1是根据本发明实施例的多模块网关的流量控制方法的流程图,包括以下步骤:
步骤S102,多模块网关中的业务处理模块接收到关于外部网元(如外部网元1)的短消息;
例如,业务处理模块接收到某一个外部网元发送来的数据流量(即数据流量的源地址为该外部网元的地址)或者接收到该外部网元所需要接收的数据流量(即数据流量的目的地址为该外部网元的地址)。
步骤S104,该业务处理模块向该多模块网关中对应外部网元的流量控制模块发送流量检查请求消息;
例如,该多模块网关可以包括一个或多个流量控制模块,在仅包括一个流量控制模块的情况下,显然由该流量控制模块与所有的外部网元对应;而在包括多个流量控制模块的情况下,一个外部网元对应多模块网关中的一个流量控制模块,而一个流量控制模块可以对应多个外部网元。
步骤S106,该外部网元对应的流量控制模块(例如为流量控制模块1)根据该流量检查请求消息,判断该外部网元的当前流量是否达到流量阈值,并将判断结果返回给该业务处理模块;
步骤S108,该业务处理模块根据该判断结果确定是否转发该短消息。
相关技术由于采用分发算法将外部网元的总流量分到每个处理模块上,每个处理模块控制一部分流量,由于分发算法对输入数据可能分发不均匀,因此无法做到精确的流量控制。本实施例由于在多模块网关中设置了流量控制模块,每个外部网元的流量是否已经达到流量阈值由其对应的流量控制模块进行判断,从而可以对外部网元的流量进行精确地控制。
优选地,该外部网元与多模块网关中的多个业务处理模块连接。例如,多个业务处理模块中的每个业务处理模块均按照上述的步骤S102至步骤S104发送实时的流量检查请求消息给外部网元对应的流量控制模块1,统一地由流量控制模块1对外部网元1的当前流量进行判断,从而能够做到精确地流量控制。
优选地,步骤S104包括:该业务处理模块针对步骤S102中接收到的短消息生成流量检查请求消息;将该流量检查请求消息放入与该外部网元对应的流量控制模块相对应的发送队列中;当发送队列中的流量检查请求消息的数量达到最大组包消息数时,将发送队列中的流量检查请求消息组合成一个请求消息包,并将请求消息包发送到外部网元对应的流量控制模块。这样,可以减少业务处理模块和流量控制模块之间的消息量。
例如,在实际实施的过程中,业务处理模块在向流量控制模块发送流量检查请求消息时,首先将单个流量检查请求消息放到一个发送队列(每个流控模块对应一个发送队列)中,然后检查发送队列中的当前的消息数,如果当前待发的消息数已经达到允许的最大组包消息数,则将发送队列中的消息组成一个大的请求消息包,发给流量控制模块;如果当前待发的消息数还没有达到允许的最大组包消息数,则当前不发送。具体地,可以设置一个专用的发送线程,此发送线程定时地(时长可设置,如10ms或者100ms等)将发送队列中的请求消息组包,并发送给流量控制模块。
优选地,多模块网关包括多个流量控制模块(例如多模块网关中有共N个流量控制模块),多个流量控制模块分别具有不同的编号,在步骤S104之前,还包括:业务处理模块确定该外部网元对应的流量控制模块,其包括:业务处理模块从接收到的关于外部网元的短消息中解析出该外部网元的ID;将该ID的值除以多模块网关中的流量控制模块的个数N取余数;确定该外部网元对应的流量控制模块就是编号为该余数的流量控制模块。
该优选实施例提供了当多模块网关中包括多个流量控制模块时,如何确定该多模块网关中与该外部网元对应的流量控制模块的具体实施方案。这样,可以确保一个外部网元对应一个流量控制模块。例如,多模块网关中有N(N>=1)个流量控制模块,将外部网元的ID除以N取余数(即ID mod N),如得到的余数为M,则该外部网元对应的流量控制模块即为编号为M的流量控制模块。
优选地,步骤S106中外部网元对应的流量控制模块判断外部网元的当前流量是否达到流量阈值包括:外部网元对应的流量控制模块对外部网元的已接收流量和已发送流量分别进行统计,并分别判断已接收流量和已发送流量是否达到各自的流量阈值。
具体地,步骤S102中关于外部网元的流量为来自该外部网元的短消息(即该外部网元发送的短消息),步骤S106包括:该外部网元对应的流量控制模块接收到该流量检查请求消息;将该流量检查请求消息所指示的短消息的流量累加到本地记录的该外部网元的已发送流量中;判断累加后的流量是否达到外部网元的发送流量阈值;若未达到,则向业务处理模块返回指示成功的响应消息;若已达到,则向业务处理模块返回指示失败的响应消息。
该优选实施例提供了当业务处理模块接收到的短消息是外部网元发送的短消息时,流量控制模块对该外部网元的当前发送流量进行判断的具体实施方案。该外部网元对应的流量控制模块每接收到一个流量检查请求消息即将该消息中指示的短消息的流量累加到记录的该外部网元的已发送流量中,因此可以获知该外部网元当前的已发送流量,可以将该流量与发送流量阈值进行比较来实现精确地流量控制。
具体地,步骤S102中关于外部网元的流量为要发送到外部网元的短消息(需要该外部网元接收的短消息),步骤S106包括:外部网元对应的流量控制模块接收到流量检查请求消息;将该流量检查请求消息所指示的短消息的流量累加到本地记录的外部网元的已接收流量中;判断累加后的流量是否达到外部网元的接收流量阈值;若未达到,则向业务处理模块返回指示成功的响应消息;若已达到,则向业务处理模块返回指示失败的响应消息。
该优选实施例提供了当业务处理模块接收到的短消息是外部网元要接收的短消息时,流量控制模块对该外部网元的当前接收流量进行判断的具体实施方案。该外部网元对应的流量控制模块每接收到一个流量检查请求消息即将该消息中指示的短消息的流量累加到记录的该外部网元的已接收流量中,因此可以获知该外部网元当前的已接收流量,可以将该流量与接收流量阈值进行比较来实现精确地流量控制。流量控制模块收到请求消息后,对每个单独请求进行流控判断,并可以一次性地返回所有的请求对应的响应消息。
上述的两个优选实施例实现了对外部网元的发送流量和接收流量的双向流量的流量控制。其中,流量阈值(包括发送流量阈值或者接收流量阈值)可以由该多模块网关的维护台在为每个外部网元配置流量阈值时,将该流量阈值同步到与外部网元对应的流量控制模块。
优选地,步骤S108包括:若判断结果为未达到流量阈值,则业务处理模块继续转发在步骤S102中接收到的短消息;若判断结果为已达到流量阈值,则业务处理模块拒绝转发在步骤S102中接收到的短消息。
在实际实施的过程中,当步骤S102中接收到的短消息为外部网元发送的短消息时,在步骤S108中若业务处理模块接收到流量控制模块返回的指示失败的响应消息(表示判断结果为已达到流量阈值),则拒绝转发该短消息,并向该外部网元返回过流量错误的消息。当步骤S102中接收到的短消息为外部网元要接收的短消息时,在步骤S108中若业务处理模块接收到流量控制模块返回的指示失败的响应消息,则拒绝转发该短消息,并向该外部网元返回过流量错误的消息。
如图2所示,根据本发明优选实施例的多模块网关的流量控制方法的具体实现步骤如下:
步骤S202,多模块网关的维护台为每个外部网元配置其流量阈值,并将该流量阈值同步到各个流量控制模块。外部网元发送短消息到业务处理模块;
例如,如图3所示,假定多模块网关中有2个流量控制模块(流量控制模块0和流量控制模块1),3个业务处理模块(业务处理模块1-3),外部网元的ID为1,配置的流量阈值s为10条/秒。外部网元同时连接这3个业务处理模块,在t1时刻同时向每个业务处理模块发送4条短消息。
步骤S204,业务处理模块接收到外部网元的短消息之后,根据外部网元的ID计算其对应的流量控制模块,并向流量控制模块发送流量检查请求;
例如,业务处理模块1处理收到的第一条短消息,根据外部网元的ID为1计算出该外部网元对应的流量控制模块为流量控制模块1。业务处理模块1向流量控制模块1发送流量检查请求消息,并保存收到的第一条短消息;业务处理模块1继续处理收到的下一条短消息。同样,业务处理模块2和业务处理模块3在业务处理模块1处理短消息的同时,并行处理其各自收到的短消息,处理方式与业务处理模块1完全一致。所有的流量检查请求消息在流量控制模块1上排队等候处理。
步骤S206至步骤S208,流量控制模块接收业务处理模块的流量检查请求消息后,对相应的外部网元的当前流量进行累加,并判断当前流量是否超过了配置的流量阈值。如果当前流量未超过给外部网元配置的流量阈值,则流量控制模块给业务处理模块返回成功响应消息;否则,流量控制模块给业务处理模块返回失败响应消息;
例如,业务处理模块1收到流量检查请求消息之后,根据请求消息中携带的外部网元的ID,对相应的外部网元的当前流量进行累加,并检查当前流量是否超过配置的流量阈值,如果未超过,则返回成功的响应消息;否则返回失败的响应消息。由于此处外部网元的流量配置为10条/秒,它在同一秒发出了12条短消息,流量控制模块1对排队的前10条消息,返回成功的响应消息;对最后的两条短消息返回失败的响应消息。
步骤S210至步骤S214,业务处理模块接收到流量控制模块的响应消息之后,进行响应的处理。如果为成功响应,则继续转发短消息,并向外部网元返回短消息响应消息以通知短消息已成功转发;如果为失败响应,则拒绝转发短消息,并给外部网元返回失败的响应,指示超过流量。
例如,业务处理模块收到流量检查请求消息的响应消息后,根据响应是成功还是失败决定后续消息的处理流程。如果是成功响应,则继续消息的转发;如果是失败响应,则拒绝消息,给外部网元返回过流量错误。在此例中,流量控制模块1上排队的第11、12条短消息将被拒绝,其它短消息可以继续转发。
图4是根据本发明实施例的多模块网关的示意图,包括:业务处理模块10,用于接收关于外部网元的短消息,并向多模块网关中对应该外部网元的流量控制模块发送流量检查请求消息;还用于根据流量控制模块返回的判断结果确定是否转发该短消息;流量控制模块20,用于根据流量检查请求消息,判断该外部网元的当前流量是否达到流量阈值,并将判断结果返回给业务处理模块10。
优选地,一个外部网元与上述多模块网关中的多个业务处理模块10连接。
优选地,如图5所示,业务处理模块10包括:生成模块102,用于针对接收到的关于外部网元的短消息生成流量检查请求消息;放入模块104,用于将流量检查请求消息放入与该外部网元对应的流量控制模块相对应的发送队列中;组合发送模块106,用于当发送队列中的流量检查请求消息的数量达到最大组包消息数时,将发送队列中的流量检查请求消息组合成一个请求消息包,并将请求消息包发送到外部网元对应的流量控制模块。
优选地,如图4所示,多模块网关包括多个流量控制模块20,多个流量控制模块分别具有不同的编号,如图5所示,业务处理模块10还包括:确定模块108,用于在业务处理模块向多模块网关中对应外部网元的流量控制模块发送流量检查请求消息之前,确定该外部网元对应的流量控制模块,其包括:解析模块,用于从接收到的关于外部网元的短消息中解析出外部网元的ID;求模模块,用于将ID的值除以多模块网关中的流量控制模块的个数取余数;编号确定模块,用于确定该外部网元对应的流量控制模块是编号为该余数的流量控制模块。
优选地,业务控制模块10接收到的关于外部网元的短消息为来自外部网元的短消息,如图5所示,流量控制模块20包括:接收模块202,用于接收来自业务处理模块10的流量检查请求消息;累加模块204,用于将该流量检查请求消息所指示的流量累加到本地记录的外部网元的已发送流量中;判断模块206,用于判断累加后的流量是否达到外部网元的发送流量阈值;发送模块208,用于当判断模块206的判断结果为未达到时,向业务处理模块10返回指示成功的响应消息;当判断模块206的判断结果为已达到时,向业务处理模块10返回指示失败的响应消息。
或者,优选地,业务控制模块10接收到的关于外部网元的短消息为要发送到外部网元的短消息,如图5所示,流量控制模块20包括:接收模块202,用于接收到流量检查请求消息;累加模块204,用于将流量检查请求消息所指示的流量累加到本地记录的外部网元的已接收流量中;判断模块206,用于判断累加后的流量是否达到外部网元的接收流量阈值;发送模块208,用于当判断模块206的判断结果为未达到时,向业务处理模块10返回指示成功的响应消息;当判断模块206的判断结果为已达到时,向业务处理模块10返回指示失败的响应消息。
优选地,业务处理模块10还包括:执行模块109,用于当接收到来自流量控制模块20的指示成功的响应消息(即流量控制模块的判断结果为未达到流量阈值)时,继续转发上述短消息;当接收到来自流量控制模块20的指示失败的响应消息(即流量控制模块的判断结果为已达到流量阈值)时,拒绝转发上述短消息。
从以上的描述中,可以看出,本发明实现了如下技术效果:能够实现对外部网元的流量的精确地控制,避免无法准确控制外部网元的流量的问题。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。