CN116841759A - 数据处理方法、装置、计算机设备及计算机可读存储介质 - Google Patents
数据处理方法、装置、计算机设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116841759A CN116841759A CN202210290199.0A CN202210290199A CN116841759A CN 116841759 A CN116841759 A CN 116841759A CN 202210290199 A CN202210290199 A CN 202210290199A CN 116841759 A CN116841759 A CN 116841759A
- Authority
- CN
- China
- Prior art keywords
- message
- time
- memory
- queue
- database
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 60
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 30
- 230000008569 process Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 14
- 238000005516 engineering process Methods 0.000 abstract description 18
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 10
- 238000009826 distribution Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了数据处理方法、装置、计算机设备及计算机可读存储介质,可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,该方法包括:从消息队列中获取多个消息;将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,第一头部时间包括队头消息的更新时间,第一尾部时间包括队尾消息的更新时间,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息。通过本申请,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据处理方法、数据处理装置、计算机设备及计算机可读存储介质。
背景技术
消息队列(Message Queue,MQ)是一种基于先进先出数据结构设计的分布式***中间件,主要解决应用耦合、异步消息、流量削锋等问题。目前,在数据同步方案中,通常是将数据放入消息队列,采用持久化技术将消息队列以文件的方式保存在本地磁盘,使用消息队列向不同的数据源同步数据;但是,一方面磁盘的读写速度较慢,导致数据同步效率较低;另一方面,在采用虚拟化容器技术进行数据同步时,越来越多的服务不依赖具体的机器,如果发生机器重建,则可能会更换宿主机器,导致备份的磁盘文件丢失。
因此,如何提高数据同步效率以及数据的安全性是目前有待解决的问题。
发明内容
本申请实施例提供了数据处理方法、装置、计算机设备及计算机可读存储介质,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
一方面,本申请实施例提供了一种数据处理方法,该方法包括:
从消息队列中获取多个消息,该消息队列包括的消息是从数据库日志文件中读取的;
将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;
在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,该第一头部时间包括队头消息的更新时间,该第一尾部时间包括队尾消息的更新时间,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息。
一方面,本申请实施例提供一种数据处理装置,该装置包括:
获取单元,用于从消息队列中获取多个消息,该消息队列包括的消息是从数据库日志文件中读取的;
处理单元,用于将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;
该处理单元,还用于在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,该第一头部时间包括队头消息的更新时间,该第一尾部时间包括队尾消息的更新时间,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息。
一方面,本申请实施例提供一种计算机设备,该计算机设备包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述的数据处理方法。
一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被计算机设备的处理器读取并执行时,使得计算机设备执行上述的数据处理方法。
一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的数据处理方法。
本申请实施例,首先是从消息队列中获取多个消息;然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。另外,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息,通过利用第一数据库对多个消息以及每个消息的更新时间进行备份,并且利用第二数据库对每个内存队列对应的第一头部时间和第一尾部时间进行存储,在出现重启事件时可以利用第一数据库和第二数据库中保存的数据对多个内存队列中的消息进行恢复,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理***的结构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的另一种数据处理方法的流程示意图;
图4是本申请实施例提供的另一种数据处理方法的流程示意图;
图5是本申请实施例提供的另一种数据处理方法的流程示意图;
图6是本申请实施例提供的一种数据处理装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中所涉及到的“第一”、“第二”等描述仅用于描述目的,而不能理解为指示或者暗示其相对重要性或者隐含指明所指示的技术特征的数量。因此,限定有“第一”、“第二”的技术特征可以明示或者隐含的包括至少一个该特征。
在本申请实施例中,涉及云技术(Cloud technology),所谓的云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID entity)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理***(Database Management System,DBMS)是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、可扩展标记语言(Extensible MarkupLanguage,XML);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如结构化查询语言(Structured Query Language,SQL);或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。其中,本申请实施例可以应用于键值(key-value,kv)数据库,所谓的kv数据库是一种以键值对存储数据的数据库,每个键都会对应一个唯一的值。例如,全称远程字典服务(remote dictionary Server,redis)数据库,所谓的redis数据库是一个开源、基于内存、高性能、可数据持久化的key-value存储***,可用作数据库、缓存和消息中间件。
大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件***、分布式数据库、云计算平台、互联网和可扩展的存储***。
基于上述所提及的云技术,本申请实施例提出了一种数据处理方法,以保证数据的安全性。具体的,该数据处理方法的大致原理如下:首先是从消息队列中获取多个消息;然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。另外,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息。其中,所谓的“消费”是指目标数据源从内存队列中拿取消息,并执行相应的数据逻辑处理。
在具体实现中,上述所提及的数据处理方法可以由计算机设备执行的,该计算机设备可以是终端设备或服务器。其中,终端设备可以例如是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、飞行器等,但并不局限于此;服务器可以例如是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发服务器(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
具体的,上述所提及的数据处理方法可以由服务器执行。例如,参见图1所示:服务器101从消息队列中获取多个消息,然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在同步数据端102从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中等步骤。其中,同步数据端102可以认为是目标数据源,目标数据源可以是指上述提到的服务器,也可以是终端设备,具体可以对应于企业的各个业务平台或者不同职能部门等,能够从服务器101中消费消息,实现数据同步。
本申请实施例,利用第一数据库对多个消息以及每个消息的更新时间进行备份,并且利用第二数据库对每个内存队列对应的第一头部时间和第一尾部时间进行存储,在出现重启事件时便可利用第一数据库和第二数据库中保存的数据对多个内存队列中的消息进行恢复,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
可以理解的是,本申请实施例描述的***架构示意图是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着***架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于上述阐述,下面结合图2所示的流程图,对本申请实施例所提出的数据处理方法作进一步阐述。在本申请实施例中,主要以上述所提及的计算机设备执行该数据处理方法为例进行说明。请参见图2,该数据处理方法具体可以包括步骤S201~S203:
S201、从消息队列中获取多个消息。
在本申请实施例中,该消息队列包括的消息是从数据库日志文件中读取的。所谓的消息队列(Message Queue,MQ)是一种基于先进先出数据结构设计的分布式***中间件,主要解决应用耦合、异步消息、流量削锋等问题。计算机设备从数据库日志文件中读取到多个消息,然后将多个消息添加至消息队列中,后续便可直接从消息队列中获取到多个消息。其中,该数据库日志文件包括多个消息以及每个消息的更新时间,用于触发其他数据源的变更;该消息队列为了保证顺序采用的是单分区的方式,可以应用于各种业务,如消息分发服务、协同数据记录服务等。
S202、将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中。
在本申请实施例中,内存队列可以看作是一个存放消息的容器,采用先进先出数据结构,当需要使用消息的时候从容器中取出来。其中,每个消息都有一个更新时间。计算机设备可以通过消息队列进行协同数据记录服务,所谓的协同数据记录服务是指将多个消息以及每个消息的更新时间同步存储至第一数据库,实现对多个消息以及每个消息的更新时间进行备份;以及可以通过消息队列进行消息分发服务,所谓的消息分发服务是指将多个消息添加到多个内存队列中,以使得目标数据源从多个内存队列中消费消息。具体的,计算机设备可以对每个消息的主键标识进行取模或者哈希计算,将具有相同主键标识的消息添加至同一个内存队列中。应当理解的,计算机设备进行协同数据记录服务和消息分发服务采用的是同步的方式,即在进行消息分发服务的同时,利用第一数据库存储分发的每个消息以及每个消息的更新时间。通过该方式,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
需要说明的是,第一数据库是一个临时存储消息的数据库,利用第一数据库的事务特性能够保证每个消息至少一次(at-least-once),即每个消息至少能够被同步一次。当第一数据库存储的数据量较大时,可以定时删除过期的消息。例如,在每天晚上的12点,计算机设备会将已经确认同步至目标数据源的消息从第一数据库中进行删除;或者计算机设备会将最早存储的100条消息从第一数据库中进行删除。
在一种可能的实现方式中,计算机设备将多个消息添加到多个内存队列中,具体的实现方式为:针对多个消息中的任一消息,基于任一消息的主键标识从多个内存队列中确定目标内存队列;将任一消息添加到该目标内存队列中。需要说明的是,计算机设备从消息队列中获取到多个消息后,对主键标识进行取模或者哈希计算,将各个消息添加到对应的内存队列中,通过这样的方式使得具有相同主键标识的消息在相同的内存队列中,并且保证消息的顺序。
示例性的,消息队列中的消息从先到后依次为消息A、消息B和消息C。消息A的主键标识为1,消息B的主键标识为2,消息C的主键标识为1,消息D的主键标识为2。假设主键标识为1的消息添加至内存队列a,主键标识为2的消息添加至内存队列b。根据各个消息的主键标识,将消息A添加至内存队列a中,将消息B添加至内存队列b中,将消息C添加至内存队列a中,将消息D添加至内存队列b中。因此,内存队列a中的消息从先到后依次为消息A、消息C,内存队列b中的消息从先到后依次为消息B、消息D。
S203、在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中。
在本申请实施例中,该第一头部时间包括队头消息的更新时间,该第一尾部时间包括队尾消息的更新时间。第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复该多个内存队列中的消息。其中,第一数据库用于存储多个消息以及每个消息的更新时间,第二数据库用于存储多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间。第一数据库可以是临时的数据库,对多个消息以及每个消息的更新时间进行备份,保证数据安全;第二数据库只需存储每个内存队列对应的第一头部时间和第一尾部时间,减少了第二数据库的存储压力。目标数据源可以从多个内存队列中消费消息,每个内存队列会有单独的一个线程同步到目标数据源。示例性的,如果出现重启事件(如断电重启或机器重建),便可从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间,利用每个内存队列对应的第一头部时间和第一尾部时间,结合第一数据库中存储的多个消息以及每个消息的更新时间,使得计算机设备能够从第一数据库中获取到每个内存队列对应的消息,实现对多个内存队列中消息的恢复,从而保证了数据的安全性。
在一种可能的实现方式中,计算机设备将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,具体的实现方式为:获取多个内存队列中每个内存队列的队头消息和队尾消息;根据该队头消息的更新时间确定每个内存队列对应的第一头部时间,以及根据该队尾消息的更新时间确定每个内存队列对应的第一尾部时间;基于每个内存队列的队列标识、头部标识以及尾部标识,将每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中。
需要说明的是,第二数据库可以是redis数据库,是一种以键值对存储数据的数据库。计算机设备可以利用每个内存队列的队列标识和头部标识作为第一头部时间对应的键字段(key),将队头消息的更新时间作为第一头部时间对应的值字段(value);可以利用每个内存队列的队列标识和尾部标识作为第一尾部时间对应的键字段,将队尾消息的更新时间作为第一尾部时间对应的值字段。
在一种可能的实现方式中,计算机设备基于每个内存队列的队列标识、头部标识以及尾部标识,将每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中,具体的实现方式为:基于每个内存队列的队列标识以及头部标识,获取第二数据库存储的每个内存队列对应的第二头部时间;若每个内存队列对应的第一头部时间与第二头部时间不同,则将每个内存队列对应的第一头部时间存储至第二数据库中。
需要说明的是,计算机设备将每个内存队列对应的第一头部时间存储至第二数据库之前,需要先获取第二数据库中已经存储的每个内存队列对应的第二头部时间,如果第一头部时间与第二头部时间不同,才将每个内存队列对应的第一头部时间存储至第二数据库中;如果第一头部时间与第二头部时间相同,则不将每个内存队列对应的第一头部时间存储至第二数据库中。也就是说,在内存队列的第一头部时间相同时,只需记录一次即可,在恢复消息的时候,第二数据库中存储的所有更新时间区间内的消息都要进行恢复,保证了消息至少一次的特性。其中,在对第一头部时间与第二头部时间进行对比时,可以以秒作为最小时间单位,也可以以分钟作为最小时间单位,也可以以毫秒作为最小时间单位,在此不作限定。通过这样的方式,可以减少计算机设备的读写次数,提高数据处理的效率。
例如,以分钟作为最小时间单位,第一头部时间为9点10分20秒,第二头部时间为9点10分45秒,对第一头部时间与第二头部时间进行对比,第一头部时间与第二头部时间对应的都是9点10分,第一头部时间与第二头部时间相同,因此无需将该第一头部时间存储至第二数据库中。
又例如,以分钟作为最小时间单位,第一头部时间为9点10分20秒,第二头部时间为9点15分45秒,对第一头部时间与第二头部时间进行对比,第一头部时间对应的是9点10分,第二头部时间对应的是9点15分,第一头部时间与第二头部时间不同,因此需要将该第一头部时间存储至第二数据库中。
在一种可能的实现方式中,该方法还包括:基于每个内存队列的队列标识以及尾部标识,获取第二数据库存储的每个内存队列对应的第二尾部时间;若每个内存队列对应的第一尾部时间与第二尾部时间不同,则将每个内存队列对应的第一尾部时间存储至第二数据库中。同理,计算机设备将每个内存队列对应的第一尾部时间存储至第二数据库之前,需要先获取第二数据库中已经存储的每个内存队列对应的第二尾部时间,如果第一尾部时间与第二尾部时间不同,才将每个内存队列对应的第一尾部时间存储至第二数据库中;如果第一尾时间与第二尾部时间相同,则不将每个内存队列对应的第一尾部时间存储至第二数据库中。也就是说,在内存队列的第一尾部时间相同时,只需记录一次即可,在恢复消息的时候,第二数据库中存储的所有更新时间区间内的消息都要进行恢复,保证了消息至少一次的特性。其中,在对第一尾部时间与第二尾部时间进行对比时,可以以秒作为最小时间单位,也可以以分钟作为最小时间单位,也可以以毫秒作为最小时间单位,在此不作限定。通过这样的方式,可以减少计算机设备的读写次数,提高数据处理的效率。
综上所述,在本申请实施例中,首先是从消息队列中获取多个消息;然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。另外,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息,通过利用第一数据库对多个消息以及每个消息的更新时间进行备份,并且利用第二数据库对每个内存队列对应的第一头部时间和第一尾部时间进行存储,在出现重启事件时便可利用第一数据库和第二数据库中保存的数据对多个内存队列中的消息进行恢复,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
下面结合图3所示的流程图,对本申请实施例所提出的数据处理方法作进一步阐述。在本申请实施例中,主要以上述所提及的计算机设备执行该数据处理方法为例进行说明。请参见图3,该数据处理方法具体可以包括步骤S301~S306。
其中:
S301、从消息队列中获取多个消息。
S302、将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中。
S303、在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中。
其中,步骤S301~S303的具体实现方式可以参考上述步骤S201~S203的具体实现方式,在此不作赘述。
S304、若出现重启事件,则从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间。
在本申请实施例中,计算机设备在出现重启事件(如断电重启或机器重建)时,由于内存队列中的消息会丢失,从而影响数据同步,因此需要向目标数据源恢复之前每个内存队列对应的消息。首先,计算机设备会从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间,也就是说,获得了每个内存队列对应的更新时间区间,后续需要对该更新时间区间内的所有消息进行恢复。
S305、根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息。
在本申请实施例中,计算机设备从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间后,利用每个内存队列对应的第一头部时间和第一尾部时间,结合第一数据库中存储的多个消息以及每个消息的更新时间,使得计算机设备能够从第一数据库中获取每个内存队列对应的消息。
在一种可能的实现方式中,计算机设备根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息,具体的实现方式为:基于每个内存队列对应的第一头部时间和第一尾部时间确定每个内存队列对应的目标时间区间;从第一数据库存储的消息中确定对应的更新时间位于该目标时间区间内的消息;将对应的更新时间位于该目标时间区间内的消息作为每个内存队列对应的消息。需要说明的是,计算机设备利用第二数据库确定出每个内存队列对应的目标时间区间,在第一数据库中查找到对应的更新时间位于该目标时间区间内的消息,对应的更新时间位于该目标时间区间内的消息便是每个内存队列对应的消息,从而实现对每个内存队列对应的消息的获取。
示例性的,假设第二数据库中存储的内存队列a对应的第一头部时间为1点,内存队列a对应的第一尾部时间为2点,那么内存队列a对应的目标时间区间为1点~2点。第一数据库存储的消息A对应的更新时间为1点20分,消息B对应的更新时间为1点40分,消息C对应的更新时间为2点,消息D对应的更新时间为2点40分。因此,对应的更新时间位于该目标时间区间内的消息有消息A、消息B,即消息A、消息B为内存队列a对应的消息。
S306、向目标数据源恢复每个内存队列对应的消息。
在本申请实施例中,计算机设备确定出每个内存队列对应的消息后,向目标数据源恢复每个内存队列对应的消息,实现对整个内存数据的恢复,后续计算机设备便可继续正常地从内存队列中消费消息,从而避免了重启事件带来的影响,保证了数据的安全性。
在一种可能的实现方式中,计算机设备向目标数据源恢复每个内存队列对应的消息,具体的实现方式为:向目标数据源发送所述每个内存队列对应的消息,以使得目标数据源消费每个内存队列对应的消息;或者,将每个内存队列对应的消息添加到每个内存队列中,以使得目标数据源从每个内存队列中消费消息。需要说明的是,计算机设备可以直接将从第一数据库中确定出的每个内存队列对应的消息发送给目标数据源进行消费,也可以将从第一数据库中确定出的每个内存队列对应的消息添加到每个内存队列中,目标数据源再从每个内存队列中消费消息,在此不作限定。
总的来说,上述阐述的数据处理方法可以归纳为如下五个部分:如图4所示,第一部分是数据库日志文件(DB Binlog)401,该数据库日志文件401包括多个消息以及每个消息的更新时间,用于触发其它数据源的变更;第二部分是消息队列402,将数据库日志文件401中包括的消息添加到消息队列402中,消息队列402作为分布式***中间件,为了保证顺序采用单分区的方式,可以提供消息分发服务、协同数据记录服务等;第三部分是消息分发服务(读取消息队列数据403),将多个消息添加到多个内存队列中,下游被同步目标数据源406从多个内存队列中消费消息,使用内存队列能够提高消费速度;第四部分是协同数据记录服务,利用第一数据库404作为消息队列的消费者,对多个消息以及每个消息的更新时间进行同步存储,实现对多个消息的备份;第五部分是第二数据库405存储,这里的第二数据库405可以是redis数据库,用于存储每个队列对应的第一头部时间和第一尾部时间。此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。在出现重启事件时,可以利用第二数据库405获取到每个队列对应的第一头部时间和第一尾部时间,结合第一数据库404中存储的多个消息以及每个消息的更新时间,向下游被同步目标数据源406恢复多个内存队列中的消息。
在一个实施例中,头部时间可以记为Headtime,尾部时间可以记为Backtime。
具体的,该数据处理方法可以归纳为如下步骤:如图5所示,步骤1是将数据库日志文件(DB Binlog)中的多个消息写入消息队列(MQ)中,写入的每条数据必须带上更新时间,最终这个更新时间会转化成第一头部时间和第一尾部时间,用于标识内存队列的时间范围。
步骤2是消费处理程序(消息分发服务),即从消息队列中获取单分区的消息(Message),也就是说,将多个消息添加到多个内存队列中。其中,每个消息都会对应一个更新时间。
步骤3是消息分发服务,读取到消息队列中的消息后,根据主键标识将每个消息添加到不同的内存队列中,通过这种方式使具有相同主键标识的消息落到同个内存队列,保证每个消息的顺序,同时将每个队列的队列标识和尾部标识作为每个队列的第一尾部时间对应的键字段,将每个队列的队尾消息的更新时间作为第一尾部时间对应的值字段,利用第二数据库对上述数据进行保存。这里对已保存的第二尾部时间和第一尾部时间可以作个对比,相同时间的可以不再调用第二数据库存储,从而减少计算机设备读写次数,提高数据处理效率。
步骤4是将每个内存队列的队列标识和头部标识作为每个队列的第一头部时间对应的键字段,将每个队列的队头消息的更新时间作为每个队列的第一头部时间对应的值字段,利用第二数据库对上述数据进行保存。这里对已保存的第二头部时间和第一头部时间可以作个对比,相同时间的可以不再调用第二数据库存储,从而减少计算机设备读写次数,提高数据处理效率。
步骤5是协同数据记录服务,即将多个消息以及每个消息的更新时间同步存储至第一数据库,利用数据库存的事务特性保证每个消息至少一次,第一数据库是一个临时存储消息的数据库,当数据量较大时可以定时删除过期数据。
步骤6是当消息分发服务发生异常出现重启事件时,会先读取第二数据库中所有内存队列对应的第一头部时间和第一尾部时间,使用这两个时间确定出目标时间区间,从第一数据库中获取到对应的更新时间位于该目标时间区间内的消息,即每个内存队列对应的消息。
步骤7是向目标数据源恢复每个内存队列对应的消息,实现对整个内存数据的恢复,后续计算机设备便可继续正常地从内存队列中消费消息,从而避免了重启事件带来的影响,保证了数据的安全性。
综上所述,在本申请实施例中,首先是从消息队列中获取多个消息;然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。若出现重启事件,则从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间;然后根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息,并向目标数据源恢复每个内存队列对应的消息。通过利用第一数据库对多个消息以及每个消息的更新时间进行备份,并且利用第二数据库对每个内存队列对应的第一头部时间和第一尾部时间进行存储,在出现重启事件时便可利用第一数据库和第二数据库中保存的数据对多个内存队列中的消息进行恢复,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
基于上述的数据处理方法,本申请实施例提供了一种数据处理装置。请参见图6,是本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置600可以运行如下单元:
获取单元601,用于从消息队列中获取多个消息,该消息队列包括的消息是从数据库日志文件中读取的;
处理单元602,用于将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;
该处理单元602,还用于在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,该第一头部时间包括队头消息的更新时间,该第一尾部时间包括队尾消息的更新时间,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息。
在一种实施方式中,处理单元602,还用于:若出现重启事件,则从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间;根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息;向目标数据源恢复每个内存队列对应的消息。
另一种实施方式中,处理单元602,在根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息时,可具体用于:基于每个内存队列对应的第一头部时间和第一尾部时间确定每个内存队列对应的目标时间区间;从第一数据库存储的消息中确定对应的更新时间位于该目标时间区间内的消息;将对应的更新时间位于该目标时间区间内的消息作为每个内存队列对应的消息。
另一种实施方式中,处理单元602,在将多个消息添加到多个内存队列中时,可具体用于:针对多个消息中的任一消息,基于任一消息的主键标识从多个内存队列中确定目标内存队列;将任一消息添加到目标内存队列中。
另一种实施方式中,处理单元602,在将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中时,可具体用于:获取多个内存队列中每个内存队列的队头消息和队尾消息;根据该队头消息的更新时间确定每个内存队列对应的第一头部时间,以及根据该队尾消息的更新时间确定每个内存队列对应的第一尾部时间;基于每个内存队列的队列标识、头部标识以及尾部标识,将每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中。
另一种实施方式中,处理单元602,在基于每个内存队列的队列标识、头部标识以及尾部标识,将每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中时,可具体用于:基于每个内存队列的队列标识以及头部标识,获取第二数据库存储的每个内存队列对应的第二头部时间;若每个内存队列对应的第一头部时间与第二头部时间不同,则将每个内存队列对应的第一头部时间存储至第二数据库中。
另一种实施方式中,处理单元602,在向目标数据源恢复每个内存队列对应的消息时,可具体用于:向目标数据源发送每个内存队列对应的消息,以使得目标数据源消费每个内存队列对应的消息;或者,将每个内存队列对应的消息添加到每个内存队列中,以使得目标数据源从每个内存队列中消费消息。
根据本申请的另一个实施例,图6所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的数据处理装置,以及来实现本申请实施例的数据处理方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
在本申请实施例中,首先是从消息队列中获取多个消息;然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。另外,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息,通过利用第一数据库对多个消息以及每个消息的更新时间进行备份,并且利用第二数据库对每个内存队列对应的第一头部时间和第一尾部时间进行存储,在出现重启事件时便可利用第一数据库和第二数据库中保存的数据对多个内存队列中的消息进行恢复,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
基于上述方法实施例以及装置实施例的描述,本申请实施例还提供一种计算机设备。请参见图7,该计算机设备700至少包括处理器701、通信接口702以及计算机存储介质703。其中,处理器701、通信接口702以及计算机存储介质703可通过总线或其他方式连接。计算机存储介质703可以存储在计算机设备700的存储器704中,所述计算机存储介质703用于存储计算机程序,所述计算机程序包括程序指令,所述处理器701用于执行所述计算机存储介质703存储的程序指令。处理器701(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例所述的处理器701可以用于进行一系列的数据处理,具体包括:从消息队列中获取多个消息,该消息队列包括的消息是从数据库日志文件中读取的;将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,该第一头部时间包括队头消息的更新时间,该第一尾部时间包括队尾消息的更新时间,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息,等等。
本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了计算机设备的操作***。并且,在该存储空间中还存放了适于被处理器701加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2或图3所示的数据处理方法实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器701加载并执行如下步骤:
从消息队列中获取多个消息,该消息队列包括的消息是从数据库日志文件中读取的;
将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;
在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,该第一头部时间包括队头消息的更新时间,该第一尾部时间包括队尾消息的更新时间,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息。
在一种实施方式中,该一条或多条指令可由处理器加载并还执行:若出现重启事件,则从第二数据库中获取每个内存队列对应的第一头部时间和第一尾部时间;根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息;向目标数据源恢复每个内存队列对应的消息。
另一种实施方式中,在根据每个内存队列对应的第一头部时间和第一尾部时间,从第一数据库中获取每个内存队列对应的消息时,该一条或多条指令可由处理器加载并具体执行:基于每个内存队列对应的第一头部时间和第一尾部时间确定每个内存队列对应的目标时间区间;从第一数据库存储的消息中确定对应的更新时间位于该目标时间区间内的消息;将对应的更新时间位于该目标时间区间内的消息作为每个内存队列对应的消息。
另一种实施方式中,在将多个消息添加到多个内存队列中时,该一条或多条指令可由处理器加载并具体执行:针对多个消息中的任一消息,基于任一消息的主键标识从多个内存队列中确定目标内存队列;将任一消息添加到目标内存队列中。
另一种实施方式中,在将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中时,该一条或多条指令可由处理器加载并具体执行:获取多个内存队列中每个内存队列的队头消息和队尾消息;根据该队头消息的更新时间确定每个内存队列对应的第一头部时间,以及根据该队尾消息的更新时间确定每个内存队列对应的第一尾部时间;基于每个内存队列的队列标识、头部标识以及尾部标识,将每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中。
另一种实施方式中,在基于每个内存队列的队列标识、头部标识以及尾部标识,将每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中时,该一条或多条指令可由处理器加载并具体执行:基于每个内存队列的队列标识以及头部标识,获取第二数据库存储的每个内存队列对应的第二头部时间;若每个内存队列对应的第一头部时间与第二头部时间不同,则将每个内存队列对应的第一头部时间存储至第二数据库中。
另一种实施方式中,在向目标数据源恢复每个内存队列对应的消息时,该一条或多条指令可由处理器加载并具体执行:向目标数据源发送每个内存队列对应的消息,以使得目标数据源消费每个内存队列对应的消息;或者,将每个内存队列对应的消息添加到每个内存队列中,以使得目标数据源从每个内存队列中消费消息。
在本申请实施例中,首先是从消息队列中获取多个消息;然后将多个消息以及每个消息的更新时间同步存储至第一数据库,并将多个消息添加到多个内存队列中;并且在目标数据源从多个内存队列中消费消息的过程中,将多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,此处的第一头部时间包括队头消息的更新时间,此处的第一尾部时间包括队尾消息的更新时间。另外,第一数据库和第二数据库用于在出现重启事件时向目标数据源恢复多个内存队列中的消息,通过利用第一数据库对多个消息以及每个消息的更新时间进行备份,并且利用第二数据库对每个内存队列对应的第一头部时间和第一尾部时间进行存储,在出现重启事件时便可利用第一数据库和第二数据库中保存的数据对多个内存队列中的消息进行恢复,能够提高数据同步效率,并可以防止数据丢失,从而提高数据的安全性。
需要说明的是,根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2或图3所示的数据处理方法实施例方面的各种可选方式中提供的方法。并且,应理解的是,以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
从消息队列中获取多个消息,所述消息队列包括的消息是从数据库日志文件中读取的;
将所述多个消息以及每个消息的更新时间同步存储至第一数据库,并将所述多个消息添加到多个内存队列中;
在目标数据源从所述多个内存队列中消费消息的过程中,将所述多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,所述第一头部时间包括队头消息的更新时间,所述第一尾部时间包括队尾消息的更新时间,所述第一数据库和所述第二数据库用于在出现重启事件时向所述目标数据源恢复所述多个内存队列中的消息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若出现重启事件,则从所述第二数据库中获取所述每个内存队列对应的第一头部时间和第一尾部时间;
根据所述每个内存队列对应的第一头部时间和第一尾部时间,从所述第一数据库中获取所述每个内存队列对应的消息;
向所述目标数据源恢复所述每个内存队列对应的消息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述每个内存队列对应的第一头部时间和第一尾部时间,从所述第一数据库中获取所述每个内存队列对应的消息,包括:
基于所述每个内存队列对应的第一头部时间和第一尾部时间确定所述每个内存队列对应的目标时间区间;
从所述第一数据库存储的消息中确定对应的更新时间位于所述目标时间区间内的消息;
将所述对应的更新时间位于所述目标时间区间内的消息作为所述每个内存队列对应的消息。
4.根据权利要求1~3中任一项所述的方法,其特征在于,所述将所述多个消息添加到多个内存队列中,包括:
针对所述多个消息中的任一消息,基于所述任一消息的主键标识从多个内存队列中确定目标内存队列;
将所述任一消息添加到所述目标内存队列中。
5.根据权利要求1~3中任一项所述的方法,其特征在于,所述将所述多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,包括:
获取所述多个内存队列中每个内存队列的队头消息和队尾消息;
根据所述队头消息的更新时间确定所述每个内存队列对应的第一头部时间,以及根据所述队尾消息的更新时间确定所述每个内存队列对应的第一尾部时间;
基于所述每个内存队列的队列标识、头部标识以及尾部标识,将所述每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中。
6.根据权利要求5所述的方法,其特征在于,所述基于所述每个内存队列的队列标识、头部标识以及尾部标识,将所述每个内存队列对应的第一头部时间以及第一尾部时间存储至第二数据库中,包括:
基于所述每个内存队列的队列标识以及头部标识,获取第二数据库存储的所述每个内存队列对应的第二头部时间;
若所述每个内存队列对应的第一头部时间与第二头部时间不同,则将所述每个内存队列对应的第一头部时间存储至所述第二数据库中。
7.根据权利要求2所述的方法,其特征在于,所述向所述目标数据源恢复所述每个内存队列对应的消息,包括:
向所述目标数据源发送所述每个内存队列对应的消息,以使得所述目标数据源消费所述每个内存队列对应的消息;
或者,将所述每个内存队列对应的消息添加到所述每个内存队列中,以使得所述目标数据源从所述每个内存队列中消费消息。
8.一种数据处理装置,其特征在于,所述装置包括:
获取单元,用于从消息队列中获取多个消息,所述消息队列包括的消息是从数据库日志文件中读取的;
处理单元,用于将所述多个消息以及每个消息的更新时间同步存储至第一数据库,并将所述多个消息添加到多个内存队列中;
所述处理单元,还用于在目标数据源从所述多个内存队列中消费消息的过程中,将所述多个内存队列中每个内存队列对应的第一头部时间和第一尾部时间存储至第二数据库中,所述第一头部时间包括队头消息的更新时间,所述第一尾部时间包括队尾消息的更新时间,所述第一数据库和所述第二数据库用于在出现重启事件时向所述目标数据源恢复所述多个内存队列中的消息。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1~7任一项所述的数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由处理器加载并执行如权利要求1~7任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210290199.0A CN116841759A (zh) | 2022-03-23 | 2022-03-23 | 数据处理方法、装置、计算机设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210290199.0A CN116841759A (zh) | 2022-03-23 | 2022-03-23 | 数据处理方法、装置、计算机设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116841759A true CN116841759A (zh) | 2023-10-03 |
Family
ID=88160331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210290199.0A Pending CN116841759A (zh) | 2022-03-23 | 2022-03-23 | 数据处理方法、装置、计算机设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116841759A (zh) |
-
2022
- 2022-03-23 CN CN202210290199.0A patent/CN116841759A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11153380B2 (en) | Continuous backup of data in a distributed data store | |
JP6522812B2 (ja) | 分散型データベースシステム用高速クラッシュ回復 | |
US10831614B2 (en) | Visualizing restoration operation granularity for a database | |
US11068501B2 (en) | Single phase transaction commits for distributed database transactions | |
EP2590087B1 (en) | Database log parallelization | |
KR101771246B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
US9785510B1 (en) | Variable data replication for storage implementing data backup | |
US10216949B1 (en) | Dynamic quorum membership changes | |
US8065273B2 (en) | Automated priority restores | |
CN102831156B (zh) | 一种云计算平台上的分布式事务处理方法 | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
US11934306B2 (en) | Object storage change-events | |
US9037905B2 (en) | Data processing failure recovery method, system and program | |
US9753792B2 (en) | Method and system for byzantine fault tolerant data replication | |
US10409804B2 (en) | Reducing I/O operations for on-demand demand data page generation | |
US20110055151A1 (en) | Processing Database Operation Requests | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN107992354B (zh) | 用于降低内存负载的方法以及装置 | |
WO2019109256A1 (zh) | 一种日志管理方法、服务器和数据库*** | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库*** | |
CN116483284B (zh) | 一种读写虚拟硬盘的方法、装置、介质及电子设备 | |
CN116049306A (zh) | 数据同步方法、装置、电子设备以及可读存储介质 | |
CN116841759A (zh) | 数据处理方法、装置、计算机设备及计算机可读存储介质 | |
CN114205368B (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 |