一种面向发布订阅系统的流量控制和消息缓存方法转让专利

申请号 : CN200710157098.1

文献号 : CN101188575B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 尹建伟钱剑峰邓水光吴健李莹施东材吴朝晖

申请人 : 浙江大学

摘要 :

本发明涉及一种面向发布订阅系统的流量控制和消息缓存方法,包括以下步骤:对发布订阅系统服务器参数进行设置,通过消息占用资源的情况对消息进行分类;服务器通过一个线程采集系统资源的使用情况,根据系统资源的使用情况采取不同的策略;对发送消息客户端进行流量控制,具体实现是服务器向发送消息客户端发送流量控制数据报,客户端根据数据报的控制信息,降低往服务器发送消息的速度;对发送消息客户端进行流量控制并缓存消息,将内存中的消息写入缓存,释放内存。本发明有益的效果是:增加了消息缓存的功能,通过配置参数在设定的环境下将消息缓存到辅存上,释放消息占用的内存,从而减少了消息的抛弃,并降低了系统的资源。

权利要求 :

1.一种面向发布订阅系统的流量控制和消息缓存方法,其特征在于:包括以下步骤:

1)对发布订阅系统服务器参数进行设置,通过消息占用资源的情况对消息进行分类;

2)服务器通过一个线程采集系统资源的使用情况,根据系统资源的使用情况采取不同的策略,若系统资源处于设定的正常的范围,不进行操作,若CPU资源降低到设定的正常范围值以下,进入步骤3,若内存资源降低到设定的正常范围值以下,进入步骤4,当步骤3以及步骤4均不能降低服务器的资源的使用情况时,为避免服务器崩溃进入步骤5;

3)对发送消息客户端进行流量控制,具体实现是服务器向发送消息客户端发送流量控制数据报,客户端根据数据报的控制信息,降低往服务器发送消息的速度;

4)对发送消息客户端进行流量控制并缓存消息,具体实现是采用步骤3的同时,并将内存中的消息写入辅存,释放内存;

5)直接抛弃消息,具体实现是通过配置服务器抛弃消息策略方法,可抛弃最新的消息或者最早的消息,或者特定类型的消息。

2.根据权利要求1所述的面向发布订阅系统的流量控制和消息缓存方法,其特征在于:其中步骤1包括以下子步骤:

1.1、对服务器参数进行设置,设定线程的采集频率,设定系统关心的主要资源及触发进入步骤3,4,5的资源的阀值;

1.2、通过消息占用资源的情况对消息进行分类,并建立相对应索引并计数,建立发送消息的客户的索引并计数。

3.根据权利要求1所述的面向发布订阅系统的流量控制和消息缓存方法,其特征在于:步骤4是针对资源中的内存使用情况增加的控制机制,当内存不足时,一方面对发送消息客户端进行流量控制,一方面将服务器内存中的消息写入辅存,只在内存中保留标志位以及如果从辅存中取回消息的相关信息,释放消息所占用的内存资源;当保留消息的缓存相关的内存使用量大于或等于消息的内存使用量时,不对该消息进行处理,当内存不足的同时,若CPU也严重不足,此时减少缓存的速度。

4.根据权利要求1所述的面向发布订阅系统的流量控制和消息缓存方法,其特征在于:在步骤3,4,5中,服务器均运行设定的一个时间段。

说明书 :

技术领域

本发明涉及流量控制和消息缓存方法领域,主要是一种向发布/订阅系统的流量控制和消息缓存方法。

背景技术

Internet技术的广泛应用和移动计算、网格计算以及普适计算平台的快速发展,要求分布式系统能够满足大规模、分散控制和动态改变的要求.这就要求系统的各参与者之间,采用一种具有动态性和松散耦合特性的灵活通信范型和交互机制.发布/订阅(Pub/Sub)通信范型与传统的通信范型(消息传递、RPC/RMI和共享空间)相比,具有异步、多点通信的特点,使通信的参与者在空间、时间和控制流上完全解耦,能够很好地满足大型分布式系统松散通信的需求。
发布/订阅系统是一种使分布式系统中的各参与者,能以发布/订阅的方式进行交互的中间件系统.在发布/订阅系统中,信息的生产者和消费者之间所交互的信息被称为事件.如图1所示,生产者将事件发送到发布/订阅系统服务器;消费者则向发布/订阅系统服务器发出一个订阅条件,表示对系统中的哪些事件感兴趣,如果不再感兴趣,也可以取消订阅;而发布/订阅系统服务器则保证将生产者发布的事件及时、可靠地传送给所有对之感兴趣的消费者.信息的生产者称为发布者(publisher),信息的消费者称为订阅者(subscriber),发布者和订阅者统称为客户端.匹配算法(matcher)负责高效地找到与给定的事件相匹配的所有订阅条件;而路由算法(router)则负责选择适当的路径,将一个事件从发布者传送到订阅者.
发布/订阅系统的流量控制是一种负载控制机制,目的是在提供良好的服务的前提下,保持系统的强壮性。流量控制机制对发布/订阅系统的服务质量,系统性能是至关重要的。当前的流量控制机制都只进行了流量控制,当无法正常提供服务的时候,简单的进行消息抛弃。

发明内容

本发明要解决上述技术所存在的缺陷,提供一种面向发布订阅系统的流量控制和消息缓存方法。
本发明解决其技术问题所采用的技术方案:这种面向发布订阅系统的流量控制和消息缓存方法,包括以下步骤:
1)对发布/订阅系统服务器(以下简称服务器)参数进行设置,通过消息占用资源的情况对消息进行分类。
2)服务器通过一个线程采集系统资源的使用情况,根据系统资源的使用情况采取不同的策略。若系统资源处于设定的正常的范围,不进行操作,若系统资源降低到设定的正常范围值以下,进入步骤3,若内存资源降低到设定的正常范围值以下,进入步骤4,当资源降低到设定的,进入步骤5。
3)对发送消息客户端进行流量控制。具体实现是服务器向发送消息客户端发送流量控制数据报,客户端根据数据报的控制信息,降低往服务器发送消息的速度,从而减少服务器的压力。
4)对发送消息客户端进行流量控制并缓存消息,具体实现是采用步骤2的同时,并将内存中的消息写入缓存,释放内存,从而减少服务器端内存的使用量。
5)直接抛弃消息。具体实现是通过配置服务器抛弃消息策略方法,可抛弃最新的消息或者最早的消息,或者特定类型的消息。
其中步骤1包括以下子步骤:
1.1、对系统参数进行设置,设定线程的采集频率,设定系统关心的主要资源及触发进入步骤3,4,5步骤的资源的阀值。
1.2、通过消息占用资源的情况对消息进行分类,并建立相对应索引并计数,建立发送消息的客户的索引并计数。
对步骤3而言,根据步骤2的不同情况进行不同的控制,可对导致资源的所有发送客户端或个别客户端进行流量控制,并可以根据资源缺乏的程度设定不同的流量控制子级别。服务器可以在不同的阶段采取不同的流量控制级别,但在一个时间段只采取一种程度的流量控制。
步骤4是针对资源中的内存使用情况增加的控制机制,为避免服务器的崩溃,当内存不足时,一方面对发送消息客户端进行流量控制,一方面将服务器内存中的消息写入缓存,只在内存中保留标志位以及如果从缓存中取回消息的相关信息,释放消息所占用的内存资源。当保留消息的缓存相关的内存使用量大于或等于消息的内存使用量时,不对该消息进行处理。当内存不足的同时,若CPU也严重不足,考虑到对消息缓存同样也会不同程度的占用CPU,此时减少缓存的速度。
步骤5是当步骤3以及步骤4均不能降低服务器的资源的使用情况时,为避免服务器的崩溃而采取的手段。本步骤抛弃一定数量的消息,从而降低了系统资源的使用量。
在步骤3,4,5中,服务器均运行设定的一个时间段,避免了在不同的步骤间进行切换。
本发明有益的效果是:本发明在流量控制机制中增加了消息缓存的功能,通过配置参数在设定的环境下可以将消息缓存到辅存上,释放消息占用的内存,从而减少了消息的抛弃,并降低了系统的资源,提高了系统的服务能力。

附图说明

图1是发布/订阅系统的概念结构示意图;
图2是对发布/订阅系统流量控制的处理流程图;

具体实施方式

下面结合附图和实施例对本发明作进一步介绍:
在实际应用中,发布/订阅系统应用的场景的会有很大的区别,所需要处理的消息也将是多种多样,而服务器硬件配置的也会不一样,从而对消息的流量控制及缓存的控制策略也会不一样。因此,在本发明的一个实施实例中,首先需要对发布/订阅系统的参数进行设置。设定线程的采集频率,表示系统在一个时间间隔后采集系统的资源的使用情况;设定系统关心的主要资源,如CPU,内存,网络带宽等。在一个实施实例中,如果CPU和网络带宽是服务的瓶颈,系统将把对CPU和网络带宽的使用情况作为系统关心的主要资源;设定触发进入步骤3,4,5步骤的资源的阀值,如设定CPU少于50%时,进入步骤3,内存少于30%时进入步骤4。在不同的实施实例中,当服务器的资源不同,而应用场景类似时,资源较少的服务器可能需要设定更高的阀值。
在不同的实施实例中,消息的分类也会有所不同,消息的分类方法很多,可以根据实际的需求情况和配置选择不同的标准。在一个实施实例中,可以根据消息主要占用资源的方法进行分类,比如主要占用内存资源的分为内存消息,要对数据库进行操作的分为数据库消息,并对每一类的消息进行相对应索引并计数。同时不同的发送客户端发送消息的速度也会有所不同,因此建立发送消息的客户的索引并计数,保持对客户端的监控。
对线程采集资源的使用情况并与相应的阀值相比较时,需要将各个资源分别和设定的阀值进行比较,若未超过阀值,则不进行操作。
当某一个资源的消耗超过阀值时,需要进行流量控制,此时需要通过算法来判断需要对哪些客户端进行控制。不同的实施实例,对消息进行分析的样本也会不同。例如一个实施实例中采用对的属于该类型所有的消息进行分析,对其中占用比例较大的消息的发送消息客户端进行控制,而另一个实施实例中则对过去一段时间中占用比例较大的消息的发送消息客户端进行控制。不同的实施实例,对进行流量控制的发送消息客户端数量的设定也会不同。
在本发明的一个实施实例中,流量控制的一种实现是,当服务器判断需要对一些发送消息客户端进行流量控制时,它向这些发送消息客户端发送一个流量控制数据报,包括流量控制的级别,流量控制的时间。客户端根据数据报的控制信息,设置流量控制标志位,并在控制的时间结束之前,使客户端在发送消息之间休眠一个特定的时间,从而降低往服务器发送消息的速度。当服务器端处于进行流量控制而不进行消息缓存的范围中,服务器可以根据资源占用率的百分比再设定不同的流量控制级别和流量控制的时间,从而更准确的进行控制,提高服务器的利用率。
当需要将消息缓存到辅存时,可以将消息缓存到数据库或者特定格式的文件中。当系统的资源得到缓解,或者内存资源充足时,可以再次将消息读入内存,并改变消息是否保存到辅存的标志位,并删除辅存上的消息,从而提高消息服务的速度。另一个情况是有消息的接受者需要消息的时候,同样将消息读入改变消息是否保存到辅存的标志位,并删除辅存上的消息。在本发明的一个较佳实施实例中,当需要缓存消息时,将消息的内容序列化,写入特定的文件,在内存中设置该消息被序列化的标志位,保存该消息所处的文件的名称,以及在该文件中的位置及长度。当需要取回消息时,根据文件的名称以及消息在该文件中的位置及长度,读取二进制信息,进行反序列化,转换为消息。当一个文件中的所有消息被取回之后,可以重用该文件。
抛弃消息仅在步骤3以及步骤4均不能降低服务器的资源的使用情况时,为避免服务器的崩溃而采取的手段。不同的应用场景可以根据消息抛弃的策略来抛弃消息。在一个实施实例中,服务器抛弃了最早到达的消息,而在其他实施实例中,服务器可能抛弃最近接收到的消息,或者服务器根据消息的优先级别或者重要级别来抛弃优先级低或者重要性低的消息,把消息抛弃对系统的影响降到最低。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。