一种聊天室消息分发方法、装置及电子设备与流程

文档序号:15182530发布日期:2018-08-17 06:06阅读:201来源:国知局

本发明涉及即时通信技术领域,特别是涉及一种聊天室消息分发方法、装置及电子设备。



背景技术:

随着互联网的高速发展,即时通信已成为人们生活中不可或缺的交流手段,在平时的休闲娱乐及工作中都得到了广泛的应用。聊天室作为一种新兴的即时通信方式,备受人们青睐。对于互联网环境下的直播聊天室,用户每发送一条消息,该消息都会首先传输到服务器,然后经由该服务器分发到该聊天室中的其他每个用户。

然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:

当直播聊天室的用户比较多,并且集中在热度比较高的直播时段,在直播聊天室中发送消息时,容易使得消息的并发量增大。当直播聊天室中发送的消息的并发量大于服务器的出口带宽时,会使得聊天室的消息难以发送出去,从而使得聊天室的消息的延迟增大,降低了聊天室的用户的体验。



技术实现要素:

本发明实施例的目的在于提供一种聊天室消息分发方法、装置及电子设备,以实现在聊天消息并发量突增的情况下,保证服务器能够正常运行。具体技术方案如下:

在本发明实施的一个方面,本发明实施例提供了一种聊天室消息分发方法,应用于服务器,该方法包括:

确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;

在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;

识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;

按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

可选的,在判断消息并发量是否大于或等于预设并发量阈值之后,本发明实施例的一种聊天室消息分发方法,还包括:

在消息并发量小于预设并发量阈值时,将已接收的聊天消息发送至对应的用户终端。

可选的,将已接收的聊天消息存储在预设哈希表中,包括:

针对每条聊天消息,以该聊天消息所属的聊天室标识信息为关键字,以该聊天消息为与该关键字对应的键值,将该聊天消息存储在预设哈希表中。

可选的,在将已接收的聊天消息存储在预设哈希表中之后,本发明实施例的一种聊天室消息分发方法,还包括:

识别存储在预设哈希表中的不满足预设条件的聊天消息,将不满足预设条件的聊天消息发送至对应的用户终端。

可选的,预设条件为:预设哈希表中,任一聊天室对应的聊天消息总条数小于或等于预设聊天室消息条数阈值;

或者,任一聊天室的消息推送等待时长小于或等于预设等待时长阈值。

可选的,将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中,包括:

将所识别出的满足预设条件的聊天消息对应的聊天室标识信息取模,得到取模后的聊天室标识信息;

将取模后的聊天室标识信息存储在预设待推送队列中。

可选的,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端,包括:

按照预设轮询周期,以预设并行度轮询预设待推送队列中的各聊天室标识信息;

从预设哈希表中,获取与各聊天室标识信息对应的聊天消息,并将与任一聊天室标识信息对应的聊天消息,发送至与该聊天室标识信息对应的用户终端。

可选的,将所获取的聊天消息发送至对应的用户终端包括:

对所获取的聊天消息进行序列化和压缩,得到压缩后的聊天消息,并将压缩后的聊天消息发送至对应的用户终端。

可选的,在按照预设轮询周期,轮询预设待推送队列之前,本发明实施例的一种聊天室消息方法,还包括:

实时监测服务器的负载,并判断服务器的负载是否小于预设负载阈值;其中,服务器的负载包括以下至少一项:处理器使用率、内存占用率和带宽占用率;

相应的,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端,包括:

在服务器的负载小于预设负载阈值时,按照第一预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端;

在服务器的负载大于或等于预设负载阈值时,按照第二预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

可选的,在将所获取的聊天消息发送至对应的用户终端之后,本发明实施例的一种聊天室消息分发方法,还包括:

清理存储在预设待推送队列中的待清理聊天室标识信息;其中,待清理聊天室标识信息为在预设哈希表中不存在的聊天室标识信息。

在本发明实施的又一方面,还提供了一种聊天室消息分发装置,应用于服务器,该装置包括:

判断模块,用于确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;

存储模块,用于在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;

识别模块,用于识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;

轮询发送模块,用于按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

可选的,本发明实施例的一种聊天室消息分发装置,还包括:

第一发送模块,用于在消息并发量小于预设并发量阈值时,将已接收的聊天消息发送至对应的用户终端。

可选的,存储模块,具体用于:

针对每条聊天消息,以该聊天消息所属的聊天室标识信息为关键字,以该聊天消息为与该关键字对应的键值,将该聊天消息存储在预设哈希表中。

可选的,本发明实施例的一种聊天室消息分发装置,还包括:

第二发送模块,用于识别存储在预设哈希表中的不满足预设条件的聊天消息,将不满足预设条件的聊天消息发送至对应的用户终端。

可选的,预设条件为:预设哈希表中,任一聊天室对应的聊天消息总条数小于或等于预设聊天室消息条数阈值;

或者,任一聊天室的消息推送等待时长小于或等于预设等待时长阈值。

可选的,识别模块,具体用于:

将所识别出的满足预设条件的聊天消息对应的聊天室标识信息取模,得到取模后的聊天室标识信息;将取模后的聊天室标识信息存储在预设待推送队列中。

可选的,轮询发送模块,包括:

轮询子模块,用于按照预设轮询周期,以预设并行度轮询预设待推送队列中的各聊天室标识信息;

发送子模块,用于从预设哈希表中,获取与各聊天室标识信息对应的聊天消息,并将与任一聊天室标识信息对应的聊天消息,发送至与该聊天室标识信息对应的用户终端。

可选的,轮询发送模块,具体用于:

对所获取的聊天消息进行序列化和压缩,得到压缩后的聊天消息,并将压缩后的聊天消息发送至对应的用户终端。

可选的,本发明实施例的一种聊天室消息分发装置,还包括:

负载监测模块,用于实时监测服务器的负载,并判断服务器的负载是否小于预设负载阈值;其中,服务器的负载包括以下至少一项:处理器使用率、内存占用率和带宽占用率;

相应的,轮询发送模块,具体用于:

在服务器的负载小于预设负载阈值时,按照第一预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端;

在服务器的负载大于或等于预设负载阈值时,按照第二预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

可选的,本发明实施例的一种聊天室消息分发装置,还包括:

清理模块,用于在轮询发送模块将所获取的聊天消息发送至对应的用户终端之后,清理存储在预设待推送队列中的待清理聊天室标识信息;其中,待清理聊天室标识信息为在预设哈希表中不存在的聊天室标识信息。

在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述一种聊天室消息分发方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述一种聊天室消息分发方法。

在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的一种聊天室消息分发方法。

本发明实施例提供的一种聊天室消息分发方法、装置及电子设备,通过确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,并且降低了服务器发送聊天室消息的延迟。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例的一种聊天室消息分发方法应用于聊天系统的结构示意图;

图2为本发明实施例的一种聊天室消息分发方法第一种实施方式的流程图;

图3为本发明实施例的一种聊天室消息分发方法第二种实施方式的流程图;

图4为本发明实施例的一种聊天室消息分发方法第三种实施方式的流程图;

图5为本发明实施例的一种聊天室消息分发方法第四种实施方式的流程图;

图6为本发明实施例的一种聊天室消息分发方法第五种实施方式的流程图;

图7为本发明实施例的一种聊天室消息分发方法中的预设待推送队列示意图;

图8为本发明实施例的一种聊天室消息分发方法第六种实施方式的流程图;

图9为本发明实施例的一种聊天室消息分发方法第七种实施方式的流程图;

图10为本发明实施例的一种聊天室消息分发方法第八种实施方式的流程图;

图11为本发明实施例的一种聊天室消息分发装置的结构示意图;

图12为本发明实施例的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

为了解决现有技术存在的问题,本发明实施例提供了一种聊天室消息分发方法、装置及电子设备,以实现在聊天消息并发量突增的情况下,保证服务器能够正常运行。

首先,本发明实施例的一种聊天室消息分发方法可以应用于服务器,该服务器可以与多个用户终端建立网络连接,例如,如图1所示,为本发明实施例的一种聊天室消息分发方法应用于聊天系统的结构示意图,该聊天系统可以包括:服务器110、第一用户终端120、第二用户终端130、第n用户终端140等。其中,服务器110中可以包括聊天室1、聊天室2、聊天室3、聊天室m等。

上述n个用户终端可以向服务器110中的m个聊天室中的任一个聊天室发送消息,服务器110在接收到上述n个用户终端发送的聊天消息后,可以确定聊天消息的消息并发量,在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中。然后,服务器110可以识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中。最后,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。从而可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,对聊天消息具有高吞吐量,并且降低服务器发送聊天室消息的延迟。

下面,对本发明实施例的一种聊天室消息分发方法进行介绍,如图2所示,为本发明实施例的一种聊天室消息分发方法第一种实施方式的流程图,该方法可以包括:

s210,确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值。

其中,该预设并发量阈值可以是根据经验预先设置的阈值。例如,可以根据网络带宽占用率、处理器处理速度等设置并发量阈值。

在一些示例中,可以在服务器中设置多个聊天室,以使得用户终端可以向任一个聊天室发送消息,从而实现用户在该聊天室中进行聊天。当用户终端向服务器中的任一个聊天室发送消息时,应用本发明实施例的一种聊天室消息分发方法的消息分发装置可以接收到该用户终端发送的聊天消息,因此,上述消息分发装置可以在同时接收多个用户终端发送的聊天消息时,对聊天消息的消息并发量进行统计,从而可以确定已接收到的聊天消息的消息并发量,然后可以判断该消息并发量是否大于或等于预设并发量阈值。

s220,在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中。

在一些示例中,上述的消息分发装置中可以预先设置有哈希表,该哈希表用于按照聊天室标识信息存储用户终端向对应聊天室发送的聊天消息,例如,该哈希表中可以存储用户终端向聊天室1发送的聊天消息1,还可以存储用户终端向聊天室2发送的聊天消息2。

具体的,为了防止用户终端发送的聊天消息的并发量突增造成服务器的负载压力过大,在消息并发量大于或等于预设并发量阈值时,可以将已接收的聊天消息存储在预设哈希表中。

在本发明实施例一种可选的实施例中,在图2所示的一种聊天室消息分发方法的基础上,在s220,将已接收的聊天消息存储在预设哈希表中时,可以针对每条聊天消息,以该聊天消息所属的聊天室标识信息为关键字,以该聊天消息为与该关键字对应的键值,将该聊天消息存储在预设哈希表中。例如,如表1所示,为存储聊天消息的预设哈希表,在表1中,可以将聊天室标识信息“聊天室1”、“聊天室2”、“聊天室3”等作为关键字,将与聊天室标识信息“聊天室1”对应的聊天消息1、聊天消息2、聊天消息x等作为与该“聊天室1”对应的键值,存储在预设哈希表中。

表1存储聊天消息的预设哈希表

s230,识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中。

其中,上述的预设条件可以是能够对存储在预设哈希表中的聊天消息进行有效识别的条件。

在一些示例中,上述的消息分发装置中可以预先设置有预设待推送队列,该预设待推送队列可以用于存储聊天室标识信息。

具体的,在通过上述步骤,将已接收的聊天消息存储在预设哈希表中之后,上述的消息分发装置可以在预设哈希表中识别满足预设条件的聊天消息。然后将识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中。

在本发明实施例一种可选的实施例中,在图2所示的一种聊天室消息分发方法的基础上,s230中的预设条件可以是:预设哈希表中,任一聊天室对应的聊天消息总条数小于或等于预设聊天室消息条数阈值;或者,任一聊天室的消息推送等待时长小于或等于预设等待时长阈值。

例如,假设,存储在预设哈希表中的与聊天室1对应的聊天消息总数有x条,小于或等于预设聊天室消息条数阈值,则可以将聊天室1的标识信息“聊天室1”存储在预设待推送队列中。

通过本步骤,将满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中,可以使得上述的消息分发装置在聊天消息并发量较大时,减少将聊天消息发送至对应的用户终端,降低服务器的负载压力。

s240,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

其中,该预设轮询周期可以是根据经验预先设置的轮询周期。

具体的,在将满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中之后,在本步骤中,上述的消息分发装置可以按照预设轮询周期,对预设待推送队列进行轮询。在轮询到任一聊天室标识信息后,可以按照该聊天室标识信息,从预设哈希表中获取与该聊天室标识信息对应的聊天消息,然后将与该聊天室标识信息对应的聊天消息发送至对应的用户终端。

本发明实施例提供的一种聊天室消息分发方法,通过确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,并且降低了服务器发送聊天室消息的延迟。

在本发明实施例一种可选的实施例中,为了能够及时将已接收的聊天消息发送至用户终端,在s210,判断消息并发量是否大于或等于预设并发量阈值之后,本发明实施例还提供了一种可选的实施方式,如图3所示,为本发明实施例的一种聊天室消息分发方法第二种实施方式的流程图,该方法还可以包括:

s250,在消息并发量小于预设并发量阈值时,将已接收的聊天消息发送至对应的用户终端。

具体的,当上述的消息分发装置在判断已接收的聊天消息的消息并发量小于预设并发量阈值时,则说明用户终端同时发送的聊天消息对服务器造成的负载压力较小,可以直接将已接收的聊天消息发送至对应的用户终端,从而使得对应的用户终端能够及时接受到该聊天消息。

在本发明实施例一种可选的实施例中,为了能够及时将已接收的聊天消息发送至用户终端,在s220,将已接收的聊天消息存储在预设哈希表中之后,本发明实施例还提供了一种可能的实现方式,如图4所示,为本发明实施例的一种聊天室消息分发方法第三种实施方式的流程图,该方法还可以包括:

s260,识别存储在预设哈希表中的不满足预设条件的聊天消息,将不满足预设条件的聊天消息发送至对应的用户终端。

具体的,上述的消息分发装置在将已接收的聊天消息存储在预设哈希表中之后,还可以在预设哈希表中识别不满足预设条件的聊天消息,然后将不满足预设条件的聊天消息发送至对应的用户终端,从而可以使得用户终端能够及时接收到该不满足预设条件的聊天消息,降低聊天消息发送的延迟时间,提高用户终端的用户体验。

在本发明实施例的一种可能的实现方式中,在图2所示的一种聊天室消息分发方法的基础上,如图5所示,为本发明实施例的一种聊天室消息分发方法第四种实施方式的流程图,在s230将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中,可以包括:

s231,将所识别出的满足预设条件的聊天消息对应的聊天室标识信息取模,得到取模后的聊天室标识信息。

其中,该聊天室标识信息可以是由数字组成的标识信息,例如,聊天室1的标识信息可以是“15201”。

在一些示例中,为了减少将聊天室标识信息存储在预设待推送队列中时对空间的占用,以及方便存储,可以在存储该聊天室标识信息时,对所识别出的满足预设条件的聊天消息对应的聊天室标识信息取模,然后将取模后的聊天室标识信息存储在预设待推送队列中。

例如,对聊天室1的标识信息“15201”进行取模时,可以为“15201%10”,得到取模后的聊天室1的标识信息为“1”。

s232,将取模后的聊天室标识信息存储在预设待推送队列中。

在一些示例中,在对聊天室标识信息进行取模后,可以对聊天室标识信息与取模后的聊天室标识信息的对应关系进行存储,以便在后续步骤中能够根据取模后的聊天室标识信息获取到对应的聊天室标识信息。

相应的,s240,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端,可以具体包括:

按照预设轮询周期,轮询预设待推送队列中的取模后的聊天室标识信息,根据取模后的聊天室标识信息,获取对应的聊天室标识信息,并从预设哈希表中获取与各聊天室标识信息对应的聊天消息,将所获取的聊天消息发送至对应的用户终端。

具体的,上述的消息分发装置在按照预设轮询周期对预设待推送队列进行轮询时,可以轮询获取到预设待推送队列中的取模后的聊天室标识信息。然后可以依据取模后的聊天室标识信息,获取到对应的聊天会标识信息,再根据该对应的聊天室标识信息,从预设哈希表中获取与该对应的聊天室标识信息对应的聊天消息,并所获取到的聊天消息发送至对应的用户终端。

在本发明实施例的一种可能的实现方式中,在图2所示的一种聊天室消息分发方法的基础上,如图6所示,为本发明实施例的一种聊天消息分发方法第五种实施方式的流程图,s240,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端,可以包括:

s241,按照预设轮询周期,以预设并行度轮询预设待推送队列中的各聊天室标识信息。

具体的,为了在保证服务器正常运行的前提下,进一步降低聊天消息的延迟,上述的消息分发装置在按照预设轮询周期在预设待推送队列中进行轮询时,可以以预设并行度轮询预设待推送队列中的各聊天室标识信息。

在一些示例中,上述的预设并行度可以是处理器核数的整数倍,例如,预设并行度可以是处理器核数的2倍。

例如,如图7所示,为本发明实施例的一种聊天室消息分发方法中的预设待推送队列示意图,在图7中,预设并行度为4,可以包括预设待推送队列1、预设待推送队列2、预设待推送队列3和预设待推送队列4。其中,预设待推送队列1中可以存储聊天室标识信息“10001~19999”,预设待推送队列2中可以存储聊天室标识信息“20001~29999”,预设待推送队列3中可以存储聊天室标识信息“30001~39999”,预设待推送队列4中可以存储聊天室标识信息“40001~49999”。

上述的消息分发装置可以在t1时刻同时获取聊天室标识信息“10001”、“20001”“30001”以及“40001”。在预设轮询周期结束的t2时刻,同时获取聊天室标识信息“10002”、“20002”“30002”以及“40002”。

s242,从预设哈希表中,获取与各聊天室标识信息对应的聊天消息,并将与任一聊天室标识信息对应的聊天消息,发送至与该聊天室标识信息对应的用户终端。

具体的,上述的消息分发装置在从预设待推送队列中获取到聊天室标识信息后,可以从预设哈希表中,获取与该聊天室标识信息对应的聊天消息,然后将与该聊天室标识信息对应聊天消息发送至对应的用户终端。

例如,在t1时刻同时获取聊天室标识信息“10001”、“20001”“30001”以及“40001”后,可以从预设哈希表中,分别获取与聊天室标识信息“10001”对应的聊天消息、与聊天室标识信息“20001”对应的聊天消息、与聊天室标识信息“30001”对应的聊天消息以及与聊天室标识信息“40001”对应的聊天消息。然后将与聊天室标识信息“10001”对应的聊天消息发送至与与聊天室标识信息“10001”对应的用户终端,将与聊天室标识信息“20001”对应的聊天消息发送至与聊天室标识信息“20001”对应的用户终端。

通过本步骤,可以在保证服务器正常运行的前提下,进一步降低聊天消息的延迟,提高用户终端的用户体验,还可以提高服务器的吞吐量。

在本发明实施例的一种可能的实现方式中,为了减少发送聊天消息时对带宽的占用以及对聊天消息的保密,在图2所示的一种聊天室消息分发方法的基础上,如图8所示,为本发明实施例的一种聊天消息分发方法第六种实施方法的流程图,在s240中,在将所获取的聊天消息发送至对应的用户终端时,具体可以包括:

s240a,对所获取的聊天消息进行序列化和压缩,得到压缩后的聊天消息,将压缩后的聊天消息发送至对应的用户终端。

在一些示例中,在对所获取的聊天消息进行序列化时,可以通过protocolbuffer方法对所获取的聊天消息进行序列化。在对所获取的聊天消息进行序列化后,可以再对该聊天消息进行压缩,降低发送该聊天消息时对带宽的占用。

具体的,在对序列化后的聊天消息进行压缩时,可以使用gzip压缩方式进行压缩,也可以使用zip压缩方式进行压缩。

在本发明实施例的一种可能的实现方式中,为了在服务器负载不同时实现对聊天消息采用不同的方式进行推送,提高应用本发明实施例的一种聊天室消息分发方法的灵活性,在图2所示的一种聊天室消息分发方法的基础上,如图9所示,为本发明实施例的一种聊天室消息分发方法第七种实施方式的流程图,在s240,按照预设轮询周期,轮询预设待推送队列之前,本发明实施例的一种聊天室消息分发方法还可以包括:

s270,实时监测服务器的负载,并判断服务器的负载是否小于预设负载阈值。

其中,服务器的负载包括以下至少一项:处理器使用率、内存占用率和带宽占用率。预设负载阈值可以是根据经验预先设置的负载阈值。

具体的,上述的消息分发装置在对预设待推送队列进行轮询之前,可以实时监测服务器的负载,并判断服务器的负载是否小于预设负载阈值。从而可以根据服务器的负载对轮询周期的时长进行调整,提高应用本发明实施例的一种聊天室消息分发方法的灵活性。

相应的,s240,按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端,可以包括:

s240b,在服务器的负载小于预设负载阈值时,按照第一预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

其中,该第一预设轮询周期可以小于第二预设轮询周期。

具体的,当服务器的负载小于预设负载阈值时,说明服务器当前负载较小,可以按照第一预设轮询周期对预设待推送队列进行轮询。以缩短上述消息分发装置轮询预设待推送队列的时间间隔,及时将聊天消息发送至对应的用户终端,降低聊天消息的延迟。

s240c,在服务器的负载大于或等于预设负载阈值时,按照第二预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

具体的,当服务器的负载大于或等于预设负载阈值时,说明服务器当前负载较大,若依然采用第一预设轮询周期,可能会进一步增加服务器的负载。因此,为了在服务器的负载较大时降低服务器的负载,上述的消息分发装置可以按照第二预设轮询周期,对预设待推送队列进行轮询。

在本发明实施例的一种可能的实现方式中,为了减少对服务器空间的占用,在图2所示的一种聊天室消息分发方法的基础上,本发明实施例还提供了一种可能的实现方式,如图10所示,为本发明实施例的一种聊天室消息分发方法第八种实施方式的流程图,在将所获取的聊天消息发送至对应的用户终端之后,本发明实施例的一种聊天室消息分发方法,还可以包括:

s280,清理存储在预设待推送队列中的待清理聊天室标识信息。

其中,待清理聊天室标识信息为在预设哈希表中不存在的聊天室标识信息。

具体的,当部分聊天室标识信息在预设待推送队列中不存在,而在预设哈希表中存在时,则说明上述的消息分发装置,已经将该部分聊天室标识信息对应的聊天消息已经发送至对应的用户终端,该存储在预设待推送队列中的部分聊天室标识信息为过期的聊天室标识信息,占用了服务器的存储空间,因此,可以对该部分聊天室标识信息进行清理。

在一些示例中,上述的消息分发装置可以设置有定时模块,该定时模块可以以“天”为周期进行计时,在计时结束后,可以指示该消息分发装置对存储在预设待推送队列中的待清理聊天室标识信息进行清理,从而减少对服务器空间的占用。

通过本步骤,可以减少对服务器的空间占用,进一步降低服务器负载压力,节省服务器存储空间。

相应于上述方法实施例,本发明实施例还提供了一种聊天室消息分发装置,如图11所示,为本发明实施例的一种聊天室消息分发装置的结构示意图,该装置可以包括:

判断模块1110,用于确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;

存储模块1120,用于在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;

识别模块1130,用于识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;

轮询发送模块1140,用于按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

本发明实施例提供的一种聊天室消息分发装置,通过确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,并且降低了服务器发送聊天室消息的延迟。

具体的,本发明实施例的一种聊天室消息分发装置,还可以包括:

第一发送模块,用于在消息并发量小于预设并发量阈值时,将已接收的聊天消息发送至对应的用户终端。

具体的,存储模块1120,具体用于:

针对每条聊天消息,以该聊天消息所属的聊天室标识信息为关键字,以该聊天消息为与该关键字对应的键值,将该聊天消息存储在预设哈希表中。

具体的,本发明实施例的一种聊天室消息分发装置,还可以包括:

第二发送模块,用于识别存储在预设哈希表中的不满足预设条件的聊天消息,将不满足预设条件的聊天消息发送至对应的用户终端。

具体的,预设条件为:预设哈希表中,任一聊天室对应的聊天消息总条数小于或等于预设聊天室消息条数阈值;

或者,任一聊天室的消息推送等待时长小于或等于预设等待时长阈值。

具体的,识别模块1130,具体用于:

将所识别出的满足预设条件的聊天消息对应的聊天室标识信息取模,得到取模后的聊天室标识信息;将取模后的聊天室标识信息存储在预设待推送队列中。

具体的,轮询发送模块1140,可以包括:

轮询子模块,用于按照预设轮询周期,以预设并行度轮询预设待推送队列中的各聊天室标识信息;

发送子模块,用于从预设哈希表中,获取与各聊天室标识信息对应的聊天消息,并将与任一聊天室标识信息对应的聊天消息,发送至与该聊天室标识信息对应的用户终端。

具体的,轮询发送模块1140,具体用于:

对所获取的聊天消息进行序列化和压缩,得到压缩后的聊天消息,并将压缩后的聊天消息发送至对应的用户终端。

具体的,本发明实施例的一种聊天室消息分发装置,还可以包括:

负载监测模块,用于实时监测服务器的负载,并判断服务器的负载是否小于预设负载阈值;其中,服务器的负载包括以下至少一项:处理器使用率、内存占用率和带宽占用率;

具体的,轮询发送模块1140,具体用于:

在服务器的负载小于预设负载阈值时,按照第一预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端;

在服务器的负载大于或等于预设负载阈值时,按照第二预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

具体的,本发明实施例的一种聊天室消息分发装置,还可以包括:

清理模块,用于在轮询发送模块将所获取的聊天消息发送至对应的用户终端之后,清理存储在预设待推送队列中的待清理聊天室标识信息;其中,待清理聊天室标识信息为在预设哈希表中不存在的聊天室标识信息。

本发明实施例还提供了一种电子设备,如图12所示,包括处理器1210、通信接口1220、存储器1230和通信总线1240,其中,处理器1210,通信接口1220,存储器1230通过通信总线1240完成相互间的通信,

存储器1230,用于存放计算机程序;

处理器1210,用于执行存储器1230上所存放的程序时,实现如下步骤:

确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;

在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表;

识别存储在预设哈希表中满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;

按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。

本发明实施例提供的一种电子设备,通过确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,并且降低了服务器发送聊天室消息的延迟。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的一种聊天室消息分发方法。

本发明实施例提供的一种计算机可读存储介质,通过确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,并且降低了服务器发送聊天室消息的延迟。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的一种聊天室消息分发方法。

本发明实施例提供的一种包含指令的计算机程序产品,通过确定已接收的聊天消息的消息并发量,并判断消息并发量是否大于或等于预设并发量阈值;在消息并发量大于或等于预设并发量阈值时,将已接收的聊天消息存储在预设哈希表中;识别存储在预设哈希表中的满足预设条件的聊天消息,并将所识别出的满足预设条件的聊天消息对应的聊天室标识信息存储在预设待推送队列中;按照预设轮询周期,轮询预设待推送队列,并按照预设待推送队列中的聊天室标识信息,从预设哈希表中获取与各聊天室标识信息对应的聊天消息,并将所获取的聊天消息发送至对应的用户终端。可以实现在聊天消息并发量突增的情况下,保证服务器正常运行,并且降低了服务器发送聊天室消息的延迟。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1