一种数据处理方法及装置与流程

文档序号:14418916阅读:202来源:国知局
一种数据处理方法及装置与流程

本发明涉及数据处理技术领域,特别涉及一种数据处理方法及装置。



背景技术:

生产消费者模型,在各类编程语言中是常见的一种技术。该模型在生产生活中也应用的非常广泛,例如叫号排队等。它至少具备三个实体:生产者、消费者、缓冲队列。生产者,可以有一个或者多个生产某种数据,生产的数据将先进入缓冲队列;缓冲队列,用于临时存储生产数据。缓冲队列两端,一端连接了生产者,一端连接了消费者,当队列满了则生产者不能再往队列中添加数据,当队列空了,消费者也无法再从队列中获取消费数据;消费者,可以有一个或者多个消费者,从缓存队列中获取数据并消费,每个消费者每次从缓冲队列中取一项。

当前比较常用的做法是使用javajdk并发工具类中提供blockingqueue,它的具体实现也有很多,其中区别不在累述。例如linkedblockingqueue,是一个基于链表的阻塞队列,在链表一端加入元素,如果满了就会阻塞,另一端去除元素,如果队列为空,就阻塞。上述现有的实现方案,在实际使用场景中,仍然存在以下问题:它只提供了一个队列,所有对队列的操作都需要业务方自己操作;生产者,消费者是谁,全靠业务方指定;多个生产者,多个消费者无法只通过一个队列实现;多个生产者与消费者之间的映射关系无法体现;对于单个队列,单个消费者吞吐量肯定非常低,无法动态调整消费者数量,以提高吞吐量。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据处理方法及装置。用以使数据处理过程更加简单、智能。

本发明提供一种数据处理方法,包括:

消息收集器将收集的不同主题的消息发送给与所述主题对应的消息中枢;

所述消息中枢将所述消息推送给订阅所述主题的消费者;

所述消费者将获取到的所述消息推送给对应的处理器进行处理。

在一个实施例中,所述方法还可包括:

检测消费者队列的状态;

根据消费者队列的状态调整消费者的数量。

在一个实施例中,所述检测消费者队列的状态,可包括:

通过实时采样消费者队列的消费速率来监控消费者队列的消费状态;

所述根据消费者队列的状态调整消费者的数量,包括:

当所述消费者队列的消费速率达到预设阈值时,对消费者的数量进行调整。

在一个实施例中,所述当所述消费者队列的消费速率达到预设阈值时,对消费者的数量进行调整,可包括:

当所述消费者队列的消费速率低于第一预设阈值时,增加消费者的数量;

当所述消费者队列的消费速率高于第二预设阈值时,降低消费者的数量。

在一个实施例中,所述消息收集器将收集的不同主题的消息发送给与所述主题对应的消息中枢,可包括:

所述主题与消息中枢一一对应,根据消息的主题确定对应的消息中枢。

本发明还提供一种数据处理装置,包括:

发送模块,用于消息收集器将收集的不同主题的消息发送给与所述主题对应的消息中枢;

推送模块,用于所述消息中枢将所述消息推送给订阅所述主题的消费者;

处理模块,用于所述消费者将获取到的所述消息推送给对应的处理器进行处理。

在一个实施例中,所述装置还可包括:

检测模块,用于检测消费者队列的状态;

调整模块,用于根据消费者队列的状态调整消费者的数量。

在一个实施例中,所述检测模块,可包括:

监控子模块,用于通过实时采样消费者队列的消费速率来监控消费者队列的消费状态;

所述调整模块,包括:

调整子模块,用于当所述消费者队列的消费速率达到预设阈值时,对消费者的数量进行调整。

在一个实施例中,所述调整子模块,可包括:

增加单元,用于当所述消费者队列的消费速率低于第一预设阈值时,增加消费者的数量;

降低单元,用于当所述消费者队列的消费速率高于第二预设阈值时,降低消费者的数量。

在一个实施例中,所述发送模块,可包括:

确定子模块,用于所述主题与消息中枢一一对应,根据消息的主题确定对应的消息中枢。

本发明的实施例提供的技术方案可以包括以下有益效果:

上述技术方案,通过消息收集器将收集的不同主题的消息发送给与主题对应的消息中枢,消息中枢将消息推送给订阅主题的消费者,消费者将获取到的消息推送给对应的处理器进行处理。上述技术方案为基于订阅模型的智能化消费方法,在该方法中,消息生产者成为发布者,而消息消费者则成为订阅者,并且支持多个维度的主题消息订阅,各主题之间相互隔离,不受影响,在现有队列基础上的,相比原队列,抽象出多个标准实体,业务方仅仅需要关注自己所定义的topic,以及处理器的消息处理逻辑,内部的消息中转细节完全被屏蔽,从而使整个处理过程中更加简单、自动、智能。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中一种数据处理方法的流程图;

图2为本发明实施例的数据处理方法的网络架构图;

图3为本发明实施例中另一种数据处理方法的流程图;

图4为本发明实施例中另一种数据处理方法的流程图;

图5为本发明实施例中另一种数据处理方法的流程图;

图6为本发明实施例中的数据处理方法的时序图;

图7为本发明实施例中一种数据处理装置的框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1所示为本发明实施例中一种数据处理方法的流程图,如图1所示,该数据处理方法包括以下步骤s11-s13:

步骤s11,消息收集器将收集的不同主题的消息发送给与主题对应的消息中枢。

步骤s12,消息中枢将消息推送给订阅主题的消费者。

步骤s13,消费者将获取到的消息推送给对应的处理器进行处理。

消息收集器收集不同主题(topic)的消息,消息收集器会将收集到的消息,通过topic自动匹配到对应的消息中枢,消息中枢将消息自动推送给已订阅该topic的消费者(consumer)队列(queue),消费者获取到对应消息后,将推送给对应的处理器(processor)进行业务化处理。上述实施例的网络架构图如图2所示。

本发明实施例的上述方法,通过消息收集器将收集的不同主题的消息发送给与主题对应的消息中枢,消息中枢将消息推送给订阅主题的消费者,消费者将获取到的消息推送给对应的处理器进行处理。上述技术方案为基于订阅模型的智能化消费方法,在该方法中,消息生产者成为发布者,而消息消费者则成为订阅者,并且支持多个维度的主题消息订阅,各主题之间相互隔离,不受影响,在现有队列基础上的,相比原队列,抽象出多个标准实体,业务方仅仅需要关注自己所定义的topic,以及处理器的消息处理逻辑,内部的消息中转细节完全被屏蔽,从而使整个处理过程中更加简单、自动、智能。

在一个实施例中,如图3所示,该数据处理方法还可包括以下步骤s14-s15:

步骤s14,检测消费者队列的状态。

步骤s15,根据消费者队列的状态调整消费者的数量。

本实施例中,智能大脑将会定时检测队列状态,根据队列中的空闲状态,自动调整消费者的消费数量,当队列满后也会自动切换到备份队列,备份队列与主队列相互互为主备,以达到智能化消峰的作用。

在一个实施例中,如图4所示,步骤s14可实施为以下步骤s141:

步骤s141,通过实时采样消费者队列的消费速率来监控消费者队列的消费状态。

步骤s15可实施为以下步骤s151:

步骤s151,当消费者队列的消费速率达到预设阈值时,对消费者的数量进行调整。

本实施例中,采样器(sampling)通过实时采样监控消费者队列消费状态,通过出队入队速率初步判断队列消费状态,如果达到预警阀值将回调通知智能大脑,供智能大脑决策。

在一个实施例中,步骤s151可实施为以下步骤a1-a2:

步骤a1,当消费者队列的消费速率低于第一预设阈值时,增加消费者的数量。

步骤a2,当消费者队列的消费速率高于第二预设阈值时,降低消费者的数量。

本实施例中,第一预设阈值小于第二预设阈值,当消费者队列的消费速率低于第一预设阈值时,则增加消费者以加快消费消息,当消费者队列的消费速率高于第二预设阈值时,则降低消费者的数据以避免出现阻塞。

在一个实施例中,如图5所示,步骤s11可实施为以下步骤s111:

步骤s111,主题与消息中枢一一对应,根据消息的主题确定对应的消息中枢。

本实施例中,一个topic对应一个消息中枢,一个消息中枢对应多个消费者,从而使消息中枢能够快速的将不同主题的消息发送给对应的消费者。

图6为本发明实施例提供的数据处理方法的时序图。如图6所示,具体流程如下:

步骤s61,消息收集器将收集的不同主题的消息发送给与主题对应的消息中枢。

消息收集器收集消息,消息中包含topic以及消息体(content)。一个topic对应一个消息中枢,根据消息的topic找到对应的消息中枢。一个消息中枢对应多个消费者,一个消费者对应一个智能大脑,一个消费者可以同时被多个线程消费。

步骤s62,消息中枢获取消息的主题。

步骤s63,消息中枢发布消息。

消息中枢将消息发布到对应的队列中。每个消息中枢是一个runnable线程,只要队列中有消息体便会自动将消息发布到对应的消费者。

步骤s64,消息中枢将发布的消息推送给订阅该主题的消费者。

步骤s65,消费者接收消息。

步骤s66,对消费者队列进行实时采样,并将采样结果发送给智能大脑。

步骤s67,智能大脑根据采样结果判断是否调整消费者队列。

消费者在接收消息的时候,同时采样会实时进行,如果通过采样速率判断处于繁忙阶段,将会自动增加线程进行消费。

步骤s68,消费者将获取到的消息推送给对应的处理器进行处理。

消费者将消息发布到处理器,处理器接收到消息后,会自动处理消息。

步骤s69,处理器对消息进行处理。

基于同一发明构思,本发明实施例还提供了一种数据处理装置,由于该装置所解决问题的原理与前述数据处理方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。

图7所示为本发明实施例中一种数据处理装置的框图,如图7所示,该数据处理装置包括:

发送模块71,用于消息收集器将收集的不同主题的消息发送给与主题对应的消息中枢;

推送模块72,用于消息中枢将消息推送给订阅主题的消费者;

处理模块73,用于消费者将获取到的消息推送给对应的处理器进行处理。

本发明实施例的上述装置,通过消息收集器将收集的不同主题的消息发送给与主题对应的消息中枢,消息中枢将消息推送给订阅主题的消费者,消费者将获取到的消息推送给对应的处理器进行处理。上述技术方案为基于订阅模型的智能化消费方法,在该方法中,消息生产者成为发布者,而消息消费者则成为订阅者,并且支持多个维度的主题消息订阅,各主题之间相互隔离,不受影响,在现有队列基础上的,相比原队列,抽象出多个标准实体,业务方仅仅需要关注自己所定义的topic,以及处理器的消息处理逻辑,内部的消息中转细节完全被屏蔽,从而使整个处理过程中更加简单、自动、智能。

在一个实施例中,该数据处理装置还可包括:

检测模块,用于检测消费者队列的状态;

调整模块,用于根据消费者队列的状态调整消费者的数量。

在一个实施例中,检测模块,可包括:

监控子模块,用于通过实时采样消费者队列的消费速率来监控消费者队列的消费状态;

调整模块,包括:

调整子模块,用于当消费者队列的消费速率达到预设阈值时,对消费者的数量进行调整。

在一个实施例中,调整子模块,可包括:

增加单元,用于当消费者队列的消费速率低于第一预设阈值时,增加消费者的数量;

降低单元,用于当消费者队列的消费速率高于第二预设阈值时,降低消费者的数量。

在一个实施例中,发送模块,可包括:

确定子模块,用于主题与消息中枢一一对应,根据消息的主题确定对应的消息中枢。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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