一种网络群消息的分发控速的方法、装置和系统与流程

文档序号:31622475发布日期:2022-09-23 23:41阅读:71来源:国知局
一种网络群消息的分发控速的方法、装置和系统与流程

1.本发明涉及网络通信技术领域,特别涉及一种网络群消息的分发控速的方法、装置和系统。


背景技术:

2.群聊已经成为主流im软件的基本功能,不管是亲友群,朋友群,亦或是工作群,都是非常常见的场景。随着移动互联网的发展,即时通讯服务被广泛应用到各个行业,客户业务快速发展,传统百人甚至千人上限的群聊已经无法满足很多业务发展需求,所以大群和超大群的业务应运而生。
3.以一个万人群的模型为例,如果群中有人发了消息,那么这条消息需要按照1:9999的比例进行转发投递,如果我们按照常规消息的处理流程,那么服务的消息分发压力巨大。消息量大的情况下,服务端向客户端发送消息的处理速度将会成为系统瓶颈,而一旦群消息的数量激增势必也会影响到用户的单聊消息的下发,从而导致服务的不可用。
4.公开号为cn114138505a的中国专利申请,提出一种分布式网络消息的分发方法,建立执行线程并注册到预设io复用设施,执行消息分发请求并生成操作请求后,将操作请求存储到相关联的无锁缓冲区,提高网络负载情况下的业务处理能力,提升消息分发性能。但未从根本上解决大量消息传输速度的问题。
5.因此,现有技术急需解决大群和超大群的消息转发和控速问题,从而让服务器能根据系统所能承载的能力,来有效处理大规模和超大规模的群消息。


技术实现要素:

6.鉴于现有技术中的上述缺陷或不足,本发明提供了一种网络群消息的分发控速的方法、装置和系统,以部分的或全部的解决上述技术问题。
7.本发明的一个方面,提供了一种网络群消息的分发控速的方法,用于群组服务器,包括:若通信群的群成员数量小于第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列和至少一个慢速分发队列;若通信群的群成员数量小于第二阈值,则将群消息分发映射到快速分发队列中,其中,第二阈值小于第一阈值;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
8.进一步的,多个群消息分发队列还包括至少一个中速分发队列;上述网络群消息的分发控速的方法,其替换性的包括如下步骤:若通信群的群成员数量小于第三阈值,且该第三阈值小于第二阈值,则将群消息分发映射到快速分发队列;若通信群的群成员数量大于第三阈值且小于第二阈值,则将群消息分发映射到中
速分发队列;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
9.进一步的,快速分发队列具有比中速分发队列更短的休眠时间和更多的消费线程数,中速分发队列具有比慢速分发队列更短的休眠时间和更多的消费线程数。
10.进一步的,还包括:若通信群的群成员数量大于第一阈值,则将群组服务器单位时间内向消息服务器投递的群消息的数量上限设定为消息服务器分发能力的一半。
11.进一步的,多个群消息分发队列的数量等于群组服务器cpu内核的数量。
12.本发明的另一方面,还提供了一种网络群消息的分发控速的装置,用于群组服务器,包括:队列模块,被配置为若通信群的群成员数量小于第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列和至少一个慢速分发队列;第一分发模块,被配置为若通信群的群成员数量小于第二阈值,则将群消息分发映射到快速分发队列中,其中,第二阈值小于第一阈值;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
13.进一步的,队列模块,被进一步配置为多个群消息分发队列还包括至少一个中速分发队列;还包括用于替代第一分发模块的第二分发模块,被配置为若通信群的群成员数量小于第三阈值,且该第三阈值小于第二阈值,则将群消息分发映射到快速分发队列;若通信群的群成员数量大于第三阈值且小于第二阈值,则将群消息分发映射到中速分发队列;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
14.进一步的,快速分发队列具有比中速分发队列更短的休眠时间和更多的消费线程数,中速分发队列具有比慢速分发队列更短的休眠时间和更多的消费线程数。
15.进一步的,还包括第三分发模块,被配置为:若通信群的群成员数量大于第一阈值,则将群组服务器单位时间内向消息服务器投递的群消息的数量上限设定为消息服务器分发能力的一半。
16.本发明的另一方面,还提供了一种网络群消息的分发控速的系统,包括:群组服务器,用于接收来自客户端的群消息;若通信群的群成员数量小于第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列和至少一个慢速分发队列,若通信群的群成员数量小于第一阈值和第二阈值,则将该群消息分发映射到快速分发队列中,其中,第二阈值小于第一阈值,若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中;若通信群的群成员数量大于第一阈值,则将群组服务器单位时间内向消息服务器投递的群消息的数量上限设定为消息服务器分发能力的一半;根据通信群的群成员的群关系,将该群消息通过群消息分发队列投递至消息服务器;消息服务器,用于接收群组服务器根据通信群的群成员的群关系投递的群消息,
将该群消息分发至群成员对应的客户端;接入节点,用于建立和维护客户端和消息服务器之间的通信链接。
17.本发明提供的一种网络群消息的分发控速的方法、装置和系统,解决了超大群的消息转发和控速问题,让服务器能够根据系统所能够承载的能力来有效处理超大规模的群消息。
附图说明
18.通过阅读参照以下附图对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:图1是本技术一个实施例提供的通信工具中群聊消息分发架构的示意图;图2是本技术一个实施例提供的普通大群的网络群消息的分发控速的方法的逻辑流程图;图3是本技术一个实施例提供的群消息分发队列的示意图;图4是本技术一个实施例提供的普通大群的网络群消息的分发控速的方法的另一逻辑流程图;图5是本技术一个实施例提供的超大群的网络群消息的分发控速的方法的逻辑流程图;图6是本技术一个实施例提供的普通大群的网络群消息的分发控速的装置的逻辑组成图;图7是本技术一个实施例提供的普通大群的网络群消息的分发控速的装置的另一逻辑组成图;图8是本技术一个实施例提供的超大群的网络群消息的分发控速的装置的逻辑组成图;图9是本技术一个实施例提供的网络群消息的分发控速的系统的示意图。
具体实施方式
19.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”“所述”和“该”也旨在包括多数形式,除非上下文清楚的表示其他含义。
21.应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述获取模块,但这些获取模块不应限于这些术语。这些术语仅用来将获取模块彼此区分开。
22.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似的,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
23.需要注意的是,本发明实施例所描述的“上”“下”“左”“右”等方位词是以附图所示的角度来进行描述的,不应理解为对本发明实施例的限定。此外在上下文中,还需要理解的是,当提到一个元件被形成在另一个元件“上”或“下”时,其不仅能够直接形成在另一个元件“上”或者“下”,也可以通过中间元件间接形成在另一元件“上”或者“下”。
24.参见图1,本实施例的群聊消息分发架构包括群组服务模块101、消息服务模块102、接入节点103和多个客户端104。
25.其中,群组服务模块101包括至少一台群组服务器,用于维护通信群的群信息以及群成员关系,接收并处理所有的群组相关的信令,包括创建群组、成员加入/退出、群禁言、群消息等等。
26.消息服务模块102包括至少一台消息服务器,负责维护群成员的在线状态以及所有群消息的分发,分发的消息包含单聊消息、群聊消息、系统消息等等。
27.接入节点103,是客户端104和消息服务器的入口,用于维护客户端104和消息服务器的长链接。
28.群消息的分发流程为:客户端104在群里发了一条群消息后,消息先到群组服务模块101,然后通过群组服务缓存的群成员关系知道这条消息最终需要分发的用户群体,再将消息分发到消息服务模块102上,消息服务模块102再将消息通过接入节点103投递给目标客户端104。
29.参见图2,为了解决普通大群(通常定义为人数少于3000)和超大群(通常定义为人数多于3000)的消息转发和控速问题,本实施例提供了一种网络群消息的分发控速的方法,包括如下步骤:步骤s101,若通信群的群成员数量小于第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列和至少一个慢速分发队列。
30.对于群成员少于3000(第一阈值)的普通大群而言,首先,群组服务模块包括至少一个群组服务器,根据群组服务器的cpu内核数量来建立多个群消息分发队列,从分发的速度上可以将其归类为快、慢两个队列。参见图3,例如服务器cpu是4核的话,群组服务器就会建立4个消息分发队列, 这4个消息分发队列设置不同的休眠时间以及不同的消费线程数,比如快速队列可以配置4个线程,每个线程分发1次后只休眠1毫秒,而慢速队列可以只配置1个线程,这个线程每消费1次后休眠4毫秒,当然休眠时间以及每个队列配置的线程数都可以通过配置来适应不同的集群环境和应用场景。
31.步骤s102,若通信群的群成员数量小于第二阈值,则将群消息分发映射到快速分发队列中,其中,第二阈值小于第一阈值;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
32.具体的,根据群成员数量的大小来将所有群的消息分发映射到相应的队列中。由于大群的消息活跃会让消息分发的数量剧增,从而让消息服务不堪重负,所以在处理人数多的大群的消息时,为了不对后端的消息服务造成巨大的冲击,本步骤将大群的消息映射到慢的队列中,这样大群的消息就会相对缓慢的分发到后面的消息服务,以实现群消息控速的目的。
33.因此,将分发规则定为:小群映射到快速队列中,大群映射到相应的慢速队列中。
小群人数少,因此对服务的整体分发影响很小,所以将小群的消息映射到快速队列中以实现群消息的快速分发;大群人数多,因此对服务的整体分发影响较大,所以将大群的消息映射到慢速队列中以实现群消息的快速分发。
34.需要指出的是,上述第二阈值用于将普通大群区分为大群和小群,第二阈值的取值通常是人为定义的,但一般情况下,小于50人的通信群为小群,大于500人的通信群为大群,第二阈值可根据经验确定。
35.进一步的,对于群成员数量介于例如50-500人之间的通信群,既不属于大群,也不属于小群,参见图4,可通过如下步骤进行消息分发:步骤s103,若通信群的群成员数量小于第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列、至少一个中速分发队列和至少一个慢速分发队列;具体的,中速分发队列的休眠时间以及消费线程数介于上述快速分发队列和慢速分发队列之间。即:快速分发队列具有比中速分发队列更短的休眠时间和更多的消费线程数,中速分发队列具有比慢速分发队列更短的休眠时间和更多的消费线程数。
36.步骤s104,若通信群的群成员数量小于第三阈值,且该第三阈值小于第二阈值,则将群消息分发映射到快速分发队列;若通信群的群成员数量大于第三阈值且小于第二阈值,则将群消息分发映射到中速分发队列;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
37.具体的,设置小于第一阈值的第二阈值和第三阈值,并且第三阈值小于第二阈值,例如,第一阈值为3000,第二阈值为500,第三阈值为50,这样将通信群的规模划分为三类,即群成员数量小于50的属于小群,按照规则应当映射到快速分发队列中;大于50小于500的为中群,按照规则应当映射到中速分发队列中;大于500小于3000的属于大群,按照规则应当映射到慢速分发队列中。
38.本实施例的上述方法,能够实现普通大群的群消息的快速分发,且不会导致消息服务模块的负担过重。
39.在实际群聊业务中,还有一种业务场景需要超大规模的群,这种超大群的群成员数量达到了数万甚至数十万,这种群如果按照上一实施例中普通大群的分发规则,势必会造成消息节点的巨大压力。例如,消息服务分发消息的上限是一秒钟4000条,超过了4000条后消息服务会出现内存暴涨、响应慢等问题。对于一个10万人的超大群,消息服务如果有10台消息服务器,那发一条群消息后,如果不做控速限制,每台消息服务器大约1秒需要分发1万条群消息,这远远超出了消息服务器的处理能力。此时,如果单纯为了解决分发瓶颈,可以通过增加消息服务器的数量来解决问题,但是从节约成本的角度出发是不能无限的扩充消息服务器的数量的,而且如果消息服务扩的太多,在没有超大群消息的时候,每一台消息服务器几乎都处于空闲当中,这就造成了资源的浪费。所以针对这种超大群需要设计新的模式进行消息的分发,以实现既能够快速分发消息又不影响消息服务的整体性能的技术效果。
40.为了实现上述超大群的分发控速,参见图5,本发明的另一实施例提供了如下网络群消息的分发控速的方法,用于群组服务模块,包括:步骤s105,若通信群的群成员数量大于第一阈值,则将群组服务器单位时间内向
消息服务器投递的群消息的数量上限设定为消息服务器分发能力的一半。
41.具体的,区别于上一实施例提到的用快慢队列的特殊队列来处理消息的分发,本实施例在消息分发步骤中需要设置一个参数,这个参数就是单位时间内(如1秒钟)往后面消息服务投递的消息数, 这个消息数的配置,优选的,是消息服务器分发消息能力上限的一半,然后留一半的分发能力处理其他群消息以及单聊消息。
42.例如,单台消息服务器处理的消息分发上限是4000条/秒,那群组服务器一秒往单台消息服务器上最多投递2000条群消息,以上述10万人的超大群来说,平均每台消息服务器需要分发1万条群消息,那一条群消息全部分发完大约需要5秒钟。
43.通过上述步骤,在超大群消息活跃时,保证了通信群的消息分发控速的有效性,使得例如相对重要的系统消息、单聊消息等都不会受到影响。
44.本发明的另一实施例还提供了一种网络群消息的分发控速的装置200,用于实现上述实施例中的各个步骤。参见图6,网络群消息的分发控速的装置200包括:队列模块201和第一分发模块202。
45.具体而言:队列模块201,被配置为若通信群的群成员数量小于第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列和至少一个慢速分发队列;第一分发模块202,被配置为若通信群的群成员数量小于第二阈值,则将群消息分发映射到快速分发队列中,其中,第二阈值小于第一阈值;若通信群的群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
46.更进一步的,队列模块201,被进一步配置为多个群消息分发队列还包括至少一个中速分发队列。
47.进一步的,参见图7,还包括用于替代第一分发模块202的第二分发模块203,被配置为若通信群的群成员数量小于第三阈值,且该第三阈值小于第二阈值,则将群消息分发映射到快速分发队列;若通信群的群成员数量大于第三阈值且小于第二阈值,则将群消息分发映射到中速分发队列;若群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中。
48.更进一步的,快速分发队列具有比中速分发队列更短的休眠时间和更多的消费线程数,中速分发队列具有比慢速分发队列更短的休眠时间和更多的消费线程数。
49.更进一步的,参见图8,网络群消息的分发控速的装置200还包括第三分发模块204,被配置为:若通信群的群成员的数量大于第一阈值,则将群组服务器单位时间内向消息服务器投递的群消息的数量上限设定为消息服务器分发能力的一半。
50.需要说明的是,本发明实施例所提供的网络群消息的分发控速的装置200对应的可用于执行上述各方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
51.参见图9,本发明的另一实施例,提供了一种网络群消息的分发控速的系统300,包括:至少一群组服务器301、至少一消息服务器302、至少一接入节点303和多个客户端304。
52.具体而言:群组服务器301,用于接收来自客户端304的群消息;若通信群的群成员数量小于
第一阈值,则建立分发速度不同的多个群消息分发队列,该多个群消息分发队列包括至少一个快速分发队列和至少一个慢速分发队列,若通信群的群成员数量小于第一阈值和第二阈值,则将该群消息分发映射到快速分发队列中,其中,第二阈值小于第一阈值,若群成员数量大于第二阈值且小于第一阈值,则将群消息分发映射到慢速分发队列中;若通信群的群成员的数量大于第一阈值,则将群组服务器单位时间内向消息服务器投递的群消息的数量上限设定为消息服务器分发能力的一半;根据通信群的群成员的群关系,将该群消息通过群消息分发队列投递至消息服务器302;消息服务器302,用于接收所述群组服务器301根据通信群的群成员的群关系投递的群消息,将该群消息通过接入节点303分发至群成员对应的客户端304;接入节点303,用于建立和维护客户端304和消息服务器302之间的通信连接;客户端304,用于通过接入节点303与消息服务器302建立通信连接。
53.上述网络群消息的分发控速的系统300可实现普通大群或超大群的消息分发控速。
54.以上描述仅为本发明的较佳实施例。本领域技术人员应当理解,本发明中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1