消息处理方法、设备及系统技术方案

技术编号:33528614 阅读:12 留言:0更新日期:2022-05-19 01:55
本申请实施例提供一种消息处理方法、设备及系统。在本申请实施例中,在消息消费节点引入多个共享线程池,使得消息队列共享线程池中的线程池资源,实现线程池中的线程针对消息队列复用,而无需为每个消息队列单独创建线程,有助于降低大规模消息队列处理时的资源消耗。有助于降低大规模消息队列处理时的资源消耗。有助于降低大规模消息队列处理时的资源消耗。

【技术实现步骤摘要】
消息处理方法、设备及系统


[0001]本申请涉及通信
,尤其涉及一种消息处理方法、设备及系统。

技术介绍

[0002]消息队列(Message Queue,MQ)是一种基于先进先出(FIFO)的队列模型中间件。消息发送后可以立即返回,由消息系统确保消息的可靠传递。消息生产者(Producer)只需将消息发布到MQ中,无需管谁来取消息和如何取消息;消息消费者(Consumer)只管从MQ中取消息而不用管是谁发布的以及如何发布的。
[0003]对于消息消费者来说,一个消息消费者需要消费成千上万个MQ。在现有技术中,经常需要为每个MQ单独分配线程进行消息消费,需要同时创建、启动大量的消费线程,消耗大量的计算机资源。

技术实现思路

[0004]本申请的多个方面提供一种消息处理方法、设备及系统,用以实现资源复用,降低计算机资源消耗。
[0005]本申请实施例提供一种消息处理方法,包括:
[0006]根据本地缓存区中的至少一个缓存队列的存储能力,利用第一线程池从存储节点获取消息;
[0007]将获取的消息缓存至所述本地缓存区对应的缓存队列;
[0008]根据所述至少一个缓存队列承载的消费速度,利用第二线程池从所述本地缓存区获取消息消费者需要消费的目标消息;
[0009]将所述目标消息提供给消息消费者,以供所述消息消费者消费所述目标消息。
[0010]本申请实施例还提供一种消息处理系统,包括:存储节点和消息消费节点;
[0011]所述存储节点,设置有至少一个消费队列;消费队列用于存储消息;
[0012]所述消息消费节点包括:数据拉取层、本地缓存层、消息控制层和消息消费者;所述本地缓存层设置有至少一个缓存队列;
[0013]所述数据拉取层,维护有第一线程池,用于根据所述至少一个缓存队列的存储能力,利用第一线程池从所述至少一个消息队列获取消息;并将获取的消息缓存至所述至少一个缓存队列;
[0014]所述消费控制层,维护有第二线程池,用于根据所述至少一个缓存队列承载的消费速度,利用所述第二线程池从所述至少一个缓存队列获取消息消费者需要消费的目标消息;并将所述目标消息调度至所述消息消费者;
[0015]所述消息消费者用于消费所述目标消息。
[0016]本申请实施例还提供一种计算设备,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
[0017]所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行上述消息处
理方法中的步骤。
[0018]在本申请实施例中,在消息消费节点引入多个共享线程池,使得消息队列共享线程池中的线程池资源,实现线程池中的线程针对消息队列复用,而无需为每个消息队列单独创建线程,有助于降低大规模消息队列处理时的资源消耗。
[0019]另一方面,本申请实施例提供的消息处理系统,在消息消费节点设置本地缓存层,可实现从存储节点拉取消息与消息消费隔离,这样,在消息消费失败时,可将消息重新调度至本地缓存层进行等待消费,等下次消费时,可直接从本地缓存层获取消息,而无需再去访问存储节点,有助于提高消息获取效率,进而提高消息消费效率。
附图说明
[0020]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0021]图1为本申请实施例提供的消息处理系统的结构示意图;
[0022]图2为本申请实施例提供的线程池的示意图;
[0023]图3和图4为本申请实施例提供的其它消息处理系统的结构示意图;
[0024]图5为本申请实施例提供的消费速度进行时间分片的示意图;
[0025]图6为本申请实施例提供的消息处理方法的流程示意图;
[0026]图7为本申请实施例提供的计算设备的结构示意图。
具体实施方式
[0027]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0028]在现有技术中,经常需要为每个MQ单独分配线程进行消息消费,需要同时创建、启动大量的消费线程,消耗大量的计算机资源。为了节约计算机资源,在本申请一些实施例中,在消息消费节点引入多个共享线程池,使得消息队列共享线程池中的线程池资源,实现线程池中的线程针对消息队列复用,而无需为每个消息队列单独创建线程,有助于降低大规模消息队列处理时的资源消耗。
[0029]以下结合附图,详细说明本申请各实施例提供的技术方案。
[0030]应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
[0031]图1为本申请实施例提供的消息处理系统的结构示意图。如图1所示,该消息处理系统包括:存储节点10和消息消费节点20。
[0032]在本实施例中,存储节点10是指具有数据存储功能的服务或实体设备。存储节点10的数量可以为1个或多个。多个是指2个或2个以上。多个存储节点10可以部署在不同容器或虚拟机(VM)中。多个存储节点10可部署在同一物理机,也可以部署于不同的物理机上。
[0033]消息消费节点20是指具有消息消费功能的软件模块、应用程序、服务或实体设备。
消息消费节点20的数量可以为1个或多个。多个是指2个或2个以上。多个消息消费节点20可以部署在不同容器或虚拟机(VM)中。多个消息消费节点20可部署在同一物理机,也可以部署于不同的物理机上。
[0034]在本申请实施例中,不限定物理机的具体实现形态。物理机可以为单一服务器设备,也可以云化的服务器阵列。另外,物理机也可以指具备相应计算能力的其他计算设备,例如电脑等终端设备等。
[0035]在本申请实施例中,存储节点10设置有至少一个消息队列。在本申请实施例中,不限定存储节点10存储的消息队列的数量,本申请实施例提供的消息处理方式可适应于任意数量的消息队列,尤其适用于多个消息队列。多个是指2个或2个以上。在本申请实施例中,不限定消息队列的具体数量。对于高并发请求来说,消息队列可为成千上万个,甚至更多。消息队列用于存储消息。本申请实施例提供的消息处理系统可适应于任何需要消息处理的应用场景中。例如,可应用于云通信服务系统、订单调度系统、在线购物系统等等。对于云通信服务系统,对于某个环节的消息生产者产生的消息为短信消息等。对于云通信服务系统,可为每个通信服务供应平台创建多个消息队列。相应地,存储节点10设置多个消息队列。相应地,消息队列用于存储短信消息。消息消费节点20用于消费短信消息,例如,用于将短信信息发送给对应的用户等本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息处理方法,其特征在于,包括:根据本地缓存区中的至少一个缓存队列的存储能力,利用第一线程池从存储节点获取消息;将获取的消息缓存至所述本地缓存区对应的缓存队列;根据所述至少一个缓存队列承载的消费速度,利用第二线程池从所述本地缓存区获取消息消费者需要消费的目标消息;将所述目标消息提供给消息消费者,以供所述消息消费者消费所述目标消息。2.根据权利要求1所述的方法,其特征在于,还包括:针对所述至少一个缓存队列中的任一缓存队列,根据所述任一缓存队列承载的消费速度、预设的子队列组承载的消费速度和消费优先级数量,将所述任一缓存队列划分为至少一个缓存子队列;同一缓存子队列用于缓存处于同一消费优先级的消息;根据所述至少一个缓存子队列组对应的消费优先级,将所述至少一个缓存子队列划分至至少一个子队列组;其中,每个子队列组包含所有消费优先级的缓存子队列。3.根据权利要求2所述的方法,其特征在于,所述存储节点中的至少一个消息子队列与所述至少一个缓存子队列相对应;所述根据本地缓存区中的至少一个缓存队列的存储能力,利用第一线程池从存储节点获取消息,包括:根据所述至少一个缓存队列分别对应的至少一个缓存子队列的存储能力,生成至少一个消息拉取任务;利用所述第一线程池执行所述至少一个消息拉取任务,以从存储节点的相应消息子队列中获取所述至少一个消息拉取任务分别所需的消息。4.根据权利要求3所述的方法,其特征在于,还包括:针对任一缓存子队列,若未从所述存储节点获取所述任一缓存子队列对应的消息拉取任务所需的消息的连续次数达到设定阈值,降低所述第一线程池执行所述任一缓存子队列对应的消息拉取任务的频率。5.根据权利要求2所述的方法,其特征在于,所述根据所述至少一个缓存队列承载的消费速度,利用第二线程池从所述本地缓存区获取消息消费者需要消费的目标消息,包括:根据所述至少一个缓存队列分别对应的子队列组承载的消费速度,生成多个消息调度任务;利用所述第二线程池按照所述消息调度任务对应的执行周期,周期性地执行每个子队列组对应的消息调度任务;在执行所述执行每个子队列组对应的消息调度任务的过程中,从所述本地缓冲区对应的子队列组中获取当前周期执行的消息调度任务所需的消息,作为所述目标消息。6.根据权利要求5所述的方法,其特征在于,所述根据所述至少一个缓存队列分别对应的子队列组承载的消费速度,生成多个消息调度任务,包括:针对任一子队列组,根据所述任一子队列组的消费速度,确定所述任一子队列组当次需要被消费的消息数量N;N为正整数;根据所述任一子队列组当次需要被消费的消息数量N,生成所述任一子队列组对应的消息调度任务。
7.根据权利要求6所述的方法,其特征在于,所述针对任一子队列组,根据所述任一子队列组的消费速度,确定所述任一子队列组当...

【专利技术属性】
技术研发人员:曹栋尧罗自荣
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1