一种消息的处理方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:23190715 阅读:30 留言:0更新日期:2020-01-24 16:11
本发明专利技术涉及一种消息的处理方法、装置、计算机设备和存储介质,该方法包括:接收用户在会话中发送的消息;将所述消息分配至所述用户对应的队列;调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;确定所述线程已处理所述队列中、所述用户的所有消息;检测所述队列的状态;根据所述状态将所述用户的消息从所述队列转移至其他队列。保证用户维度的消息的顺序性,与此同时,通过队列的状态在不同队列中调配用户的消息,可减轻部分队列的负载,也提升了其他队列及相应线程的利用率,使各个队列的负载趋于平衡,实现了动态调配资源。

A message processing method, device, computer equipment and storage medium

【技术实现步骤摘要】
一种消息的处理方法、装置、计算机设备和存储介质
本专利技术实施例涉及即时通讯的技术,尤其涉及一种消息的处理方法、装置、计算机设备和存储介质。
技术介绍
随着互联网技术的发展,即时通讯(InstantMessenger,简称IM)由于其所拥有的实时性、低成本、高效率等诸多优势,迅速普及。即时通讯是一种基于互联网的即时交流消息的业务,其允许两人或多人使用网路即时的传递文字讯息、档案、语音与视频交流。在即时通讯中,当某一位用户发出一条消息时,服务器需要把这条消息推送给其他用户,此时,这一条消息会扩散成多条消息在服务器各个系统中流传,扩散系数大,服务器压力较大。目前的互联网技术架构中,为了应对高并发和大流量的即时通讯场景,一般采用分布式的技术方案。采用分布式方案可以通过水平横向扩展的方式有效地提高整体架构的吞吐量和并发量。目前,可采用按某个维度对消息进行分流处理,以保证每个维度的消息只会固定被同一条线程处理,以保证该维度消息处理的顺序性,但是,线程固定处理某个维度的消息,导致资源利用率低下。
技术实现思路
本专利技术实施例提供一种消息的处理方法、装置、计算机设备和存储介质,以解决兼顾保证该维度消息处理的顺序与资源利用率的问题。第一方面,本专利技术实施例提供了一种消息的处理方法,包括:接收用户在会话中发送的消息;将所述消息分配至所述用户对应的队列;调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;确定所述线程已处理所述队列中、所述用户的所有消息;检测所述队列的状态;根据所述状态将所述用户的消息从所述队列转移至其他队列。可选地,所述将所述消息分配至所述用户对应的队列,包括:按照预设的顺序对所述消息生成消息序号;在统计列表中将所述用户对应的最新序号更新为所述消息的消息序号;确定处理所述用户的消息的队列;将所述消息写入所述队列中。可选地,在所述在统计列表中将所述用户对应的最新序号更新为所述消息的消息序号之后,还包括:对所述用户添加共享锁;在所述确定处理所述用户的消息的队列之后,还包括:对所述用户释放所述共享锁。可选地,所述调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户,包括:确定所述队列对应的线程;调用所述线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;若发送成功,则在统计列表中所述用户对应的处理序号更新为所述消息的消息序号;在所述统计列表中所述用户对应的处理次数增加一次;在所述统计列表中所述队列对应的总处理次数增加一次。可选地,所述确定所述线程已处理所述队列中、所述用户的所有消息,包括:查询统计列表中所述用户对应的最新序号与处理序号;若所述最新序号与所述处理序号相等,则确定所述线程已处理所述队列中、所述用户的所有消息。可选地,所述检测所述队列的状态,包括:查询统计列表中所述队列对应的总处理次数;若所述总处理次数大于预设的第一阈值,则确定所述队列的状态为繁忙;若所述总处理次数小于预设的第二阈值,则确定所述队列的状态为空闲;其中,所述第一阈值大于所述第二阈值。可选地,所述根据所述状态将所述用户的消息从所述队列转移至其他队列,包括:若所述队列的状态为繁忙,则查找状态为空闲的其他队列;将所述用户的消息从所述队列转移至所述其他队列。可选地,在所述将所述用户的消息从所述队列转移至所述其他队列之前,还包括:对所述用户添加独占锁;在所述将所述用户的消息从所述队列转移至所述其他队列之后,还包括:对所述用户释放所述独占锁。可选地,所述将所述用户的消息从所述队列转移至所述其他队列,包括:在统计列表中,将所述用户对应的最新序号、处理序号、处理次数从所述队列转移至所述其他队列;在所述队列对应的总处理次数的基础上,减去所述处理次数;在所述其他队列对应的总处理次数的基础上,加上所述处理次数。第二方面,本专利技术实施例还提供了一种消息的处理装置,包括:消息接收模块,用于接收用户在会话中发送的消息;消息分配模块,用于将所述消息分配至所述用户对应的队列;消息处理模块,用于调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;处理完成模块,用于确定所述线程已处理所述队列中、所述用户的所有消息;状态检测模块,用于检测所述队列的状态;消息转移模块,用于根据所述状态将所述用户的消息从所述队列转移至其他队列。可选地,所述消息分配模块包括:消息序号生成子模块,用于按照预设的顺序对所述消息生成消息序号;最新序号更新子模块,用于在统计列表中将所述用户对应的最新序号更新为所述消息的消息序号;队列确定子模块,用于确定处理所述用户的消息的队列;消息写入子模块,用于将所述消息写入所述队列中。可选地,所述消息分配模块还包括:共享锁添加子模块,用于对所述用户添加共享锁;共享锁释放子模块,用于对所述用户释放所述共享锁。可选地,所述消息处理模块包括:线程确定子模块,用于确定所述队列对应的线程;消息发送子模块,用于调用所述线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;处理序号更新子模块,用于若发送成功,则在统计列表中所述用户对应的处理序号更新为所述消息的消息序号;处理次数增加子模块,用于在所述统计列表中所述用户对应的处理次数增加一次;总处理次数增加子模块,用于在所述统计列表中所述队列对应的总处理次数增加一次。可选地,所述处理完成模块包括:序号查询子模块,用于查询统计列表中所述用户对应的最新序号与处理序号;相等确定子模块,用于若所述最新序号与所述处理序号相等,则确定所述线程已处理所述队列中、所述用户的所有消息。可选地,所述状态检测模块包括:总处理次数查询子模块,用于查询统计列表中所述队列对应的总处理次数;繁忙队列确定子模块,用于若所述总处理次数大于预设的第一阈值,则确定所述队列的状态为繁忙;空闲队列确定子模块,用于若所述总处理次数小于预设的第二阈值,则确定所述队列的状态为空闲;其中,所述第一阈值大于所述第二阈值。可选地,所述消息转移模块包括:空闲队列查找子模块,用于若所述队列的状态为繁忙,则查找状态为空闲的其他队列;繁忙队列转移子模块,用于将所述用户的消息从所述队列转移至所述其他队列。可选地,所述消息转移模块还包括:独占锁添加子模块,用于对所述用户添加独占锁;独占锁释放子模块,用于对所述用户释放所述独占锁。可选地,所述繁忙队列转移子模块包括:参数转移单元,用于在统计列表中,将所述用户对应本文档来自技高网...

【技术保护点】
1.一种消息的处理方法,其特征在于,包括:/n接收用户在会话中发送的消息;/n将所述消息分配至所述用户对应的队列;/n调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;/n确定所述线程已处理所述队列中、所述用户的所有消息;/n检测所述队列的状态;/n根据所述状态将所述用户的消息从所述队列转移至其他队列。/n

【技术特征摘要】
1.一种消息的处理方法,其特征在于,包括:
接收用户在会话中发送的消息;
将所述消息分配至所述用户对应的队列;
调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;
确定所述线程已处理所述队列中、所述用户的所有消息;
检测所述队列的状态;
根据所述状态将所述用户的消息从所述队列转移至其他队列。


2.根据权利要求1所述的方法,其特征在于,所述将所述消息分配至所述用户对应的队列,包括:
按照预设的顺序对所述消息生成消息序号;
在统计列表中将所述用户对应的最新序号更新为所述消息的消息序号;
确定处理所述用户的消息的队列;
将所述消息写入所述队列中。


3.根据权利要求2所述的方法,其特征在于,
在所述在统计列表中将所述用户对应的最新序号更新为所述消息的消息序号之后,还包括:
对所述用户添加共享锁;
在所述确定处理所述用户的消息的队列之后,还包括:
对所述用户释放所述共享锁。


4.根据权利要求1所述的方法,其特征在于,所述调用所述队列对应的线程将所述队列中、所述用户的消息发送至所述会话中的其他用户,包括:
确定所述队列对应的线程;
调用所述线程将所述队列中、所述用户的消息发送至所述会话中的其他用户;
若发送成功,则在统计列表中所述用户对应的处理序号更新为所述消息的消息序号;
在所述统计列表中所述用户对应的处理次数增加一次;
在所述统计列表中所述队列对应的总处理次数增加一次。


5.根据权利要求1所述的方法,其特征在于,所述确定所述线程已处理所述队列中、所述用户的所有消息,包括:
查询统计列表中所述用户对应的最新序号与处理序号;
若所述最新序号与所述处理序号相等,则确定所述线程已处理所述队列中、所述用户的所有消息。


6.根据权利要求1所述的方法,其特征在于,所述检测所述队列的状态,包括:
查询统计列表中所述队列对应的总处理次数;
若所述总处理次数大于预设的第一阈值,则确定所述队列的状态为繁忙;
若所...

【专利技术属性】
技术研发人员:黄全李泽隆
申请(专利权)人:广州欢聊网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1