具体实施方式
本发明实施例提供了一种信息传递的系统,包括:一个以上的客户端,信息服务器和查询间隔控制模块;
信息服务器,用于存储来自第一客户端的信息,并根据第二客户端的查询请求提供信息。
查询间隔控制模块,用于根据所述第一客户端和第二客户端之间信息交流的状态确定所述第一客户端和第二客户端各自对应的查询所述信息服务器的期望间隔时间,根据所述期望间隔时间分别调整所述第一客户端和第二客户端查询所述信息服务器的间隔时间。查询间隔控制模块既可以放置在客户端中,也可以放置在信息服务器中,查询间隔控制模块还可以独立放置于系统中,也就是查询间隔模块的一端与所述信息服务器连接,另一端与所述第一客户端或者所述第二客户端连接。
较佳地可以把查询间隔控制模块放置在客户端中,客户端可以直接利用查询间隔控制模块调整后的间隔时间查询信息服务器,更好地降低信息服务器的负载。
第一客户端,用于发送信息给信息服务器。
第二客户端,用于利用调整后所对应的间隔时间,查询并获得所述信息服务器的存储的信息。
参照图3,本实施例中,客户端A和客户端B通过信息服务器进行信息交流,当客户端A为第一客户端,客户端B为第二客户端时,客户端A发送消息到信息服务器,客户端B通过查询信息服务器获得客户端A发送过来的消息,而查询的间隔时间是由查询间隔控制模块来进行控制。当客户端A为第二客户端,客户端B为第一客户端时,客户端B通过信息服务器发送消息到客户端A时,客户端A也是通过查询信息服务器获得客户端B发送过来的消息,而查询间隔时间也是由查询间隔控制模块来进行控制的。
本发明实施例中时间查询间隔控制模块是在用户信息状态密度改变原理的基础上建立的,下面简要的描述本发明实施例采用的用户信息状态密度改变原理。参照图4为用户信息状态改变的密度曲线,用户信息状态改变的密度会存在一个起始点,在实际意义上通常表示与某个联系人开始一个话题的交流。交流会导致信息状态改变的密度大幅度上升,很快到达一个峰值,这个峰值的实际意义为针对该话题的热烈讨论。在峰值持续一段时间之后交流数量下降,信息状态改变的密度逐渐回归到初始阶段。
根据上述原理,本发明实施例提供了一种调整信息服务器负载的方法,应用于包括一个以上客户端以及信息服务器的信息传递系统中。
参照图5,具体执行步骤如下:
步骤501,确定两个客户端之间信息交流的状态。
这里需要确定的信息交流的状态包括:信息交流的起点,信息交流高峰期和信息交流结束期。那么客户端信息交流的状态可以分成五段了,信息交流起始点,信息交流起始点到信息交流高峰期,信息交流高峰期,信息交流高峰期到信息交流结束期,信息交流结束期。
进一步,确定信息交流的起点包括下述情况之一:
根据第一客户端收到第二客户端的消息的状态确定信息交流起始点;
或者确定第一客户端发送消息给第二客户端的状态为信息交流起始点。
而所述根据第一客户端收到第二客户端的消息的状态确定信息交流起始点又包括:
第一客户端收到第二客户端的消息,包括非即时消息和即时消息,所述非即时消息包括第一客户端收到第二客户端的消息时,第二客户端处于非活动状态或者不在线状态;所述即时消息包括第一客户端收到第二客户端的消息时,第二客户端处于活动状态或者在线状态。
当第一客户端收到第二客户端非即时消息后,第一客户端回复第二客户端,确定所述第一客户端回复第二客户端的时间为信息交流起始点。
当第一客户端收到第二客户端即时消息后,确定第一客户端收到第二客户端的即时消息的状态为信息交流起始点。
确定信息交流高峰期具体实现可以是这样的:
信息交流过程中,计算客户端之间信息交流的状态中每次第二客户端回复第一客户端发送消息的时间差;当所述时间差小于预定值达到一定值时,较佳地,可以认为当所述时间差不再缩小时,确定此时所述信息交流的状态为信息交流高峰期。
确定信息交流结束期可以包括以下步骤:
信息交流过程中,计算每次第二客户端回复第一客户端发送消息的时间差,将所述时间差与设定时间进行比较,当所述时间差开始超过设定时间达到一定值的时,较佳地,可以认为当所述时间差超过信息交流高峰期的时间差的两倍时,确定此时所述信息交流的状态为信息交流结束期。
步骤502,根据两个客户端之间信息交流的状态确定所述两个客户端各自对应的查询所述信息服务器的期望间隔时间。
这里,其实现过程可以包括:建立所述两个客户端之间信息交流的状态与所述两个客户端各自查询信息服务器的期望间隔时间的对应关系;根据所述对应关系确定所述信息交流的状态对应的所述两个客户各自端查询所述信息服务器的期望间隔时间。
较佳地,当第一客户端与第二客户端进行交流时,确定信息交流起始点,得到第一客户端对应的查询信息服务器的第一期望间隔时间,当处于所述信息交流高峰期时,得到第一客户端对应的查询信息服务器的第二期望间隔时间,当处于所述信息交流结束期时,得到第一客户端对应的查询信息服务器的第三期望间隔时间。同理也可以确定第二客户端对应的查询服务器的期望间隔时间。
步骤503,根据所述期望间隔时间分别调整所述两个客户端对应的查询信息服务器的间隔时间。
这里可以直接将各个信息交流状态中所述两个客户端各自对应的查询信息服务器的间隔时间调整到步骤502所确定的所述两个客户端各自对应的期望间隔时间。
本步骤较佳实施方式包括,信息服务器接收到信息交流双方中任一个客户端查询请求后,会返回所述客户端对应的查询信息结果,所述信息结果中包含有一个最小查询时间,将步骤502所确定的所述客户端对应的期望间隔时间和所述最小查询时间进行比较,根据所述比较的结果调整所述客户端对应的查询信息服务器的间隔时间。
当所述期望间隔时间大于等于所述最小查询时间时,将所述客户端对应的查询信息服务器的间隔时间调整为期望间隔时间。
当所述期望时间小于所述最小查询时间时,将所述客户端对应的查询信息服务器的间隔时间调整为最小查询时间。
步骤504:每个客户端利用调整后所对应的间隔时间,查询所述信息服务器。
下面进一步详细描叙本发明实施例所述方法,本实施例中第一客户端用客户端A来表示,第二客户端用客户端B来表示,以调整客户端A的查询信息服务器的间隔时间为例,具体执行步骤如下:
步骤1:确定信息交流的起始点,此时客户端A查询间隔时间为t1,客户端A去信息服务器查询新的信息时,信息服务器返回结果中包含一个最小查询时间t,将t1与t进行比较,如果t1小于t,则调整查询间隔时间t1等于t,如果t1大于等于t,则查询间隔时间仍旧为t1。
有三种情况可以确定信息交流的起始点:
第一、客户端A收到客户端B的非即时消息后,客户端A回复消息,可以认为此时为信息交流起点。非即时消息是指客户端B在相对长时间之前发送给客户端A的消息,一般情况客户端A收到客户端B的非即时消息时客户端B处于非活动状态或不在线状态。因此,对于这种起点方式,必须要客户端A收到客户端B的非即时消息并且客户端A回复该消息才可作为交流起始点,如果客户端A收到客户端B的非即时消息后并没有回复,则在本发明实施例中不作为交流的起始点。
第二、客户端A主动给客户端B消息,在本发明实施例中作为交流的起始点。
第三、客户端A收到客户端B的即时消息。即时消息是指客户端B在相对短时间之前发送给客户端A的消息,一般情况客户端A收到客户端B的即时消息时客户端B处于活动状态或在线状态。此时在本发明实施例中作为交流的起始点。
步骤2:确定信息交流起始点后,调整客户端A的查询间隔时间,本实施例中先将客户端A的查询间隔时间缩短一半,此时得到的期望查询间隔时间为t2。将t2与本次查询信息服务器返回结果中的最小查询时间t进行比较,如果t2小于t,则调整查询间隔时间t2等于t,如果t2大于等于t,则查询间隔时间仍旧为t2。
步骤3:每进行一次信息交流周期,也就是客户A发送信息给客户端B,客户端B回复消息给客户端A,客户端A的查询间隔时间就调整一次,调整具体过程参见步骤2。
步骤4:由于每个客户端发送的消息都会包含有时间戳,根据客户端A发送的消息与客户端B回复的消息中的时间戳可以计算客户端B回复客户端A发送消息的时间差。客户端A纪录每次客户端B回复客户端A发送消息的时间差,经过比较,当超过一定次数的消息来回后(通常为4-5次),如果该时间差不再缩小,可以认为此时达到交流密度的峰值,则认为该时间差为查询的期望间隔时间tm,仍旧将tm与本次查询信息服务器返回结果中的最小查询时间t进行比较,如果tm小于t,则调整查询间隔时间tm等于t,如果tm大于等于t,则查询间隔时间仍旧为tm。
步骤5:当客户端B回复客户端A发送消息的时间差开始超过当前期望的间隔时间达到一定值的时候,认为信息交流量在变少,此时调整客户端A的查询间隔时间。本实施例中认为当客户端B回复客户端A发送消息的时间差开始超过步骤4中tm的两倍时,将客户端A的查询间隔时间延长一倍,得到此时的期望查询间隔为tn,仍旧将tn与本次查询信息服务器返回结果中的最小查询时间t进行比较,如果tn小于t,则调整查询间隔时间tn等于t,如果tn大于等于t,则查询间隔时间仍旧为tn。
步骤6:每进行一次信息交流周期,客户端A的查询间隔时间就调整一次,调整具体过程参见步骤5,直到延长到客户端A在第一步时候的间隔值t1。
对于本发明实施例中客户端去信息服务器查询新的消息,信息服务器返回结果中包含的最小查询时间t,可以用多种方法来调整信息服务器返回的t的值。第一种:使用固定t的方法,服务器在启动的时候读取配置文件中的t值,这种情况比较适合一台服务器只用来做信息服务器的情况,因为单台服务器的负载是可以测量的。另一种情况是服务器提供一个接口模块来动态的调节t,当系统负载出现预料外的峰值的时候,系统管理员可以通过该接口模块将t调大而无须重启服务。在实际应用中,信息服务器会同时包含这两个模块。
本发明实施例还提供另外一种调整查询间隔时间的方法,具体过程如下:
步骤1:确定信息交流的起点,查询间隔时间调整为T1;
步骤2:经过M次交流后,查询间隔时间调整为T2;
步骤3:当N次交流后,时间间隔小于T3后,将间隔时间调整为T3。
本实施例中确定信息交流起始点的方法如同上述实施例中所述方法,而T1,T2,T3,M,N都是系统的经验特征值,他们与系统的用途以及用户的习性有关,由统计数据得到。
本发明实施例还可以将以上两种方法结合,形成第三种查询间隔控制模块调整查询间隔时间的方法,在系统初始阶段,使用第一种方法进行间隔时间控制,同时进行数据统计。当统计数据达到一定的量后进行分析,计算得到T1,T2,T3,M,N,然后将这些数据通过特定的协议发给所有的客户端,所有的客户端将调整间隔时间的方法设置为第二种方法。
上述本发明实施例提供的间隔时间调整算法独立性高,可以直接应用到许多已有的信息系统上,而是实现简单。
根据本发明实施例所述方法可以构建一种调整信息服务器负载的装置,包括获得模块,调整模块和查询模块。
获得模块,用于根据两个客户端之间信息交流的状态确定所述两个客户端各自对应的查询所述信息服务器的期望间隔时间;
调整模块,用于根据所述期望间隔时间分别调整所述两个客户端对应的查询所述信息服务器的间隔时间;
查询模块,用于每个客户端利用调整后所对应的间隔时间,查询所述信息服务器。
其中获得模块包括确定模块,存储模块和获取模块。
确定模块,用于确定所述两个客户端之间信息交流的状态;
存储模块,用于保存所述信息交流的状态与所述两个客户端各自对应的查询所述信息服务器的期望间隔时间的对应关系;
获取模块,用于根据所述对应关系得到所述信息交流的状态对应的所述两个客户端各自对应的查询所述信息服务器的期望间隔时间。
确定模块又包括:起始点确定模块,高峰期确定模块和结束期确定模块。
起始点确定模块,用于确定两个客户端之间信息交流起始点;
高峰期确定模块,用于确定两个客户端之间信息交流高峰期;
结束期确定模块,用于确定两个客户端之间信息交流结束期。
进一步,起点确定模块又包括第一状态模块和第二状态模块。
第一状态模块,用于根据第一客户端收到第二客户端的消息的状态确定信息交流起始点;
第二状态模块,用于确定第一客户端发送消息给第二客户端的状态为信息交流起始点。
第一状态模块又包括非即时模块和即时模块
非即时模块,用于第一客户端收到第二客户端的非即时消息后,第一客户端回复第二客户端,确定所述第一客户端回复第二客户端的状态为信息交流起始点;
即时模块,用于确定第一客户端收到第二客户端的即时消息的状态为信息交流起始点。
高峰期确定模块又包括:计算模块和判断模块。
计算模块,用于计算两个客户端之间信息交流的状态中每次第二客户端回复第一客户端发送消息的时间差;
判断模块,用于当所述时间差小于预定值达到一定值时,确定所述信息交流的状态为信息交流高峰期。
结束期确定模块也包括:计算模块和判断模块。
计算模块,用于计算两个客户端之间信息交流的状态中每次第二客户端回复第一客户端发送消息的时间差;
判断模块,用于当所述时间差大于预设定值达到一定值的时,确定所述信息交流的状态为信息交流结束期。
其中调整模块又包括:返回模块和比较模块。
返回模块,用于所述信息服务器收到所述两个客户端的查询请求后返回所述两个客户端各自对应的最小查询时间;
比较模块,用于比较所述期望间隔时间和所述最小查询时间,根据所述比较的结果分别调整两个客户端对应的查询信息服务器的间隔时间。
而比较模块又包括第一调整模块和第二调整模块。
第一调整模块,用于当所述期望间隔时间大于等于所述最小查询时间时,将所述两个客户端各自对应的查询所述信息服务器的间隔时间调整为所述期望间隔时间;
第二调整模块,用于当所述期望间隔时间小于所述最小查询时间时,将所述两个客户端各自对应的查询所述信息服务器的间隔时间调整为所述最小查询时间。
综上所述,本发明实施例根据信息传递系统中两个客户端之间信息交流的状态得到两个客户端各自对应的查询信息服务器的期望间隔时间,根据所述期望间隔时间分别调整两个客户端对应的查询信息服务器的间隔时间,每个客户端利用调整后所对应的间隔时间,查询所述信息服务器,保证信息交流的即时性。通过对查询时间间隔的控制可以实时的调整信息服务器负载,在信息服务器在活跃用户较多的情况下,不会出现负载峰值的情况,提高了系统的稳定性。
虽然通过实施例描绘了本发明,但本领域普通技术人员知道,在不脱离本发明的精神和实质的情况下,就可使本发明有许多变形和变化,本发明的范围由所附的权利要求来限定。