一种消息处理方法与装置与流程

文档序号:11180610阅读:496来源:国知局
一种消息处理方法与装置与流程

本发明涉及互联网直播技术领域,尤其涉及一种消息处理方法与装置。



背景技术:

网络直播系统是一种将主播用户的直播视频流广播至多个观众用户进行观看的互联网系统。网络直播系统通常按照直播间或房间进行划分,在一个房间内或一个直播间内通常包括:一个主播用户和多个参与用户。

参与用户通过向直播间发送即时消息与主播用户进行实时互动,而为了实现这种实时互动,需要在后台通过网关维护一套长链接,即参与用户与主播用户的客户端需要连接相应的网关才能正常地发送和接收弹幕消息。通常,在直播高峰期,消息并发量的激增,使得网关超负荷运行,在这种情况下很容易导致一些网关出现故障。一旦出现这样的问题,就会使得大量的弹幕无法正常地推送出去,影响用户体验。



技术实现要素:

本发明提供一种消息处理方法与装置,目的在于在直播高峰期,降低向参与直播间的客户端推送用户消息所占的网关带宽,从而有效避免网关超负荷运行引起网关出现故障的情况。

为了解决上述技术问题,本发明提供一种消息处理方法,包括:

获取直播间的消息并发量;

若所述消息并发量超过第一阈值,则对所述直播间的消息进行合并处理;

将合并处理后的消息推送至接入所述直播间的客户端。

可选地,对所述直播间的消息进行合并处理,包括:

基于所述消息并发量,确定积压时长;

将所述积压时长内的消息进行打包以生成消息包;

其中,所述消息包即为所述合并处理后的消息。

可选地,基于所述消息并发量,确定消息积压时长,包括:

获取多个阈值区间及各阈值区间对应的参考时长;

将所述消息并发量所在阈值区间对应的参考时长,确定为所述积压时长。

可选地,对所述直播间的消息进行合并处理,包括:

对所述直播间的消息进行合并,以将部分消息删除;

其中,删除后剩余的消息即为所述合并处理后的消息。

可选地,对所述直播间的消息进行合并,以将部分消息删除,包括:

将相同/相似消息内容的消息进行合并;和/或

将同一消息来源的多个消息进行合并。

可选地,所述方法,还包括:

对所述直播间的消息进行优先级判定;

以及,对所述直播间的消息进行合并处理,包括:

对优先级低于预置级别的消息进行合并处理。

可选地,所述方法,还包括:

获取多个直播间的总消息并发量;

若所述总消息并发量超过第二阈值,则从所述多个直播间中找出未进行合并处理的直播间;

对所述未进行合并处理的直播间的消息进行合并处理。

可选地,所述方法,还包括:

根据所述总消息并发量,确定标准积压时长;

获取所述多个直播间中各直播间当前合并处理采用的积压时长;

从所述多个直播间中找出当前合并处理采用的积压时长小于所述标准积压时长的直播间;

采用所述标准积压时长对所述当前合并处理采用的积压时长小于所述标准积压时长的直播间的消息进行合并处理。

为了解决上述技术问题,本发明还提供了一种消息处理装置,所述装置,包括:

第一获取模块,用于获取直播间的消息并发量;

处理模块,用于若所述消息并发量超过第一阈值,则对所述直播间的消息进行合并处理;

推送模块,用于将合并处理后的消息推送至接入所述直播间的客户端。

在本发明实施例中,当发送至某一直播间的消息并发量超过预先设置的阈值时,就不再针对参与该直播间的用户所发送的每一条消息进行一一推送至各个接入该直播间的客户端,而是将发送至该直播间的多个消息进行合并处理,再将合并处理后的消息统一推送至接入该直播间的客户端。这在直播高峰期时,可以很大程度上降低网关向客户端推送消息的次数,有效降低推送用户消息所占的网关带宽,从而有效避免网关超负荷运行引起网关出现故障的情况。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的消息处理方法的流程示意图;

图2为本发明又一实施例提供的消息处理方法的流程示意图;

图3为本发明一实施例提供的消息处理装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于监测”。类似地,取决于语境,短语“如果确定”或“如果监测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当监测(陈述的条件或事件)时”或“响应于监测(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

图1为本发明一实施例提供的消息处理方法的流程示意图。如图1所示,该方法包括:

101、获取直播间的消息并发量。

102、若所述消息并发量超过第一阈值,则对所述直播间的消息进行合并处理。

103、将合并处理后的消息推送至接入所述直播间的客户端。

在直播类应用场景中,参与直播间的用户向直播间发送的消息包括文字消息、图片消息、礼物消息等。其中,消息并发量指的是同一时刻向所述直播间发送的总的消息数量。

上述步骤102中,所述第一阈值可以根据过往经验进行预先设定。当然,所述第一阈值还可以随时根据实际情况进行更新。具体更新方式如下,监听当前直播系统中是否有主播关播和/或开播的操作;若有,则获取当前直播系统中网关的数量n以及单个网关同一时刻所能处理的最大消息量m;获取当前直播系统中正在直播的直播间的数量q;将nm/q作为单个直播间的最大消息并发量;依据所述单个直播间的最大消息并发量来更新所述第一阈值。为了防止网关满负载运行,可将所述第一阈值设置在单个直播间的最大消息并发量的百分之九十以内。

需要说明的是,由于在通常情况下,为直播系统设置的网关的数量是个固定值,每个网关同一时刻所能处理的最大消息量也是个固定值,因此,只需监听是否有主播关播和/或开播的操作,就可以确定出当前直播系统中正在直播的直播间的数量是否发生改变,一旦确定出直播间的数量的改变量,就可以更新第一阈值。当然,若为直播系统设置的网关的数量发生了改变或是对直播系统中的网关设备进行了性能改进或是替换,也可根据实际情况对第一阈值进行更新。

例如,当前为所述直播系统设置的网关的数量为2个,单个网关同一时刻所能处理的最大消息量为1000条,当前正在直播的直播间的数量为20个,那么通过计算可知单个直播间的最大消息并发量为100条,为了防止网关满负载运行,可将第一阈值设置在90条以内。

若所述消息并发量超过第一阈值,则对所述直播间的消息进行合并处理,所述合并处理具体可采用如下方法中的一种或多种实现:

方法一、预先设置一积压时长,将积压时长内的所述直播间的消息进行打包以生成消息包。例如,预设的积压时长为1s,在某一时刻发现发送至所述直播间的消息并发量超过第一阈值时,则从该时刻进行计时,将计时1s内的发送给所述直播间的多个消息进行打包,生成一个消息包。再将所述消息包推送至接入所述直播间的所有客户端。

方法二、随机删除部分发送至所述直播间的消息。例如,在某一时刻发送至所述直播间的消息为100条,则随机删除其中20条消息,将剩下的80条消息一一推送至接入所述直播间的所有客户端。

方法三、将发送至所述直播间的消息中相同/相似消息内容的消息进行合并。例如,在某一时刻发送至所述直播间的消息中存在多条消息相同/相似,这样,就可以将相同/相似的消息合多为一,即将相同/相似的消息只保留一条进行推送。

方法四、将发送至所述直播间的消息中的同一消息来源的多个消息进行合并。其中,所述同一消息来源的多个消息可以理解为同一个参与用户发送的多个消息。例如,某一参与用户高频率地向直播间发送消息,为了不影响其他参与用户的参与互动,可将该参与用户的多个消息中的部分消息进行删除。

在本发明实施例中,当发送至某一直播间的消息并发量超过预先设置的阈值时,就不再针对参与该直播间的用户所发送的每一条消息进行一一推送至各个接入该直播间的客户端,而是将发送至该直播间的多个消息进行合并处理,再将合并处理后的消息统一推送至接入该直播间的客户端。这在直播高峰期时,可以很大程度上降低网关向客户端推送消息的次数,有效降低推送用户消息所占的网关资源,从而有效避免网关超负荷运行引起网关出现故障的情况。

图2为本发明又一实施例提供的消息处理方法的流程示意图。如图2所述,该方法包括:

201、获取直播间的消息并发量。

202、若所述消息并发量超过第一阈值,则基于所述消息并发量,确定积压时长。

203、将所述积压时长内的消息进行打包以生成消息包,其中,所述消息包即为所述合并处理后的消息。

204、将合并处理后的消息推送至接入所述直播间的客户端。

在步骤201获取直播间的消息并发量的步骤,具体实现方式如下,获取为所述直播间维护长连接的至少一个网关;分别获取所述至少一个网关上接收到的所述直播间的单消息并发量;将所述至少一个网关上的单消息并发量之和作为所述直播间的消息并发量。在实际应用中,为所述直播间维护长连接的网关可能为一个,也可能为多个。当网关为一个时,该网关上针对所述直播间的单消息并发量即为所述直播间的消息并发量;当网关为多个时,将多个网关上的单消息并发量进行相加,得到的总和即为所述直播间的消息并发量。

上述步骤202中,当监视到直播间的消息并发量超过第一阈值时,则根据消息并发量,确定积压时长。通常,消息并发量越大,其积压时长就越长。

在一种可实现的方案中,上述根据消息并发量,确定积压时长,可包括:获取多个阈值区间及各阈值区间对应的参考时长;将所述消息并发量所在阈值区间对应的参考时长,确定为所述积压时长。

例如,直播间的最大消息并发量为x条,将第一阈值设置为70%x,将70%x~90%x设置为第一阈值区间,将90%x及以上设置为第二阈值区间,为第一阈值区间设置第一参考时长为a,为第二阈值区间设置第二参考时长为b。若获取到的直播间的消息并发量y为80%x,由于y处在第一阈值区间内,则可以确定出积压时长为a。优选地,a可设置为1s,b可设置为2s。

由上述实施例的描述可知,第一阈值可根据实际情况进行更新,即依据获取到的新的直播间的最大消息并发量来更新第一阈值。作为可选地,在设置第一阈值时,预先设置一具体占比(例如:70%),在获取到新的直播间的最大消息并发量后,将该具体占比与新的直播间的最大消息并发量的乘积作为第一阈值。同样,在设置阈值区间的上下限时,也是预先设置一下限占比和上限占比,在获取到新的直播间的最大消息并发量后,将下限占比与直播间的最大消息并发量的乘积作为该阈值区间的下限值,将上限占比与直播间的最大消息并发量的乘积作为该阈值区间的上限值。

上述步骤203和204中,由于通过tcp(transmissioncontrolprotocol,传输控制协议)传输消息数据时,会在消息数据中加入一些冗余信息以确保能够正常地将所述消息数据推送至接入直播间的各个客户端。在对所述积压时长内的多个消息进行打包处理时,就可将这些消息中的相同部分的冗余信息进行合多为一,即在消息包中只保留一份相同部分的冗余信息,这样不仅有效压缩了数据量,还因将积压时长内的多个消息压缩成一个消息包,向接入所述直播间的客户端作一次推送,大幅度降低了网关的推送次数。

在一种可实现的方案中,还可以将所述积压时长内的多个消息中相同或相似的消息进行合并,即是将那些相同或相似的多个消息在消息包中只保留一份;或是将同一消息来源(例如,同一个参与用户发送的多个消息可认为是同一消息来源的)的多个相同或相似的消息进行合并,即是将同一来源的多个相同或相似的消息在消息包中只保留一份。

在本发明实施例中,当发送至某一直播间的消息并发量超过预先设置的阈值时,就不再针对参与该直播间的用户所发送的每一条消息进行一一推送至各个接入该直播间的客户端,而是将发送至该直播间的多个消息进行合并处理,再将合并处理后的消息统一推送至接入该直播间的客户端。这在直播高峰期时,可以很大程度上降低网关向客户端推送消息的次数,有效降低推送用户消息所占的网关带宽,从而有效避免网关超负荷运行引起网关出现故障的情况。

在上述各实施例和下述各实施例中,所述方法,还包括:对所述直播间的消息进行优先级判定;以及,对所述直播间的消息进行合并处理,包括:对优先级低于预置级别的消息进行合并处理。消息的优先级可根据消息的重要性进行设定,例如,礼物消息的优先级最高,设为三级、文字消息的优先级其次,设为二级,图片消息的优先级最低,设为一级。预置级别为三级,那么在消息合并处理时,就将二级的文字消息和一级的图片消息进行合并,三级的礼物消息进行实时推送,不进行合并处理。

在针对单房间设置第一阈值的同时,还可以针对整个直播系统中总消息并发量设置第二阈值。当总消息并发量超过第二阈值时,对直播系统中的未进行合并处理的直播间的消息进行合并处理。具体实现方法如下:获取多个直播间的总消息并发量;若所述总消息并发量超过第二阈值,则从所述多个直播间中找出未进行合并处理的直播间;对所述未进行合并处理的直播间的消息进行合并处理。其中,所述多个直播间指的是整个直播系统中的所有直播间。

优选地,对所述未进行合并处理的直播间中的一个直播间的消息进行合并处理的步骤,具体可包括:基于所述总消息并发量,确定标准积压时长;将所述标准积压时长内的消息进行打包以生成消息包。

所述基于所述总消息并发量,确定标准积压时长的步骤,具体可包括:获取针对总消息并发量设置的多个标准阈值区间及各标准阈值区间对应的标准参考时长;将所述总消息并发量所在标准阈值区间对应的标准参考时长,确定为所述标准积压时长。

由于直播系统中网关的数量和单个网关同一时刻所能处理的消息量是固定的,且该直播系统所能处理的最大消息并发量为网关数量与单个网关同一时刻所能处理的消息量的乘积,也就是说,该直播系统所能处理的最大消息并发量为一固定值。所以,在设置第二阈值时,可具体设置为一具体数值,只要该具体数值在该直播系统所能处理的最大消息并发量的百分之九十以内即可。在针对总消息并发量设置标准阈值区间以及各标准阈值区间对应的标准参考时长时,可将标准阈值区间的上下限设置为一具体数值。例如。直播系统所能处理最大消息并发量为2000条,第一标准阈值区间设置在1400~1800,其标准参考时长为1s,第二标准阈值区间设置在1800及以上,其标准参考时长为2s。

进一步地,在总消息并发量超过第二阈值时,除了针对那些没有进行合并处理的直播间进行消息合并处理,还可以针对那些已进行合并处理的直播间当前采用的积压时长进行合理调整。具体实现方式如下:根据所述总消息并发量,确定标准积压时长;获取所述多个直播间中各直播间当前合并处理采用的积压时长;从所述多个直播间中找出当前合并处理采用的积压时长小于所述标准积压时长的直播间;采用所述标准积压时长对所述当前合并处理采用的积压时长小于所述标准积压时长的直播间的消息进行合并处理。例如,直播间a当前采用的积压时长为1s,而确定出的标准积压时长为2s,则以2s的积压时长来对直播间a的消息进行合并处理。

在本发明实施例中,当发送至某一直播间的消息并发量超过预先设置的阈值时,就不再针对参与该直播间的用户所发送的每一条消息进行一一推送至各个接入该直播间的客户端,而是将发送至该直播间的多个消息进行合并处理,再将合并处理后的消息统一推送至接入该直播间的客户端。这在直播高峰期时,可以很大程度上降低网关向客户端推送消息的次数,有效降低推送用户消息所占的网关带宽,从而有效避免网关超负荷运行引起网关出现故障的情况。

图3为本发明一实施例提供的消息处理装置的结构示意图。如图3所述,该装置包括:第一获取模块301、处理模块302以及推送模块303。

第一获取模块301,用于获取直播间的消息并发量。

处理模块302,用于若所述消息并发量超过第一阈值,则对所述直播间的消息进行合并处理。

推送模块303,用于将合并处理后的消息推送至接入所述直播间的客户端。

可选地,所述处理模块302,包括:

确定单元,用于基于所述消息并发量,确定积压时长。

合并单元,用于将所述积压时长内的消息进行打包以生成消息包。

其中,所述消息包即为所述合并处理后的消息。

可选地,所述确定单元,包括:

获取子单元,用于获取多个阈值区间及各阈值区间对应的参考时长。

确定子单元,用于将所述消息并发量所在阈值区间对应的参考时长,确定为所述积压时长。

可选地,所述处理模块302,包括:

删除单元,用于对所述直播间的消息进行合并,以将部分消息删除。

其中,删除后剩余的消息即为所述合并处理后的消息。

可选地,所述删除单元,还用于:

将相同/相似消息内容的消息进行合并;和/或

将同一消息来源的多个消息进行合并。

可选地,所述装置,还包括:

判定模块,用于对所述直播间的消息进行优先级判定。

以及,所述处理模块302,还用于:

对优先级低于预置级别的消息进行合并处理。

可选地,所述装置,还包括:

第二获取模块,用于获取多个直播间的总消息并发量。

查找模块,用于若所述总消息并发量超过第二阈值,则从所述多个直播间中找出未进行合并处理的直播间。

所述处理模块302,还用于对所述未进行合并处理的直播间的消息进行合并处理。

可选地,所述装置,还包括:

确定模块,用于根据所述总消息并发量,确定标准积压时长。

第三获取模块,用于获取所述多个直播间中各直播间当前合并处理采用的积压时长。

所述查找模块,还用于从所述多个直播间中找出当前合并处理采用的积压时长小于所述标准积压时长的直播间。

所述处理模块302,还用于采用所述标准积压时长对所述当前合并处理采用的积压时长小于所述标准积压时长的直播间的消息进行合并处理。

这里需要说明的是:本实施例提供的所述消息处理装置可实现上述各消息处理方法实施例提供的技术方案,具体的实现原理可参见上述各实施例中的相应内容,此处不再赘述。

在本发明实施例中,当发送至某一直播间的消息并发量超过预先设置的阈值时,就不再针对参与该直播间的用户所发送的每一条消息进行一一推送至各个接入该直播间的客户端,而是将发送至该直播间的多个消息进行合并处理,再将合并处理后的消息统一推送至接入该直播间的客户端。这在直播高峰期时,可以很大程度上降低网关向客户端推送消息的次数,有效降低推送用户消息所占的网关带宽,从而有效避免网关超负荷运行引起网关出现故障的情况。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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