CN118113715A - 消息压缩方法、装置及电子设备 - Google Patents
消息压缩方法、装置及电子设备 Download PDFInfo
- Publication number
- CN118113715A CN118113715A CN202410391797.6A CN202410391797A CN118113715A CN 118113715 A CN118113715 A CN 118113715A CN 202410391797 A CN202410391797 A CN 202410391797A CN 118113715 A CN118113715 A CN 118113715A
- Authority
- CN
- China
- Prior art keywords
- log
- compressed
- message
- target
- writing
- 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.)
- Pending
Links
- 238000007906 compression Methods 0.000 title claims abstract description 72
- 230000006835 compression Effects 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000005192 partition Methods 0.000 claims description 69
- 238000013507 mapping Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 5
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000010276 construction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003010 incremental construction method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种消息压缩方法、装置及电子设备,涉及数据库数据交换领域,其中,所述方法包括:将接收到的待存储消息写入数据日志;根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。本申请实施例能够向已订阅预设主题的客户端发送键相同的消息中版本最新的消息,有利于提高客户端的处理效率。
Description
技术领域
本申请涉及数据库数据交换领域,尤其涉及一种消息压缩方法、装置及电子设备。
背景技术
Rocket消息队列(Message Queue,MQ)将消息通过顺序写的方式写入数据日志(ComimitLog)的同时,不断构建消息的消费索引(ConsumeQueue),在消费阶段可通过消费索引找到消息并进行处理。目前,Rocket MQ的应用场景下,客户端需拉取已订阅主题(Topic)的全部版本的消息,然后通过存储装置记录所有消息的版本号,并消费最新版本的消息。在某些特定场景下(如进行流处理时),同一条消息会不断更新版本,客户端只需要消费最新版本的消息,而客户端会拉取全部版本的消息,导致客户端消息处理的效率较低。
发明内容
本申请实施例提供一种消息压缩方法、装置及电子设备,以解决现有客户端会拉取全部版本的消息,导致客户端消息处理的效率较低的技术问题。
为解决上述技术问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种消息压缩方法,所述方法包括:
将接收到的待存储消息写入数据日志;
根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
第二方面,本申请实施例提供了一种消息压缩装置,所述装置包括:
写入模块,用于将接收到的待存储消息写入数据日志;
确定模块,用于根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
第一发送模块,用于向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
第三方面,本申请实施例提供了一种电子设备,所述电子设备包括收发机和处理器,
所述处理器,用于将接收到的待存储消息写入数据日志;
所述处理器,还用于根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
所述收发机,用于向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
第四方面,本申请实施例提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如第一方面所述的消息压缩方法的步骤。
第五方面,提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现如第一方面所述的消息压缩方法的步骤。
本申请实施例中,根据数据日志中的目标消息的键和写入时间,确定压缩日志,压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息。由于目标消息的写入是顺序写,因此键相同的目标消息中写入时间最晚的目标消息即为键相同的目标消息中版本最新的目标消息。目标消息的主题均为预设主题,通过向已订阅预设主题的客户端发送压缩日志中的目标消息,从而能够实现向已订阅预设主题的客户端发送键相同的目标消息中版本最新的目标消息。可见,本申请实施例中,无需向已订阅预设主题的客户端发送所有版本的消息,只需要发送键相同的消息中版本最新的消息,有利于提高客户端的处理效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种消息压缩方法的流程图之一;
图2是本申请实施例提供的一种消息压缩方法的流程图之二;
图3是本申请实施例提供的一种映射表和待压缩日志的示意图;
图4是本申请实施例提供的一种消息压缩方法的流程图之三;
图5是本申请实施例提供的一种消息压缩装置的结构示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中,提出了一种消息压缩方法、装置及电子设备,以解决现有客户端会拉取全部版本的消息,导致客户端消息处理的效率较低的技术问题。
参见图1,图1是本申请实施例提供的一种消息压缩方法的流程图,如图1所示,所述方法包括以下步骤:
步骤101、将接收到的待存储消息写入数据日志;
步骤102、根据所述数据日志中的目标消息的键(key)和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
步骤103、向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
本申请实施例的消息压缩方法应用于服务端,具体地,本申请实施例的消息压缩方法可以是应用于RocketMQ的服务端。
在步骤101中,RocketMQ的服务端将消息通过顺序写的方式写入数据日志(ComimitLog),保证了消息的写入速度。容易理解地,按照顺序写的方式写入,则对于相同键的消息,写入时间越晚,版本越新。
在步骤102中,为了不影响RocketMQ的普通消息收发处理机制,本申请实施例设置预设主题,仅针对发往预设主题的消息会在服务端对包含相同key的消息进行压缩,只保留最新版本的消息(即确定压缩日志)。压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息。消息按照顺序写入ComimitLog,本申请实施例中键相同的目标消息的写入时间越晚,则表征该目标消息的版本越新。可见本申请实施例中的压缩日志用于保存键相同的目标消息中版本最新的目标消息。
为了更清楚地理解,以下结合具体示例对本申请实施例中的压缩日志进行说明。
假设ComimitLog中包括键为key1的目标消息1、目标消息2和目标消息3,且目标消息3的写入时间晚于目标消息1和目标消息2;ComimitLog中还包括键为key2目标消息4和目标消息5,且目标消息5的写入时间晚于目标消息4;那么本申请实施例中的压缩日志保存的是键为key1目标消息3,以及键为key2目标消息5。
在步骤103中,向已订阅预设主题的客户端发送压缩日志中的目标消息。压缩日志中保存的是key相同的目标消息中版本最新的目标消息。可见本申请实施例中的客户端无需拉取所有版本的消息,只需要拉取并消费key相同的目标消息中最新版本的目标消息。
本申请实施例中的客户端只需要拉取并消费key相同的目标消息中最新版本的目标消息,有利于提高客户端对消息的处理效率,降低客户端消费的复杂度;此外,由于只需要拉取需要消费的目标消息,客户端无需再借助本地缓存或者第三方存储来记录所有消息的版本号,并消费最新版本的消息。
可选地,所述根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,包括:
实时将所述数据日志中的目标消息写入待压缩日志;
遍历所述待压缩日志,根据所述待压缩日志中的目标消息的键和写入时间,确定所述压缩日志。
本申请实施例在将消息通过顺序写的方式写入ComimitLog的同时,可通过后台线程异步将ComimitLog中主题为预设主题的目标消息写入待压缩日志。通过遍历待压缩日志,能够根据待压缩日志中的目标消息的key和写入时间,将key相同的目标消息中版本最新的目标消息写入压缩日志。
本申请实施例中,确定单独存储的待压缩日志,待压缩日志的不必受CommigLog的保存时间限制;且通过遍历待压缩日志而不是遍历CommigLog,能够避免直接遍历CommigLog文件产生的随机冷读。
可选地,所述实时将所述数据日志中的目标消息写入待压缩日志,包括:
实时将所述数据日志中多个分区的目标消息分别写入对应的待压缩日志,所述多个分区为所述预设主题的多个分区;
所述遍历所述待压缩日志,根据所述待压缩日志中的目标消息的key和写入时间,确定所述压缩日志,包括:
在所述多个分区中第一分区的目标消息均已写入第一待压缩日志的情况下,根据所述第一待压缩日志中的目标消息的key和写入时间,确定第一压缩日志;
其中,所述第一分区为所述多个分区中的任一分区,所述第一待压缩日志为所述第一分区对应的待压缩日志,所述第一压缩日志用于保存所述第一分区中key相同的目标消息中写入时间最晚的目标消息。
本申请实施例中,预设主题通常有多个分区,本申请实施例在将目标消息写入CommigLog的同时,将CommigLog中上述多个分区的目标消息分别写入对应的待压缩日志。这样,每个分区都有其对应的待压缩日志,通过遍历分区对应的待压缩日志,能够确定对应的压缩日志。
本申请实施例中,可定时对待压缩日志进行压缩,具体地,如上述,在CommigLog中第一分区的目标消息均已写入了对应的第一待压缩日志的情况下,启动后台线程对第一待压缩日志进行压缩,将第一待压缩日志中相同key的目标消息过滤并保留最新版本的目标消息,得到第一压缩日志。
值得提出的是,本申请实施例中,在将第一待压缩日志进行压缩得到第一压缩日志后,可用第一压缩日志替代第一待压缩日志,即保留第一压缩日志并删除第一待压缩日志,从而节约磁盘资源。
本申请实施例中,多个分区具有其对应的待压缩日志,因此可以分别对多个待压缩日志进行压缩,以得到对应的压缩日志,从而提高压缩的效率。
可选地,参见图2,所述根据所述第一待压缩日志中的目标消息的键和写入时间,确定第一压缩日志,包括:
构建第一映射表;
在遍历到所述第一待压缩日志中,第一目标消息的key未写入所述第一映射表的情况下,将所述第一目标消息的key和在所述第一待压缩日志中的存储位置写入所述第一映射表;
在遍历到所述第一待压缩日志中,第二目标消息的key已写入所述第一映射表的情况下,将所述第一映射表中所述第二目标消息的key对应的存储位置更新为所述第二目标消息在所述第一待压缩日志中的存储位置(Offset);
在遍历完所述第一待压缩日志的情况下,根据所述第一映射表中的存储位置,读取所述第一待压缩日志,并将读取到的目标消息写入所述第一压缩日志。
本申请实施例中,通过增量构建的方式构建映射表(也可称为OffsetMap)。通过增量构建无需将待压缩日志中的所有目标消息的key以及在待压缩日志中的Offset均写入OffsetMap,从而能够有效避免OffsetMap因超出运行内存限制而崩溃。
具体地,参见图3,图3示例性地给出了第一待压缩日志和第一映射表的示意图。为了更清楚地理解本申请实施例中的增量构建,以下结合图3对本申请实施例中的如何将相关内容写入映射表进行示例性说明。
在遍历到第一待压缩日志中,第一条消息(图3中offset为1的消息)的键key1未写入第一映射表的情况下,将key1和offset 1写入第一映射表。
offset为2的第二条消息同理,为避免重复,对此不再赘述。
在遍历到第一待压缩日志中,第三条消息(图3中offset为3的消息)的键key1已写入第一映射表的情况下,将第一映射表key1对应的offset 1更新为offset 3。值得提出的是,待压缩日志中和数据日志均为顺序写,因此遍历到的第三条消息的写入时间晚于上述第一条消息的写入时间,也即第三消息的版本比第一消息的版本更新。
重复上述写入第一映射表以及更新key对应的offset的步骤,在遍历完第一待压缩日志后,第一映射表中保存的是key相同的目标消息中,版本最新的目标消息的key和在第一待压缩日志中的offset。因此,在遍历完第一待压缩日志后,可基于第一映射表中的offset读取第一待压缩日志,通过将读取到的目标消息写入第一压缩日志,即可得到用于保存key相同的目标消息中,版本最新的目标消息的压缩日志。
本申请实施例中,基于第一映射表读取第一待压缩日志,从而确定第一压缩日志,无需随机读取第一待压缩日志的全部消息,有利于提高压缩效率。
可选地,所述实时将所述数据日志中多个分区的目标消息分别写入对应的待压缩日志之后,所述方法还包括:
实时构建所述多个分区对应的消费索引,所述第一分区对应的消费索引中包括所述第一分区的每条目标消息在所述第一待压缩日志中的存储位置;
所述将读取到的目标消息写入所述第一压缩日志,包括:
将读取到的目标消息的key、读取到的目标消息的值(value)以及读取到的目标消息在所述第一待压缩日志中的存储位置写入所述第一压缩日志。
本申请实施例中,消息队列RocketMQ将每一条消息通过顺序写的方式写入CommigLog的同时,通过后台线程不断地处理每一条消息并构建待压缩日志和消费索引文件(ConsumeQueue)。因此,除了实时构建所述预设主题的多个分区对应的消费索引之外,也还会构建预设主题之外的其他主题对应的消费索引。
预设主题之外的其他主题的消息不存在对应的待压缩日志和压缩日志,因此其对应的消费索引中,不包括消息在待压缩日志中的存储位置,或者在待压缩日志中的存储位置为空。其消费索引ConsumeQueue中保存了消息在数据日志CommigLog中的存储日志,作用是消息消费时根据消息拉取请求中携带的ConsumeQueue位点信息,获取实际消息在CommigLog中的位点信息。
预设主题的多个分区对应的消费索引中,保存有目标消息在对应的待压缩日志中的存储位置,例如第一分区对应的消费索引中包括第一分区的每条目标消息在第一分区的待压缩日志中的存储位置。
值得提出的是消费索引中还可以包括其他信息,以下示例性地提供一种消费索引结构:
表中:
(1)物理Offset,8字节,记录了这条消息在CommitLog日志中的位置;
(2)消息大小,4字节,记录了消息体的大小,单位字节;
(3)标签(Tag)值,8字节,记录了这条消息的Tag的哈希值,用于消费时进行过滤;
(4)存储时间(或写入时间),8字节,记录了消息落盘的时间;
(5)待压缩日志Offset,4字节,记录了消息在待压缩日志文件中的位置;
(6)保留位,4字节,作扩展用途。
本申请实施例中,第一分区对应的索引中记录了各目标消息在第一待压缩日志(即第一分区的待压缩日志)中的Offset。第一压缩日志中写入了第一分区的,key相同的目标消息中版本最新的目标消息的key、value以及在第一待压缩日志中的Offset。消息消费时根据消息拉取请求中携带的ConsumeQueue位点信息,能够获取实际消息在待压缩日志中的Offset,通过该Offset能够从压缩日志中读取对应的目标消息。
本申请实施例中,构建多个分区对应的消费索引,在消费阶段,通过查询消费索引能够获取目标消息在对应待压缩日志中的存储位置。
可选地,所述实时将所述数据日志中的目标消息写入待压缩日志,包括:
采用摘要算法对所述数据日志中每条目标消息的键进行处理;
将处理后的目标消息的键写入所述待压缩日志,所述处理后的目标消息的键均具有相同的长度。
通过摘要算法(如信息-摘要算法5(Message-Digest Algorithm 5,MD5))处理后的目标消息的键均具有相同的长度,将具有相同的长度的键写入待压缩日志便于后续处理。
为了保证压缩日志在服务崩溃后能正常提供服务,本申请实施例还提供了日志压缩服务的中断恢复机制。由于待压缩日志和压缩日志在压缩过程中会动态变化(压缩和替换),因此不适用于直接备份待压缩日志和压缩日志。本申请实施例提供一种备份数据日志CommigLog,并构建备节点压缩日志的方法。具体如下:
实时向备份节点发送所述数据日志中未进行备份的待存储消息,所述备份节点用于对所述数据日志备份,并根据所述数据日志中的目标消息的键和写入时间,确定所述压缩日志。
该实时方式中,备份节点用于对CommigLog备份,备份节点可根据备份进度文件查找备份位点,并接收主节点实时向备份节点发送的CommigLog中未进行备份的待存储消息。具体地,备份节点(即从节点)可实时根据备份进度文件中查找主从同步进度位点offset(即备份进度位点),从主节点的CommigLog的该位点开始,遍历消息并复制到从节点达到最新的offset位点。
备份节点参照上述确定压缩日志的实施例,对备机上的日志数据执行压缩操作,生成新的压缩日志。
本申请实施例通过备份节点从主节点的CommigLog读取消息数据写入备份节点,然后执行压缩操作生成新的备份压缩日志。当主节点不可用或处于忙碌(busy)状态,可以自动切换到备份节点消费数据。
本申请实施例中的消息压缩方法可应用于RocketMQ服务端,如图4所述服务端可包括存储模块、压缩模块和高可用性(High Availability,HA)模块。
其中:
存储模块用于将每一条消息通过顺序写的方式写入CommigLog中。
压缩模块用于构建待压缩日志和索引,并根据待压缩日志确定压缩日志,在压缩日志确定之后可用压缩日志替代对应的待压缩日志,具体地,可参照上述实施例,为避免重复,对此不再赘述。
HA模块用于备份CommigLog中的数据,并确定压缩日志,具体地,可参照上述实施例,为避免重复,对此不再赘述。
参见图5,图5是本申请实施例提供的一种消息压缩装置的结构示意图,如图5所示,所述装置200包括:
写入模块201,用于将接收到的待存储消息写入数据日志;
确定模块202,用于根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
第一发送模块203,用于向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
可选地,所述确定模块202包括:
写入子模块,用于实时将所述数据日志中的目标消息写入待压缩日志;
确定子模块,用于遍历所述待压缩日志,根据所述待压缩日志中的目标消息的键和写入时间,确定所述压缩日志。
可选地,所述写入子模块具体用于:
实时将所述数据日志中多个分区的目标消息分别写入对应的待压缩日志,所述多个分区为所述预设主题的多个分区;
所述确定子模块具体用于:
在所述多个分区中第一分区的目标消息均已写入第一待压缩日志的情况下,根据所述第一待压缩日志中的目标消息的键和写入时间,确定第一压缩日志;
其中,所述第一分区为所述多个分区中的任一分区,所述第一待压缩日志为所述第一分区对应的待压缩日志,所述第一压缩日志用于保存所述第一分区中键相同的目标消息中写入时间最晚的目标消息。
可选地,所述确定子模块包括:
构建单元,用于构建第一映射表;
第一写入单元,用于在遍历到所述第一待压缩日志中,第一目标消息的键未写入所述第一映射表的情况下,将所述第一目标消息的键和在所述第一待压缩日志中的存储位置写入所述第一映射表;
第二写入单元,用于在遍历到所述第一待压缩日志中,第二目标消息的键已写入所述第一映射表的情况下,将所述第一映射表中所述第二目标消息的键对应的存储位置更新为所述第二目标消息在所述第一待压缩日志中的存储位置;
第三写入单元,用于在遍历完所述第一待压缩日志的情况下,根据所述第一映射表中的存储位置,读取所述第一待压缩日志,并将读取到的目标消息写入所述第一压缩日志。
可选地,所述装置200还包括:
构建模块,用于实时构建所述多个分区对应的消费索引,所述第一分区对应的消费索引中包括所述第一分区的每条目标消息在所述第一待压缩日志中的存储位置;
所述第三写入单元具体用于:
将读取到的目标消息的键、读取到的目标消息的值以及读取到的目标消息在所述第一待压缩日志中的存储位置写入所述第一压缩日志。
可选地,所述写入子模块,具体用于:
采用摘要算法对所述数据日志中每条目标消息的键进行处理;
将处理后的目标消息的键写入所述待压缩日志,所述处理后的目标消息的键均具有相同的长度。
可选地,所述装置200还包括:
第二发送模块,用于实时向备份节点发送所述数据日志中未进行备份的待存储消息,所述备份节点用于对所述数据日志备份,并根据所述数据日志中的目标消息的键和写入时间,确定所述压缩日志。
装置200能够实现图1所示的方法实施例中的各个过程且能达到相同的有益效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述消息压缩实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
具体的,参见图6所示,本申请实施例还提供了一种电子设备,包括总线301、收发机302、天线303、总线接口304、处理器305和存储器306。
所述处理器305,用于将接收到的待存储消息写入数据日志;
所述处理器305,还用于根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
所述收发机302,用于向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
可选地,所述处理器305具体用于:
实时将所述数据日志中的目标消息写入待压缩日志;
遍历所述待压缩日志,根据所述待压缩日志中的目标消息的键和写入时间,确定所述压缩日志。
可选地,所述处理器305具体用于:
实时将所述数据日志中多个分区的目标消息分别写入对应的待压缩日志,所述多个分区为所述预设主题的多个分区;
在所述多个分区中第一分区的目标消息均已写入第一待压缩日志的情况下,根据所述第一待压缩日志中的目标消息的键和写入时间,确定第一压缩日志;
其中,所述第一分区为所述多个分区中的任一分区,所述第一待压缩日志为所述第一分区对应的待压缩日志,所述第一压缩日志用于保存所述第一分区中键相同的目标消息中写入时间最晚的目标消息。
可选地,所述处理器305具体用于:
构建第一映射表;
在遍历到所述第一待压缩日志中,第一目标消息的键未写入所述第一映射表的情况下,将所述第一目标消息的键和在所述第一待压缩日志中的存储位置写入所述第一映射表;
在遍历到所述第一待压缩日志中,第二目标消息的键已写入所述第一映射表的情况下,将所述第一映射表中所述第二目标消息的键对应的存储位置更新为所述第二目标消息在所述第一待压缩日志中的存储位置;
在遍历完所述第一待压缩日志的情况下,根据所述第一映射表中的存储位置,读取所述第一待压缩日志,并将读取到的目标消息写入所述第一压缩日志。
可选地,所述处理器305具体用于:
实时构建所述多个分区对应的消费索引,所述第一分区对应的消费索引中包括所述第一分区的每条目标消息在所述第一待压缩日志中的存储位置;
所述将读取到的目标消息写入所述第一压缩日志,包括:
将读取到的目标消息的键、读取到的目标消息的值以及读取到的目标消息在所述第一待压缩日志中的存储位置写入所述第一压缩日志。
可选地,所述处理器305具体用于:
采用摘要算法对所述数据日志中每条目标消息的键进行处理;
将处理后的目标消息的键写入所述待压缩日志,所述处理后的目标消息的键均具有相同的长度。
可选地,所述收发机302还用于:
实时向备份节点发送所述数据日志中未进行备份的待存储消息,所述备份节点用于对所述数据日志备份,并根据所述数据日志中的目标消息的键和写入时间,确定所述压缩日志。
在图6中,总线架构(用总线301来代表),总线301可以包括任意数量的互联的总线和桥,总线301将包括由处理器305代表的一个或多个处理器和存储器306代表的存储器的各种电路链接在一起。总线301还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口304在总线301和收发机302之间提供接口。收发机302可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器305处理的数据通过天线303在无线介质上进行传输,进一步,天线303还接收数据并将数据传送给处理器305。
处理器305负责管理总线301和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器306可以被用于存储处理器305在执行操作时所使用的数据。
可选的,处理器305可以是CPU、ASIC、FPGA或CPLD。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述消息压缩方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本申请实施例还提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述图1所示方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (12)
1.一种消息压缩方法,其特征在于,所述方法包括:
将接收到的待存储消息写入数据日志;
根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,包括:
实时将所述数据日志中的目标消息写入待压缩日志;
遍历所述待压缩日志,根据所述待压缩日志中的目标消息的键和写入时间,确定所述压缩日志。
3.根据权利要求2所述的方法,其特征在于,所述实时将所述数据日志中的目标消息写入待压缩日志,包括:
实时将所述数据日志中多个分区的目标消息分别写入对应的待压缩日志,所述多个分区为所述预设主题的多个分区;
所述遍历所述待压缩日志,根据所述待压缩日志中的目标消息的键和写入时间,确定所述压缩日志,包括:
在所述多个分区中第一分区的目标消息均已写入第一待压缩日志的情况下,根据所述第一待压缩日志中的目标消息的键和写入时间,确定第一压缩日志;
其中,所述第一分区为所述多个分区中的任一分区,所述第一待压缩日志为所述第一分区对应的待压缩日志,所述第一压缩日志用于保存所述第一分区中键相同的目标消息中写入时间最晚的目标消息。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一待压缩日志中的目标消息的键和写入时间,确定第一压缩日志,包括:
构建第一映射表;
在遍历到所述第一待压缩日志中,第一目标消息的键未写入所述第一映射表的情况下,将所述第一目标消息的键和在所述第一待压缩日志中的存储位置写入所述第一映射表;
在遍历到所述第一待压缩日志中,第二目标消息的键已写入所述第一映射表的情况下,将所述第一映射表中所述第二目标消息的键对应的存储位置更新为所述第二目标消息在所述第一待压缩日志中的存储位置;
在遍历完所述第一待压缩日志的情况下,根据所述第一映射表中的存储位置,读取所述第一待压缩日志,并将读取到的目标消息写入所述第一压缩日志。
5.根据权利要求4所述的方法,其特征在于,所述实时将所述数据日志中多个分区的目标消息分别写入对应的待压缩日志之后,所述方法还包括:
实时构建所述多个分区对应的消费索引,所述第一分区对应的消费索引中包括所述第一分区的每条目标消息在所述第一待压缩日志中的存储位置;
所述将读取到的目标消息写入所述第一压缩日志,包括:
将读取到的目标消息的键、读取到的目标消息的值以及读取到的目标消息在所述第一待压缩日志中的存储位置写入所述第一压缩日志。
6.根据权利要求2至5中任一项所述的方法,其特征在于,所述实时将所述数据日志中的目标消息写入待压缩日志,包括:
采用摘要算法对所述数据日志中每条目标消息的键进行处理;
将处理后的目标消息的键写入所述待压缩日志,所述处理后的目标消息的键均具有相同的长度。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
实时向备份节点发送所述数据日志中未进行备份的待存储消息,所述备份节点用于对所述数据日志备份,并根据所述数据日志中的目标消息的键和写入时间,确定所述压缩日志。
8.一种消息压缩装置,其特征在于,所述装置包括:
写入模块,用于将接收到的待存储消息写入数据日志;
确定模块,用于根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
第一发送模块,用于向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
9.一种电子设备,其特征在于,所述电子设备包括收发机和处理器,
所述处理器,用于将接收到的待存储消息写入数据日志;
所述处理器,还用于根据所述数据日志中的目标消息的键和写入时间,确定压缩日志,所述压缩日志用于保存键相同的目标消息中写入时间最晚的目标消息,所述目标消息的主题均为预设主题;
所述收发机,用于向已订阅所述预设主题的客户端发送所述压缩日志中的目标消息。
10.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至7中任一项所述的消息压缩方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的消息压缩方法的步骤。
12.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1至7中任一项所述的消息压缩方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410391797.6A CN118113715A (zh) | 2024-04-02 | 2024-04-02 | 消息压缩方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410391797.6A CN118113715A (zh) | 2024-04-02 | 2024-04-02 | 消息压缩方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118113715A true CN118113715A (zh) | 2024-05-31 |
Family
ID=91214111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410391797.6A Pending CN118113715A (zh) | 2024-04-02 | 2024-04-02 | 消息压缩方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118113715A (zh) |
-
2024
- 2024-04-02 CN CN202410391797.6A patent/CN118113715A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5832518A (en) | Log file optimization in a client/server computering system | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
JP2019519025A (ja) | 分散システムにおける範囲の分割および移動 | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
CN112256401B (zh) | 基于Kubernetes环境下的Prometheus高可用系统及实现方法 | |
CN107943618B (zh) | 仿真系统的数据快速恢复方法及存储介质 | |
CN111694863B (zh) | 一种数据库缓存的刷新方法、系统和装置 | |
US20210184878A1 (en) | Messaging to enforce operation serialization for consistency of a distributed data structure | |
CN102012899A (zh) | 一种数据更新的方法、系统及设备 | |
CN114661248B (zh) | 数据处理方法及装置 | |
CN114422537B (zh) | 多云存储系统、多云数据读写方法及电子设备 | |
CN112612850A (zh) | 数据同步方法及装置 | |
US8090695B2 (en) | Dynamic restoration of message object search indexes | |
CN115146002A (zh) | 跨数据中心的数据同步方法及装置 | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN112000850B (zh) | 进行数据处理的方法、装置、系统及设备 | |
WO2023241528A1 (zh) | 数据处理方法以及装置 | |
CN110413689B (zh) | 一种内存数据库的多节点数据同步方法与装置 | |
CN114490540B (zh) | 数据存储方法、介质、装置和计算设备 | |
JP5691306B2 (ja) | 情報処理システム | |
CN118113715A (zh) | 消息压缩方法、装置及电子设备 | |
JPH06250902A (ja) | 分散システムのファイルバックアップ方法 | |
CN115509440A (zh) | 存储系统及数据处理方法 | |
CN112860746B (zh) | 一种基于缓存削减的方法、设备及系统 | |
CN113515574A (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 |