掌桥专利:专业的专利平台
掌桥专利
首页

基于缓存机制和多线程的消息数据消费方法及装置

文献发布时间:2023-06-19 16:11:11



技术领域

本申请涉及大数据技术领域,尤其涉及一种基于缓存机制和多线程的消息数据消费方法及装置。

背景技术

大数据(big data),是指需要通过快速获取、处理、分析以从中提取价值的海量、多样化的交易数据、交互数据与传感数据,其规模往往达到了PB(1024TB)级。不同机构对大数据也有不同的定义。在近几年的大数据发展中,对数据的分布式流处理占据主导地位,应用较为广泛的是消息队列(Message Queue,Mq)。

消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。在大数据消息传输方面,消息队列成为分布式拓扑结构数据流传输领域的主流应用。其中,向消息队列中存放数据的叫做生产者,从消息队列中获取数据的叫做消费者。消息队列为海量数据的传输提供了高效传输模式,目前消息队列以分布式、高吞吐量、高扩展性为主要发展方向。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

消息队列的出现虽然为许多场景提供了异步方案,相较于之前的同步处理,效率出现了显著提升。但消息队列无法针对依赖于数据线性特征的业务场景(时间先后顺序的消息队列业务)提供合适的异步处理方案。

发明内容

有鉴于此,本申请的目的在于提出一种基于缓存机制和多线程的消息数据消费方法及装置用于解决上述问题。

基于上述目的,本申请的第一方面提供了一种基于缓存机制和多线程的消息数据消费方法,设置有用于存储数据的存储中心和对数据进行过滤的数据字典,所述方法包括:

基于预先设定的偏移量从消息队列中线性的拉取消息数据;

基于预先设定的线程数对所述消息数据进行任务拆分,得到多份任务数据,并将该多份任务数据进行线程分发;

对于任一线程的任务数据:

基于所述数据字典中预设的判定条件,对输入的所述任务数据进行过滤得到类线性数据或非类线性数据;

响应于确定得到所述类线性数据,对所述类线性数据进行业务逻辑处理,得到处理数据,并将所述处理数据存入所述存储中心;

响应于确定得到所述非类线性数据,将所述非类线性数据存入所述存储中心;

响应于确定所述存储中心内的所述处理数据和所述非类线性数据的总数量与所述偏移量相等,基于所述偏移量再次从所述消息队列中线性的拉取数据。

本申请的第二方面提供了一种基于缓存机制和多线程的消息数据消费装置,包括:

服务器,被配置为:基于预先设定的偏移量从消息队列中线性的拉取消息数据;

基于预先设定的线程数对所述消息数据进行任务拆分,得到多份任务数据,并将该多份任务数据进行线程分发;

响应于确定所述存储中心内的所述处理数据和所述非类线性数据的总数量与所述偏移量相等,基于所述偏移量再次从所述消息队列中线性的拉取数据;

异步处理器,被配置为:基于所述数据字典中预设的判定条件,对输入的所述任务数据进行过滤得到类线性数据或非类线性数据;

响应于确定得到所述类线性数据,对所述类线性数据进行业务逻辑处理,得到处理数据,并将所述处理数据存入所述存储中心;

响应于确定得到所述非类线性数据,将所述非类线性数据存入所述存储中心。

本申请的第三方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请第一方面提供的所述的方法。

本申请的第四方面提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行本申请第一方面提供的所述方法

从上面所述可以看出,本申请提供的基于缓存机制和多线程的消息数据消费方法及装置,在基于预先设定的偏移量从消息队列中线性的拉取消息数据后,根据预先设定的线程数对消息数据进行任务拆分,得到多份任务数据,并将该多份任务数据进行线程分发,每个线程同时对分发的任务数据进行异步处理,将消息数据拆分至多线程进行处理,提高了数据处理的效率。在任一线程中,会基于数据字典中预设的判定条件,对输入的任务数据进行过滤,得到类线性数据或非类线性数据,若得到类线性数据,对类线性数据进行业务逻辑处理,得到处理数据,并将处理数据存入存储中心;若得到非类线性数据,直接将非类线性数据存入存储中心;将数据分配给不同的线程进行异步处理,将接收到的任务数据与数据字典进行比对,一次性实现异步类线性数据的处理,从而提高数据的处理效率。将处理数据和非类线性数据存入存储中心是为了查漏补缺,当出现数据字典过滤错误的消息数据时,可以通过存储中心进行消息数据恢复。也可以设计定时任务对存储中心中被过滤掉的消息数据进行二次检查,从而降低错误过滤数据的概率。若存储中心内的处理数据和非类线性数据的总数量与偏移量相等,说明本次拉取的消息数据已经全部处理完毕,可以基于偏移量再次从消息队列中线性的拉取消息数据,进行下一次的消息数据异步处理。

附图说明

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

图1为本申请实施例的注册过程同步处理流程图;

图2为本申请实施例的注册过程异步处理流程图;

图3为本申请实施例的基于缓存机制和多线程的消息数据消费方法流程图;

图4为本申请实施例的数据字典过滤流程图;

图5为本申请实施例的第二时间戳获取流程图;

图6为本申请实施例的索引获取流程图;

图7为本申请实施例的基于缓存机制和多线程的消息数据消费装置的结构示意图;

图8为本申请实施例的基于缓存机制和多线程的消息数据消费装置的消息数据异步处理过程示意图;

图9为本申请实施例的一种电子设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。

需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

需要说明的是,如背景技术的描述,在消息队列出现前,常用的消息处理方式为同步处理,以一个用户注册的过程为例,对同步处理进行说明,在用户注册成功后,系统需要发送注短信注册成功通知,以及赠送注册成功的积分,如图1所示,同步处理的总耗时为10ms+100ms+100ms=210ms,用户注册后写入消息后,需要等待用户注册10ms+短信通知100ms+增加积分100ms才能返回到客户端。

但是,由于短信通知与增加积分为非核心流程,为了提升系统响应性能,从而可以把它改造为异步处理。消息队列的出现为该场景提供了异步方案,如图2所示,短信通知和增加积分改为异步的形式后,用户注册后写入消息10ms左右立即返回成功给客户端,无需等待耗时较久的同步(短信+积分)就可以返回,从而极大地提升了系统的吞吐量。所以异步的典型场景就是将比较耗时而且不需要即时(同步)返回结果的操作,通过消息队列来实现异步化。

虽然消息队列的出现为许多场景提供了异步方案,相较于之前的同步处理,效率出现了显著提升。但消息队列无法针对依赖于数据线性特征的业务场景(时间先后顺序的消息队列业务)提供合适的异步处理方案。例如:在某些业务场景下,通过消息队列中传输的数据中包含时间戳,而消费者消费后对消息中部分业务数据的处理强依赖于该时间戳,且消息中包含数据的最大类别是确定的,实际包含的数据类别数是不确定的。此种情况下,当前消息队列设计中,消费者对消息的消费与处理必须均为同步线性的,此时消息的处理速度完全依赖于消费者的物理资源与服务器性能。当消费者所依赖的服务器资源受限时,将极大影响消费者对于消息的消费,使消息的处理效率降低。

本申请针对消息队列无法为线性消费者提供高效的消息消费和处理的问题,针对依赖于时间先后顺序的消息队列业务系统场景,提供了一种基于缓存机制和多线程的消息数据消费方法,在服务器性能限制情况下,可以有效提高消息数据的处理效率。

在一些实施例中,如图3所示,基于缓存机制和多线程的消息数据消费方法,设置有用于存储数据的存储中心和对数据进行过滤的数据字典,该方法包括:

步骤100,基于预先设定的偏移量从消息队列中线性的拉取消息数据。

在该步骤中,由于消息队列中存在数量极为巨大的消息数据,为了避免重复的拉取相同的消息数据,根据服务器的性能和实际需求等条件提前设定偏移量,根据该偏移量从消息队列中线性的拉取消息数据,线性的拉取是指按照一定的顺序进行拉取,并标定此次拉取的位置节点,其中,一般选择数字顺序进行线性拉取,即从一个既定的起始点开始,连续的拉取偏移量对应数量的消息数据,并标定最后一条消息数据在消息队列中的位置,下次消息数据的拉取将以该最后一条消息数据的后一条数据为起始点进行线性拉取。举例说明如下:若预先设定的偏移量为2000,以第一条消息数据为起始点,第一次拉取,拉取前2000条消息数据,并标记第2000条消息数据,第二次拉取从第2001条开始,拉取到第4000条结束,并标记第4000条消息数据,以此类推进行消息数据的拉取,其中,每次拉取为2000条消息同时拉取。

步骤200,基于预先设定的线程数对消息数据进行任务拆分,得到多份任务数据,并将该多份任务数据进行线程分发。

在该步骤中,单线程处理大量数据效率较低,根据实际需求和服务器的实际性能设置多线程的并行异步处理,其中,每个线程对应一个异步处理器,可以加快一次拉取的消息数据的处理速度,多线程之间影响较小,多线程并行处理相当于将处理速度提高了线程数对应的倍数,缩短了一次消息数据的处理时间。举例说明如下:如步骤100的举例所示,一次性拉取了2000条消息数据,若设置有N个线程,则将消息数据平均拆分为2000/N份,每份对应一个任务数据,若无法整除,则向上取整,但是线程数一般是固定的,偏移量可以在拉取消息数据前进行人为设定,一般会选择线程数的倍数作为偏移量,在消息数据拆分完毕后,同时将2000/N份被拆分后的消息数据分配给不同线程。可选地,在拆分过程中也可以线性进行拆分,即按照顺序进行拆分,从第一条消息数据开始,每2000/N条数据被分为一组。

需要说明的是,每个线程对分配到的任务数据的处理方式相同,所以,以一个线程的任务数据的处理过程进为例进行说明,处理过程如下:

步骤300,基于数据字典中预设的判定条件,对输入的任务数据进行过滤得到类线性数据或非类线性数据。

在该步骤中,为保证数据字典读取的效率,本申请将数据字典存储于缓存中,提高每次对数据字典的读取效率。当任务数据分发完毕,根据数据字典中预设的判定条件对任务数据中的每条消息进行逐条判定,若任务数据中的某条消息满足数据字典的要求,则判定该条消息为类线性消息,本线程中全部的类线性消息构成类线性数据;若任务数据中的某条消息不满足数据字典的要求,则判定该条消息为类线性消息,本线程中全部的非类线性消息构成非类线性数据。

可选地,在数据字典对任务数据进行比对过滤之间,对任务数据进行一次脏数据的清洗,避免任务数据中存在的脏数据影响数据字典的对比结果,还可以提高数据字典对任务数据的过滤速度,进而提高整个消息数据的处理效率。

步骤400,响应于确定得到类线性数据,对类线性数据进行业务逻辑处理,得到处理数据,并将处理数据存入存储中心。

在该步骤中,在任务数据中筛选出全部满足数据字典要求的类线性消息构成类线性数据,说明类线性数据中的类线性消息是有效数据,可以选用该类线性数据中类线性消息进行对应的业务逻辑处理,得到处理数据,并将该处理数据存入存储中心,以供终端设备进行读取或调用。

步骤500,响应于确定得到非类线性数据,将非类线性数据存入存储中心。

在该步骤中,在任务数据中筛选出全部不满足数据字典要求的非类线性消息构成非类线性数据,说明非类线性数据中的非类线性消息是过期的,是无效数据,不可以选用该非类线性数据进行对应的业务逻辑处理,直接将该非类线性数据存入存储中心,以供后续使用。

步骤600,响应于确定存储中心内的处理数据和非类线性数据的总数量与偏移量相等,基于偏移量再次从消息队列中线性的拉取数据。

在该步骤中,当全部线程的任务数据异步处理完毕,即存储中心内的处理数据和非类线性数据的总数量与偏移量相等,如步骤100中所述,服务器将根据偏移量继续拉取数据,即拉取消息队列中的第2001条至第4000条消息,以进行下一轮的消息数据处理。

需要说明的是,步骤300对应的异步处理过程作为基于缓存机制和多线程的消息数据消费方法中的重要一环,在该环节中,将分配给不同线程对应的异步处理器的任务数据与数据字典进行比对,一次性实现消息数据的异步处理,从而提高数据处理效率。

在一些实施例中,如图4所示,步骤300:基于数据字典中预设的判定条件,根据输入的任务数据得到类线性数据或非类线性数据,具体包括:

步骤310,提取任务数据中的第一时间戳。

在该步骤中,时间戳是能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。它的提出主要是为用户提供一份电子证据,以证明用户的某些数据的产生时间。任务数据中每条消息都有一个产生时间,在该步骤中,需要将证明该条消息的时间戳提取出来,以备后续使用。

步骤320,获取数据字典中的与第一时间戳相对应的第二时间戳。

在该步骤中,第二时间戳用于过滤掉不符合预设判定条件的消息,所以需要先确定数据字典中与第一时间戳相对应的第二时间戳,第二时间戳对应的消息与第一时间戳对应的消息为同一种消息类型,可以通过比较第一时间戳和第二时间戳的时间顺序确定本次任务数据中消息的情况。

步骤330,响应于确定第一时间戳晚于第二时间戳,任务数据经过数据字典过滤后得到类线性数据。

在该步骤中,第一时间戳对应的时刻在时间序列上晚于数据字典中第二时间戳对应的时刻,说明第一时间戳对应的消息的产生时间晚于数据字典中第二时间戳记录的产生时间,表明第一时间戳对应的消息是最新产生的,为有效消息,将该消息标记为类线性消息,全部的类线性消息构成类线性数据,可以应用该类线性数据办理相应业务。

步骤340,响应于确定第一时间戳早于第二时间戳,任务数据经过数据字典过滤后得到类线性数据。

在该步骤中,第一时间戳对应的时刻在时间序列上早于数据字典中第二时间戳对应的时刻,说明第一时间戳对应的消息的产生时间早于数据字典中第二时间戳记录的产生时间,表明第一时间戳对应的消息不是最新产生的,是过期消息,为无效消息,将该消息标记为非类线性消息,全部的非类线性消息构成类线性数据,由于该非类线性数据已经过期,无法用来办理相应的业务,将其直接存入存储中心。

结合本实施例进行举例说明,如下所示:还以用户注册为例进行说明,若任务数据中的注册消息的产生时间为13:00,数据字典中与注册消息相对应的第二时间戳记录的产生时间为12:59,说明用户在12:59为了注册业务输入了一次消息数据,然后在13:00就同一注册业务又输入了一次数据,说明12:59输入的数据并没有使用户注册成功,用户在13:00重新输入了数据,则以最新的数据为准进行注册任务的办理。若任务数据中的注册消息的产生时间为12:58,则说明该注册消息为过期消息,直接将其存入存储中心,不在执行完整的注册过程,从而提高消息输数据的处理效率。

在一些实施例中,如图5所示,步骤320,获取数据字典中的与第一时间戳相对应的第二时间戳,具体包括:

步骤321,在数据字典中确定第一时间戳对应索引。

在该步骤中,数据字典中的索引为与时间戳相依赖的数据类型,则可以根据提取第一时间戳的消息的数据类型在数据字典中寻找第二时间戳。

步骤322,基于索引,获取数据字典中与索引相对应的第二时间戳。

在该步骤中,由于索引与第二时间戳一一对应,当找到与第一时间戳相对应的索引后,根据索引可以找到第二时间戳。

在一些实施例中,如图6所示,步骤311,在数据字典中确定第一时间戳对应索引,具体包括:

步骤3211,基于第一时间戳,在任务数据中提取与第一时间戳相对应的线性信息字段。

步骤3212,基于线性信息字段,确定线性信息字段对应的数据类型。

步骤3213,获取数字典中与数据类型相对应的索引。

其中,首先要确定第一时间戳对应的消息中的可以判断数据类型的线性信息字段,并根据该线性字段信息判断该消息的数据类型,然后在数据字典中找到与该数据类型相匹配的索引。

在一些实施例中,在将处理数据存入存储中心之前,还包括:将数据字典中的第二时间戳替换为第一时间戳。

其中,在第一时间戳晚于第二时间戳的情况下,第一时间戳对应的消息为后产生的,将数据字典中的第二时间戳替换为第一时间戳后,第一时间戳将代替第二时间戳对后续的同类型消息进行是否过期的判断。

在一些实施例中,基于缓存机制和多线程的消息数据消费方法还包括;将被替换掉的第二时间戳存入存储中心。

响应于确定消息数据存在错误,调取存储中心的第二时间戳对该消息数据进行恢复。

其中,存储中心用于查漏补缺,当出现数据字典过滤错误的数据时,可以通过存储中心进行数据恢复。也可以设计定时任务对存储中心中被过滤掉的数据进行二次检查,从而降低错误过滤数据的概率。所以,被替换掉的第二时间戳不需要立即进行删除,而是将其存入存储中心,以待数据恢复或第二次检查时使用。

需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。

需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种基于缓存机制和多线程的消息数据消费装置。

参考图7和图8,基于缓存机制和多线程的消息数据消费装置,包括:

服务器1,被配置为:基于预先设定的偏移量从消息队列中线性的拉取消息数据;

基于预先设定的线程数对消息数据进行任务拆分,得到多份任务数据,并将该多份任务数据进行线程分发;

响应于确定存储中心4内的处理数据和非类线性数据的总数量与偏移量相等,基于偏移量再次从消息队列中线性的拉取数据;

异步处理器2,被配置为:基于数据字典3中预设的判定条件,对输入的任务数据进行过滤得到类线性数据或非类线性数据;

响应于确定得到类线性数据,对类线性数据进行业务逻辑处理,得到处理数据,并将处理数据存入存储中心4;

响应于确定得到非类线性数据,将非类线性数据存入存储中心4。

其中,存储中心4可以部署在本地服务器,也可部署在远程服务器。存储中心4被配置为:当出现数据字典3过滤错误的数据时,通过存储中心4进行数据恢复;基于预设的定时任务对存储中心4中被过滤掉的非类线性数据进行二次检查,从而降低错误过滤的概率。而为保证数据字典3读取的效率,本申请将数据字典3存储于缓存中,提高每次对数据字典3的读取效率。数据字典3被配置为:存储每条依赖于时间戳的数据在最新处理时对应的时间戳。

其中,服务器1从消息队列中拉取预设偏移量数量的消息作为消息数据,并根据异步处理器2的数量对消息数据进行平均拆分,服务器1将拆分后的任务数据同时分发给不同的异步处理器2。异步处理器2对任务数据进行初步的清洗,过滤掉消息数据中的脏数据,然后异步处理器2将任务数据中每条消息所携带的第一时间戳与数据字典3中的第二时间戳进行比对,若第一时间戳晚于第二时间戳,判定任务数据中的消息满足数据字典3的要求,为类线性数据,数据字典3将存储的第二时间戳替换为第一时间戳,服务器1可以使用该线性数据进行相关的业务办理,并将业务逻辑处理后的数据存入存储中心4;若第一时间戳早于第二时间戳,判定任务数据中的消息不满足数据字典3的要求,为非类线性数据,任务数据中的这些消息会被数据字典3过滤掉,直接存入存储中心4,当全部的异步处理器2都完成各自任务数据的处理,服务器1根据偏移量进行下次消息数据的拉取。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

上述实施例的装置用于实现前述任一实施例中相应的基于缓存机制和多线程的消息数据消费方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的基于缓存机制和多线程的消息数据消费方法。

图9示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

上述实施例的电子设备用于实现前述任一实施例中相应的基于缓存机制和多线程的消息数据消费方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的基于缓存机制和多线程的消息数据消费方法。

本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的基于缓存机制和多线程的消息数据消费方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。

技术分类

06120114738587