CN111221663B - 一种消息数据处理方法、装置、设备及可读存储介质 - Google Patents
一种消息数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111221663B CN111221663B CN201911150632.5A CN201911150632A CN111221663B CN 111221663 B CN111221663 B CN 111221663B CN 201911150632 A CN201911150632 A CN 201911150632A CN 111221663 B CN111221663 B CN 111221663B
- Authority
- CN
- China
- Prior art keywords
- message
- message data
- nonvolatile memory
- data
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 230000002085 persistent effect Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 abstract description 35
- 230000008569 process Effects 0.000 abstract description 9
- 238000005192 partition Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000002688 persistence Effects 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种消息数据处理方法、装置、设备及可读存储介质,该方法包括以下步骤:分布式消息队列系统接收消息生产者发布的消息数据;利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中;在接收消息消费者发送的消费请求时,从非易失性内存中查找与消费请求匹配的目标消息数据;将目标消息数据拷贝到内存缓存后,利用套接字将目标消息数据发送给消息消费者。本方法在持久化消息数据时,省去缓存步骤,且因非易失性内存具有读写速度快,掉电不丢失的特点,不仅简化持久化过程,而且还加快了消息数据的读写速度,提升了不同信息系统之间的数据共享性能。
Description
技术领域
本发明涉及数据共享交互技术领域,特别是涉及一种消息数据处理方法、装置、设备及可读存储介质。
背景技术
分布式应用系统与大数据技术应用日益广泛,为实现不同信息系统之间的数据共享,需要将数据封装为消息,通过消息队列(Message Queue,MQ)实现不同系统之间的数据共享交互。消息队列为一个先进先出的消息存储区域,消息按照顺序发送接收,一旦消息被消费处理,该消息将从队列中删除。
互联网应用每天产生海量日志,消息队列可以作为日志聚合的消息容器。消息队列可以快速高效将应用系统的业务数据发布到大数据分析平台,建立起应用系统与大数据分析平台之间的桥梁,实现两者之间的解耦关联。
目前,消息队列持久化消息到文件系统来存储和缓存消息,由于磁盘的读写相比CPU或DRAM(Dynamic Random Access Memory,动态随机存取存储器)缓慢,这导致消息持久化成为消息队列应用的性能瓶颈,难以提升不同信息系统之间的数据共享性能。
综上所述,如何有效地解决消息队列中消息持久化等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种消息数据处理方法、装置、设备及可读存储介质,以提升不同信息系统之间的数据共享性能。
为解决上述技术问题,本发明提供如下技术方案:
一种数据共享交互方法,包括:
分布式消息队列系统接收消息生产者发布的消息数据;
利用非易失性内存的存储接口,将所述消息数据持久化存储至所述非易失性内存中;
在接收消息消费者发送的消费请求时,从所述非易失性内存中查找与所述消费请求匹配的目标消息数据;
将所述目标消息数据拷贝到内存缓存后,利用套接字将所述目标消息数据发送给所述消息消费者。
优选地,在所述分布式消息队列系统接收消息生产者提交的消息数据之前,还包括:
检测系统硬件配置,确定是否配置了所述非易失性内存;
如果是,则将所述非易失性内存设置为应用直接访问模式。
优选地,还包括:
执行数据删除策略,以清除所述非易失性内存中的过期消息数据。
优选地,将所述消息数据持久化存储至所述非易失性内存中,包括:
利用JMS协议将所述消息数据持久化存储至所述非易失性内存中。
优选地,分布式消息队列系统接收消息生产者发布的消息数据,包括:
所述分布式消息队列系统为每类数据分别创建一个主题,以便所述消息生产者向主题发布所述消息数据。
优选地,所述分布式消息队列系统包括所述非易失性内存,所述非易失性内存通过DDR与服务器中的CPU相连接。
优选地,将所述消息数据持久化存储至所述非易失性内存中,包括:
在将所述消息数据持久化存储至所述非易失性内存时,在所述非易失性内存中对所述消息数据进行备份。
一种消息数据处理装置,包括:
数据获取模块,用于分布式消息队列系统接收消息生产者发布的消息数据;
数据存储模块,用于利用非易失性内存的存储接口,将所述消息数据持久化存储至所述非易失性内存中;
数据查找模块,用于在接收消息消费者发送的消费请求时,从所述非易失性内存中查找与所述消费请求匹配的目标消息数据;
数据发送模块,用于将所述目标消息数据拷贝到内存缓存后,利用套接字将所述目标消息数据发送给所述消息消费者。
一种消息数据处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述消息数据处理方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述消息数据处理方法的步骤。
应用本发明实施例所提供的方法,分布式消息队列系统接收消息生产者发布的消息数据;利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中;在接收消息消费者发送的消费请求时,从非易失性内存中查找与消费请求匹配的目标消息数据;将目标消息数据拷贝到内存缓存后,利用套接字将目标消息数据发送给消息消费者。
考虑到磁盘的读写相比CPU或DRAM缓慢,且目前难以针对磁盘的读写性能进行改善。且,非易失性内存具有读写速度快且掉电不丢失数据内容的特点。基于此,在分布式消息队列系统接收到消息生产者发布的消息数据时,将其直接存入非易失性内存中。而在接收到的消费请求时,则可从非易失性内存中读取到目标消息数据,并写入内存缓存,最终通过套接字便可将目标消息数据发送到消息消费者。相较于现有的先在内存中缓存消息数据,而后在将内存中缓缓的消息数据下刷至磁盘,本方法在持久化消息数据时,省去缓存这一步骤,且因非易失性内存具有读写速度快,掉电不丢失的特点,不仅简化持久化过程,而且还加快了消息数据的读写速度,提升了不同信息系统之间的数据共享性能。
相应地,本发明实施例还提供了与上述消息数据处理方法相对应的消息数据处理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种消息数据处理方法的实施流程图;
图2为本发明实施例中服务器内PMM与DDR物理模块连接关系示意图;
图3为本发明实施例中一种Topic的组织结构示意图;
图4为本发明实施例中一种消息数据的状态维护示意图;
图5为现有技术中消息数据处理方法的具体实施示意图;
图6为本发明实施例中一种消息数据处理方法的具体实施示意图;
图7为本发明实施例中一种消息数据处理装置的结构示意图;
图8为本发明实施例中一种消息数据处理设备的结构示意图;
图9为本发明实施例中一种消息数据处理设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于理解本发明实施例所提供的技术方案,下面对实施例中涉及到的缩略语和关键术语进行说明:
DDR(Double Data Rate):双倍速率同步动态随机存储器,同DDR SDRAM,人们习惯称为DDR,其中,SDRAM是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。
JMS(Java Message Service):JMS即Java消息服务(Java Message Service) 应用程序接口,是一个Java平台中关于面向消息中间件(MOM-分布式系统的集成)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议):一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上。
消息发送(生产)者(Producer,Publish):发送消息到消息队列中,消息队列中的一个角色。
消息接收(消费)者(Consumer,Subscribe):从消息队列中接收(消费),消息队列中的一个角色。
主题(Topic):一种支持消息多个订阅者的机制,或者作为消息类别的标识,比如Kafka集群的消息都有一个类别称为Topic。
Broker:Kafka集群包含一个或多个服务器,服务器节点称为broker,broker 存储topic的数据。
Partition:topic中的数据分割为一个或多个partition,每个topic至少有一个partition。
实施例一:
请参考图1,图1为本发明实施例中一种消息数据处理方法的流程图,该方法包括以下步骤:
S101、分布式消息队列系统接收消息生产者发布的消息数据。
在本实施例中,为了确保能够在非易失性内存中对消息数据进行持久化。在分布式消息队列系统接收消息生产者提交的消息数据之前,还可检测系统硬件配置,确定是否配置了非易失性内存;如果是,则将非易失性内存设置为应用直接访问模式。即在分布式消息队列系统的Broker所在服务器中增加非易失性内存硬件;系统中所使用的非易失性内存即PMM(Persistent Memory Module),可直接使用DIMM接口技术,通过设置为内存模式扩展为非易失性内存。
PMM可以配置成多种操作模式,包括内存模式(Memory Mode,MM)、应用直接访问模式(App Direct Mode,ADM),在内存模式中,PMM的使用和DRAM十分相似,不需要指定特定的软件或者对应用程序进行修改。且,在内存模式下,PMM与DRAM一样,数据掉电易失去;在ADM模式下,需要指定特定的持久性内存感知软件/应用程序,此模式使持久内存保持掉电数据不丢失,同时具有类似于内存的字节可寻址。即,在App Direct Mode下,持久性内存保持缓存。为保证大容量消息数据持久化过程中不出现数据丢失,在本实施例中选用App DirectMode模式。
具体的,在本实施例中执行本方法(即执行包括步骤S101至步骤S104) 中的分布式消息队列系统包括非易失性内存,非易失性内存通过DDR与服务器中的CPU相连接。在服务器中,PMM与DDR物理模块连接关系如图2所示。其中,DDR容量可具体为16/32GB,PMM容量可具体为128/256GB。
其中,分布式消息系统可具体为Kafka或其他MQ系统。其中,Kafka是分区的、多副本的、多订阅者,基于zookeeper协调的分布式消息队列系统。 Kafka主要设计特性:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能;高吞吐率,在商用机器上也能做到单机支持每秒100K条消息的传输;支持KafkaServer间的消息分区和分布式消费,每个partition内的消息顺序存储和传输;支持离线数据处理和实时数据流处理;支持在线水平扩展;支持发布-订阅模型的消息队列系统。在本实施例中,以Kafka为例进行说明,对应其他MQ系统的具体实现过程可参照与此,在此不再一一赘述。
分布式消息队列系统可接收点对点和发布订阅两种消息模型对应的消息生产者发送的消息数据。
发布订阅模型中,通过topic对消息进行路由,生产者可以将消息发到指定的topic,消费者订阅这个topic即可收到生产者发送的消息。Provider为每一个topic维护一个或多个queue来保存消息,消息在queue中是有序的,遵循先进先出的原则,不同queue间的消息是无序的。
点对点订阅模型中没有topic的概念,生产者直接将消息发送到指定queue,消费者也指定queue进行消费,消息只能被一个消费者消费,不可以被多个消费者消费。JMS定义了点对点和发布订阅这两种消息模型,且Kafka和大部分 MQ系统都实现了或部分实现了JMS协议。也就是说,消息数据持久化过程可具体为利用JMS协议将消息数据持久化存储至非易失性内存中。
S102、利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中。
在实际应用中,可开发基于非易失性内存ADM的存储接口,升级增加消息队列的持久化存储接口,增加支持将消息数据持久化存储到非易失性内存的接口。主要实现方法:检查系统硬件配置,是否配置ADM模式的PMM。
在接收到消息数据时,即可利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中。
优选地,考虑到在实际应用中,PMM的数量有多个,且在使用过程中,可能会出现故障。因此,在将消息数据持久化存储至非易失性内存时,可在非易失性内存中对消息数据进行备份。如此,便可通过数据备份对消息数据的可靠性进行保障。
S103、在接收消息消费者发送的消费请求时,从非易失性内存中查找与消费请求匹配的目标消息数据。
在本实施例中,可将消息消费者的订阅视为接收到消费请求。目标消息数据可根据消息消费者的订阅模式进行确定。在确定了目标消息数据之后,便可在非易失性内存中查找到该目标消息数据。
S104、将目标消息数据拷贝到内存缓存后,利用套接字将目标消息数据发送给消息消费者。
查找到目标消息数据之后,为便于传输该目标消息数据,可将目标消息数据拷贝到内存缓存,然后在利用套接字(Socket)发送feud消息消费者。
优选地,在本实施例中,为回收非易失性内存的存储空间,还可执行数据删除策略,以清除非易失性内存中的过期消息数据。其中,数据删除策略可具体为在确定消息数据过期或消息数据文件过大时,对过期消息数据进行清理。对于如何确定消息数据过期,可具体参见现有的消息队列的消息过期确定方式。
应用本发明实施例所提供的方法,分布式消息队列系统接收消息生产者发布的消息数据;利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中;在接收消息消费者发送的消费请求时,从非易失性内存中查找与消费请求匹配的目标消息数据;将目标消息数据拷贝到内存缓存后,利用套接字将目标消息数据发送给消息消费者。
考虑到磁盘的读写相比CPU或DRAM缓慢,且目前难以针对磁盘的读写性能进行改善。且,非易失性内存具有读写速度快且掉电不丢失数据内容的特点。基于此,在分布式消息队列系统接收到消息生产者发布的消息数据时,将其直接存入非易失性内存中。而在接收到的消费请求时,则可从非易失性内存中读取到目标消息数据,并写入内存缓存,最终通过套接字便可将目标消息数据发送到消息消费者。相较于现有的先在内存中缓存消息数据,而后在将内存中缓缓的消息数据下刷至磁盘,本方法在持久化消息数据时,省去缓存这一步骤,且因非易失性内存具有读写速度快,掉电不丢失的特点,不仅简化持久化过程,而且还加快了消息数据的读写速度,提升了不同信息系统之间的数据共享性能。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
优选地,考虑到,Kafka中发布订阅的对象是Topic(消息存放的目录即主题),每类数据创建一个Topic,Producer(具体为生产消息到topic的客户端) 向Topic发布消息,Consumer(具体为订阅topic消费消息的客户端)从Topic 订阅消息。Producers和Consumers可以同时向多个Topic读写数据。一个Kafka 集群由一个或多个Broker(Kafka的服务实例就是一个broker)服务器组成,负责持久化和备份具体的Kafka消息。Kafka时限数据共享时,分布式消息队列系统接收消息生产者发布的消息数据,包括:分布式消息队列系统为每类数据分别创建一个主题,以便消息生产者向主题发布消息数据。
具体的,消息发送时都被发送到一个Topic,其本质就是一个目录,而Topic 由是由一些Partition Logs(分区日志)组成,其组织结构如图3所示。每个 Partition内的消息都是有序的,生产的消息被不断追加到Partition log上,其中的每一个消息都被赋予了一个唯一的offset值。Kafka集群会保存所有的消息,消息可以被消费;可以设定消息的过期时间或消息队列存储文件大小,只有过期的数据或超过设定文件大小的数据才会被自动清除以释放磁盘空间。
请参考图4,Kafka需要维持的元数据只有消费消息在Partition中的offset 值,Consumer每消费一个消息,offset就会加1。可见,消息的状态完全是由 Consumer控制的,Consumer可以跟踪和重设这个offset值。如此,Consumer 就可以读取任意位置的消息。把消息日志以Partition的形式存放有多重考虑,每个Partition可以通过调整以适应其所在的机器,一个Topic又可以有多个 Partition组成,因此整个集群就可以适应任意大小的数据;多Partition可以提高并发,以Partition为单位并发读写。
为了便于本领域技术人员更好地理解本发明实施例所提供的消息数据处理方法的技术效果,下面结合现有技术以及本发明实施例所提供的消息数据处理方法进行详细说明。
请参考图5和图6,图5为现有技术中消息数据处理方法的具体实施示意图;图6为本发明实施例中一种消息数据处理方法的具体实施示意图。
从图5可见,当前消息队列(Kafka)的持久化流程,其技术方案如下:
生产者Producer发布消息数据:生产者Producer将消息数据提交到Topic所在Broker,Broker分配到相应Partition;Broker开始接收生产者的消息数据到内存缓存(Mem)中,缓存数据超过阈值,启动flush线程,将缓存中消息数据flush到磁盘的文件中;
消息者Consumer接收数据:Brocker先将消息数据由磁盘文件中找到,批量将消息写到内存缓存中,然后通过Socket将消息数据发给Consumer。
也就是说,现有的消息数据读写的过程需要先经过缓存,由于磁盘的读写速度与内存、CPU差距太多,消息数据先进行缓存,CPU处理缓存中的数据读写可以提高消息队列的性能,但内存中缓存的写入、分配、回收等也受到相应算法与资源限制。
本发明实施例所提供的消息数据处理方法,为更好的提高Kafka性能,满足大批量数据写入,保证数据写入安全,提高消费者数据读性能,不同于Kafka 目前持久化方案:Kafka维护尽可能多的内存缓存并且在需要的时候刷新到文件系统中,修改消息队列数据持久化存储接口,不再将数据先写入内存再刷新到硬盘;而是直接将数据写到非易失性内存的存储系统中。这样数据将直接被传输到非易失性内存中并被刷新。这样节省了数据由内存缓存到磁盘的刷新的中间步骤,逻辑上更简单;同时非易失性内存读写速度比磁盘更快。
实施例二:
相应于上面的方法实施例,本发明实施例还提供了一种消息数据处理装置,下文描述的消息数据处理装置与上文描述的消息数据处理方法可相互对应参照。
参见图7所示,该装置包括以下模块:
数据获取模块101,用于分布式消息队列系统接收消息生产者发布的消息数据;
数据存储模块102,用于利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中;
数据查找模块103,用于在接收消息消费者发送的消费请求时,从非易失性内存中查找与消费请求匹配的目标消息数据;
数据发送模块104,用于将目标消息数据拷贝到内存缓存后,利用套接字将目标消息数据发送给消息消费者。
应用本发明实施例所提供的装置,分布式消息队列系统接收消息生产者发布的消息数据;利用非易失性内存的存储接口,将消息数据持久化存储至非易失性内存中;在接收消息消费者发送的消费请求时,从非易失性内存中查找与消费请求匹配的目标消息数据;将目标消息数据拷贝到内存缓存后,利用套接字将目标消息数据发送给消息消费者。
考虑到磁盘的读写相比CPU或DRAM缓慢,且目前难以针对磁盘的读写性能进行改善。且,非易失性内存具有读写速度快且掉电不丢失数据内容的特点。基于此,在分布式消息队列系统接收到消息生产者发布的消息数据时,将其直接存入非易失性内存中。而在接收到的消费请求时,则可从非易失性内存中读取到目标消息数据,并写入内存缓存,最终通过套接字便可将目标消息数据发送到消息消费者。相较于现有的先在内存中缓存消息数据,而后在将内存中缓缓的消息数据下刷至磁盘,本装置在持久化消息数据时,省去缓存这一步骤,且因非易失性内存具有读写速度快,掉电不丢失的特点,不仅简化持久化过程,而且还加快了消息数据的读写速度,提升了不同信息系统之间的数据共享性能。
在本发明的一种具体实施方式中,还包括:
硬件设置模块,用于在分布式消息队列系统接收消息生产者提交的消息数据之前,检测系统硬件配置,确定是否配置了非易失性内存;如果是,则将非易失性内存设置为应用直接访问模式。
在本发明的一种具体实施方式中,还包括:
消息数据清理模块,用于执行数据删除策略,以清除非易失性内存中的过期消息数据。
在本发明的一种具体实施方式中,数据存储模块102,具体用于利用JMS 协议将消息数据持久化存储至非易失性内存中。
在本发明的一种具体实施方式中,数据获取模块101,具体用于分布式消息队列系统为每类数据分别创建一个主题,以便消息生产者向主题发布消息数据。
在本发明的一种具体实施方式中,分布式消息队列系统包括非易失性内存,非易失性内存通过DDR与服务器中的CPU相连接。
在本发明的一种具体实施方式中,数据存储模块102,具体用于在将消息数据持久化存储至非易失性内存时,在非易失性内存中对消息数据进行备份。
实施例三:
相应于上面的方法实施例,本发明实施例还提供了一种消息数据处理设备,下文描述的一种消息数据处理设备与上文描述的一种消息数据处理方法可相互对应参照。
参见图8所示,该消息数据处理设备包括:
存储器D1,用于存储计算机程序;
处理器D2,用于执行计算机程序时实现上述方法实施例的消息数据处理方法的步骤。
具体的,请参考图9,为本实施例提供的一种消息数据处理设备的具体结构示意图,该消息数据处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据 344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在消息数据处理设备301上执行存储介质330中的一系列指令操作。
消息数据处理设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
上文所描述的消息数据处理方法中的步骤可以由消息数据处理设备的结构实现。
实施例四:
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种消息数据处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的消息数据处理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (9)
1.一种消息数据处理方法,其特征在于,包括:
分布式消息队列系统接收消息生产者发布的消息数据;
利用非易失性内存的存储接口,将所述消息数据持久化存储至所述非易失性内存中;
在接收消息消费者发送的消费请求时,从所述非易失性内存中查找与所述消费请求匹配的目标消息数据;
将所述目标消息数据拷贝到内存缓存后,利用套接字将所述目标消息数据发送给所述消息消费者;
在所述分布式消息队列系统接收消息生产者提交的消息数据之前,还包括:
检测系统硬件配置,确定是否配置了所述非易失性内存;如果是,则将所述非易失性内存设置为应用直接访问模式;在所述分布式消息队列系统的Broker所在服务器中增加非易失性内存硬件,所述非易失性内存为PMM。
2.根据权利要求1所述的消息数据处理方法,其特征在于,还包括:
执行数据删除策略,以清除所述非易失性内存中的过期消息数据。
3.根据权利要求1所述的消息数据处理方法,其特征在于,将所述消息数据持久化存储至所述非易失性内存中,包括:
利用JMS协议将所述消息数据持久化存储至所述非易失性内存中。
4.根据权利要求1所述的消息数据处理方法,其特征在于,分布式消息队列系统接收消息生产者发布的消息数据,包括:
所述分布式消息队列系统为每类数据分别创建一个主题,以便所述消息生产者向主题发布所述消息数据。
5.根据权利要求1所述的消息数据处理方法,其特征在于,所述非易失性内存通过DDR与服务器中的CPU相连接。
6.根据权利要求1所述的消息数据处理方法,其特征在于,将所述消息数据持久化存储至所述非易失性内存中,包括:
在将所述消息数据持久化存储至所述非易失性内存时,在所述非易失性内存中对所述消息数据进行备份。
7.一种消息数据处理装置,其特征在于,包括:
数据获取模块,用于分布式消息队列系统接收消息生产者发布的消息数据;
数据存储模块,用于利用非易失性内存的存储接口,将所述消息数据持久化存储至所述非易失性内存中;
数据查找模块,用于在接收消息消费者发送的消费请求时,从所述非易失性内存中查找与所述消费请求匹配的目标消息数据;
数据发送模块,用于将所述目标消息数据拷贝到内存缓存后,利用套接字将所述目标消息数据发送给所述消息消费者;
硬件设置模块,用于在所述分布式消息队列系统接收消息生产者提交的消息数据之前,检测系统硬件配置,确定是否配置了所述非易失性内存;如果是,则将所述非易失性内存设置为应用直接访问模式;在所述分布式消息队列系统的Broker所在服务器中增加非易失性内存硬件,所述非易失性内存为PMM。
8.一种消息数据处理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述消息数据处理方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述消息数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911150632.5A CN111221663B (zh) | 2019-11-21 | 2019-11-21 | 一种消息数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911150632.5A CN111221663B (zh) | 2019-11-21 | 2019-11-21 | 一种消息数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221663A CN111221663A (zh) | 2020-06-02 |
CN111221663B true CN111221663B (zh) | 2022-07-22 |
Family
ID=70827730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911150632.5A Active CN111221663B (zh) | 2019-11-21 | 2019-11-21 | 一种消息数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221663B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202862B (zh) * | 2020-09-23 | 2023-12-05 | 北京明朝万达科技股份有限公司 | 一种基于kafka的集群数据以及文件的同步方法及装置 |
CN114422577A (zh) * | 2020-10-12 | 2022-04-29 | 腾讯科技(深圳)有限公司 | 一种业务变更消息的处理方法及装置 |
CN114553903A (zh) * | 2020-11-24 | 2022-05-27 | 中移物联网有限公司 | 一种物联网消息信息传输方法、装置及服务器 |
CN112486986A (zh) * | 2020-11-26 | 2021-03-12 | 清创网御(合肥)科技有限公司 | 一种Kafka中新增topic的消费数据自动持久化方法 |
CN113296976A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 消息处理方法、装置、电子设备、存储介质及程序产品 |
CN115914246A (zh) * | 2022-10-08 | 2023-04-04 | 广州市玄武无线科技股份有限公司 | 离线消息的点对点通信方法、系统、装置及存储介质 |
CN116521630B (zh) * | 2023-06-30 | 2024-01-02 | 深圳复临科技有限公司 | 任务进度实时显示方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490651A (zh) * | 2006-07-01 | 2009-07-22 | 国际商业机器公司 | 管理持久性的方法、装置和计算机程序 |
CN107943991A (zh) * | 2017-12-01 | 2018-04-20 | 成都嗨翻屋文化传播有限公司 | 一种基于内存数据库的分布式爬虫框架及实现方法 |
CN109408203A (zh) * | 2018-11-01 | 2019-03-01 | 无锡华云数据技术服务有限公司 | 一种队列消息一致性的实现方法、装置、计算系统 |
-
2019
- 2019-11-21 CN CN201911150632.5A patent/CN111221663B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490651A (zh) * | 2006-07-01 | 2009-07-22 | 国际商业机器公司 | 管理持久性的方法、装置和计算机程序 |
CN107943991A (zh) * | 2017-12-01 | 2018-04-20 | 成都嗨翻屋文化传播有限公司 | 一种基于内存数据库的分布式爬虫框架及实现方法 |
CN109408203A (zh) * | 2018-11-01 | 2019-03-01 | 无锡华云数据技术服务有限公司 | 一种队列消息一致性的实现方法、装置、计算系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111221663A (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221663B (zh) | 一种消息数据处理方法、装置、设备及可读存储介质 | |
CN110113420B (zh) | 基于nvm的分布式消息队列管理系统 | |
US9917913B2 (en) | Large message support for a publish-subscribe messaging system | |
US8417789B1 (en) | Distributed adaptive network memory engine | |
US9843551B2 (en) | Systems and methods for storing and transferring message data | |
US8108623B2 (en) | Poll based cache event notifications in a distributed cache | |
CN111400268B (zh) | 一种分布式持久性内存事务系统的日志管理方法 | |
US20140115251A1 (en) | Reducing Memory Overhead of Highly Available, Distributed, In-Memory Key-Value Caches | |
US20100106914A1 (en) | Consistency models in a distributed store | |
EP3360297A1 (en) | Systems and methods for storing message data | |
WO2018057066A1 (en) | Systems and methods for providing messages to multiple subscribers | |
US10127077B2 (en) | Event distribution pattern for use with a distributed data grid | |
CN107832423B (zh) | 一种用于分布式文件系统的文件读写方法 | |
CN105493474B (zh) | 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法 | |
CN107888687B (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
US20110119437A1 (en) | Sequentially Written Journal in a Data Store | |
WO2020118955A1 (zh) | 分布式元数据管理一致性保证方法、装置、系统及应用 | |
US10320906B2 (en) | Self-organizing storage system for asynchronous storage service | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
US20200042184A1 (en) | Cost-Effective Deployments of a PMEM-Based DMO System | |
CN113672169A (zh) | 流处理系统的数据读写方法和流处理系统 | |
CN112463073A (zh) | 一种对象存储分布式配额方法、系统、设备和存储介质 | |
US20180309702A1 (en) | Method and device for processing data after restart of node | |
CN116302605A (zh) | 一种基于消息引擎的消息传输方法 | |
CN112910980B (zh) | 一种数据库访问系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |