CN110134550A - 一种数据处理方法、装置以及计算机可读存储介质 - Google Patents

一种数据处理方法、装置以及计算机可读存储介质 Download PDF

Info

Publication number
CN110134550A
CN110134550A CN201910402670.9A CN201910402670A CN110134550A CN 110134550 A CN110134550 A CN 110134550A CN 201910402670 A CN201910402670 A CN 201910402670A CN 110134550 A CN110134550 A CN 110134550A
Authority
CN
China
Prior art keywords
modification
data
map information
metadata
modified
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.)
Granted
Application number
CN201910402670.9A
Other languages
English (en)
Other versions
CN110134550B (zh
Inventor
刘永城
黄福堂
史佳婧
韩明瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910402670.9A priority Critical patent/CN110134550B/zh
Publication of CN110134550A publication Critical patent/CN110134550A/zh
Application granted granted Critical
Publication of CN110134550B publication Critical patent/CN110134550B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据处理方法、装置以及计算机可读存储介质,该方法包括:获取针对全量元数据的修改请求,根据全量元数据的修改请求确定目标数据以及全量元数据中的待修改数据;目标数据是指针对待修改数据进行修改后的数据;根据待修改数据和目标数据生成第一修改映射信息;将第一修改映射信息提交至元数据管理线程,若提交成功,则基于第一修改映射信息修改全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括目标数据。采用本发明实施例,可提高元数据的修改提交效率。

Description

一种数据处理方法、装置以及计算机可读存储介质
技术领域
本发明涉及数据处理的技术领域,尤其涉及一种数据处理方法、装置以及计算机可读存储介质。
背景技术
在分布式系统中,元数据需要被频繁修改,且修改之后的元数据需要被重新提交系统,因此,对元数据的修改与提交的效率提出了较高的要求。
现有技术中,主要是对全量元数据进行修改,进而提交修改之后的全量元数据,达到对全量元数据进行更新的目的。但是,由于每更新一次元数据就会牵扯到对全量元数据的修改与提交,导致元数据的更新效率低。
发明内容
本发明实施例提供了一种数据处理方法、装置以及计算机可读存储介质,提高了元数据更新的效率。
本发明实施例一方面提供了一种数据处理方法,包括:
获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
根据所述待修改数据和所述目标数据生成第一修改映射信息;
将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。
其中,所述根据所述待修改数据和所述目标数据生成将所述待修改数据修改至所述目标数据的第一修改映射信息,包括:
将所述待修改数据修改为过渡修改数据;
将所述过渡修改数据保存至公共内存中;
基于所述公共内存中的过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息。
其中,所述过渡修改数据具有在所述公共内存中的数据地址;所述基于所述公共内存中的过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,包括:
根据所述过渡修改数据对应的数据地址在所述公共内存中获取所述过渡修改数据;
基于所述过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,并删除所述公共内存中的所述过渡修改数据。
其中,所述元数据管理线程包括增量元数据队列;所述增量元数据队列包括多个缓存节点;所述缓存节点用于缓存提交后的所述第一修改映射信息;所述元数据管理线程还包括业务线程以及提交线程;所述业务线程用于接收针对所述全量元数据的修改请求;所述提交线程用于提交所述第一修改映射信息。
其中,所述将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据,包括:
若存在多个所述第一修改映射信息,则根据所述提交线程、每个第一修改映射信息的数据量大小以及增量元数据队列中每个缓存节点对应的节点缓存阈值,合并所述多个第一修改映射信息,生成多个合并修改映射信息;每个合并修改映射信息的数据量不大于所述节点缓存阈值;
按照生成时间的顺序,基于所述提交线程将所述多个合并修改映射信息依次提交至所述增量元数据队列中的缓存节点;
若提交成功,则分别生成针对所述每个合并修改映射信息的提交成功信息,基于所述提交线程将所述合并修改映射信息的提交成功信息发送至所述业务线程;
根据所述业务线程、所述合并修改映射信息的提交成功信息以及所述缓存节点中的所述合并修改映射信息修改所述全量元数据,得到修改后的全量元数据。
其中,若缓存节点完成对所述第一修改映射信息的缓存,则所述缓存节点处于非缓存状态;
所述方法还包括:
当所述增量元数据队列中的所有缓存节点均处于所述非缓存状态时,将根据所述增量元数据队列中的所有缓存节点中的第一修改映射信息修改完成的全量元数据,确定为已落地数据;
基于所述提交线程备份所述已落地数据,若备份成功,则将所述增量元数据队列中的所有缓存节点从所述非缓存状态恢复至可缓存状态;恢复至所述可缓存状态的缓存节点的可缓存数据量等于所述节点缓存阈值。
其中,还包括:
基于所述业务线程获取针对所述已落地数据的修改请求,将所述已落地数据的修改请求对应的提交请求发送至提交线程;所述提交请求是针对所述已落地数据的修改请求生成的修改映射信息的提交请求;
根据所述提交线程以及所述提交请求生成第二修改映射信息,并将所述第二修改映射信息依次提交至所述增量元数据队列中具有所述可缓存状态的的缓存节点;所述缓存节点用于覆盖缓存提交成功的所述第二修改映射信息;
若提交成功,则基于所述提交线程向所述业务线程发送针对所述第二修改映射信息的提交成功信息;
根据所述业务线程、所述第二修改映射信息的提交成功信息以及所述缓存节点中的所述第二修改映射信息修改所述已落地数据。
其中,还包括:
获取重启请求,根据所述重启请求执行重启操作;
重启成功之后,获取所述已落地数据,基于所述缓存节点中的所述第二修改映射信息对所述已落地数据进行修改,得到修改后的已落地数据。
本发明实施例一方面提供了一种数据处理装置,包括:
获取模块,用于获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
生成模块,用于根据所述待修改数据和所述目标数据生成第一修改映射信息;
第一提交模块,用于将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。
其中,所述生成模块,包括:
第一修改单元,用于将所述待修改数据修改为过渡修改数据;
保存单元,用于将所述过渡修改数据保存至公共内存中;
生成单元,用于基于所述公共内存中的过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息。
其中,所述过渡修改数据具有在所述公共内存中的数据地址;所述生成单元,包括:
获取子单元,用于根据所述过渡修改数据对应的数据地址在所述公共内存中获取所述过渡修改数据;
生成子单元,用于基于所述过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,并删除所述公共内存中的所述过渡修改数据。
其中,所述元数据管理线程包括增量元数据队列;所述增量元数据队列包括多个缓存节点;所述缓存节点用于缓存提交后的所述第一修改映射信息;所述元数据管理线程还包括业务线程以及提交线程;所述业务线程用于接收针对所述全量元数据的修改请求;所述提交线程用于提交所述第一修改映射信息。
其中,所述第一提交模块,包括:
合并单元,用于若存在多个所述第一修改映射信息,则根据所述提交线程、每个第一修改映射信息的数据量大小以及增量元数据队列中每个缓存节点对应的节点缓存阈值,合并所述多个第一修改映射信息,生成多个合并修改映射信息;每个合并修改映射信息的数据量不大于所述节点缓存阈值;
提交单元,用于按照生成时间的顺序,基于所述提交线程将所述多个合并修改映射信息依次提交至所述增量元数据队列中的缓存节点;
发送单元,用于若提交成功,则分别生成针对所述每个合并修改映射信息的提交成功信息,基于所述提交线程将所述合并修改映射信息的提交成功信息发送至所述业务线程;
第二修改单元,用于根据所述业务线程、所述合并修改映射信息的提交成功信息以及所述缓存节点中的所述合并修改映射信息修改所述全量元数据,得到修改后的全量元数据。
其中,若缓存节点完成对所述第一修改映射信息的缓存,则所述缓存节点处于非缓存状态;
所述数据处理装置,还包括:
确定模块,用于当所述增量元数据队列中的所有缓存节点均处于所述非缓存状态时,将根据所述增量元数据队列中的所有缓存节点中的第一修改映射信息修改完成的全量元数据,确定为已落地数据;
备份模块,用于基于所述提交线程备份所述已落地数据,若备份成功,则将所述增量元数据队列中的所有缓存节点从所述非缓存状态恢复至可缓存状态;恢复至所述可缓存状态的缓存节点的可缓存数据量等于所述节点缓存阈值。
其中,所述数据处理装置,还包括:
第一发送模块,用于基于所述业务线程获取针对所述已落地数据的修改请求,将所述已落地数据的修改请求对应的提交请求发送至提交线程;所述提交请求是针对所述已落地数据的修改请求生成的修改映射信息的提交请求;
第二提交模块,用于根据所述提交线程以及所述提交请求生成第二修改映射信息,并将所述第二修改映射信息依次提交至所述增量元数据队列中具有所述可缓存状态的的缓存节点;所述缓存节点用于覆盖缓存提交成功的所述第二修改映射信息;
第二发送模块,若提交成功,则基于所述提交线程向所述业务线程发送针对所述第二修改映射信息的提交成功信息;
第一修改模块,用于用于根据所述业务线程、所述第二修改映射信息的提交成功信息以及所述缓存节点中的所述第二修改映射信息修改所述已落地数据。
其中,所述数据处理装置还包括:
重启模块,用于获取重启请求,根据所述重启请求执行重启操作;
第二修改模块,用于重启成功之后,获取所述已落地数据,基于所述缓存节点中的所述第二修改映射信息对所述已落地数据进行修改,得到修改后的已落地数据。
本发明一方面提供了一种数据处理装置,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如本发明实施例中一方面中的方法。
本发明实施例一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。
本发明实施例首先获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;根据所述待修改数据和所述目标数据生成第一修改映射信息;将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。由此可见,本发明实施例提出的方法在对全量元数据进行修改时,无需编辑整个全量元数据,只编辑需要被修改的元数据。修改完成之后,无需提交整个全量元数据,只需提交被修改部分的元数据对应的修改映射信息,提高了元数据的提交效率。并且,只有当所述第一修改映射信息提交成功之后才会修改内存中的全量元数据,避免了在直接修改全量元数据且修改提交失败时对所述全量元数据进行回滚的过程,提高了业务处理的通畅性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据处理的场景示意图;
图2是本发明实施例提供的一种数据处理方法的流程示意图;
图3是本发明实施例提供的另一种数据处理方法的流程示意图;
图4是本发明实施例提供的一种数据缓存的场景示意图;
图5是本发明实施例提供的一种业务处理的场景示意图;
图6是本发明实施例提供的另一种数据处理方法的流程示意图;
图7是本发明实施例提供的一种数据修改的场景示意图;
图8是本发明实施例提供的一种数据处理装置的结构示意图;
图9是本发明实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种数据处理的场景示意图。如图1所示,服务器100中包括线程s3以及公共内存。其中,所述线程s3为元数据管理线程,所述线程s3可以是zk(zookeeper,一个分布式应用程序协调服务)所提供的,所述线程s3包括业务线程s1以及提交线程s2。其中,所述业务线程s1用于接收针对元数据的修改指令,所述提交线程s2用于提交元数据。服务器100可以通过所述线程s1接收客户端发送的针对全量元数据的修改请求,线程s1通过接收到的修改请求,在所述全量元数据中获取需要被修改的数据,可以将需要被修改的数据称之为待修改数据。线程s1将所述待修改数据修改为过渡修改数据,所述过渡修改数据为将所述待修改数据修改为目标数据的中间数据。线程s1将所述过渡修改数据保存至公共内存,所述过渡修改数据具有在所述公共内存中的内存地址。所述线程s1将所述过渡修改数据在所述公共内存中的地址发送给线程s2,并发送针对所述全量元数据的修改请求对应的提交请求到线程s2。线程s2根据所述提交请求,通过所述过渡修改数据在所述公共内存中的内存地址,在所述公共内存中获取所述过渡修改数据。线程s2通过所述过渡修改数据、待修改数据以及目标数据生成第一修改映射信息。例如所述待修改数据是x1,所述目标数据是x2,所述过渡修改数据为x3,则将所述待修改数据x1修改至所述目标数据x2的过程为:x1→x3,x3→x2,上述第一修改映射信息包括将所述待修改数据修改至所述目标数据的修改映射关系,例如上述x1→x3,x3→x2。线程s2将所述第一修改映射信息提交至增量元数据队列中的缓存节点,当所述第一修改映射信息在所述缓存节点中缓存成功,则表明所述第一修改映射信息提交成功。线程s2向线程s1发送针对所述第一修改映射信息的缓存成功信息,所述线程s1当接收到针对所述第一修改映射信息的缓存成功信息时,根据所述增量元数据队列的缓存节点中的第一修改映射信息修改所述全量元数据。
通过发明实施例提供的方法,在全量元数据需要被修改时,提交的只是针对全量元数据中的待修改数据对应的增量数据的提交,而不是对全量元数据的提交,且所述增量数据通常远远小于所述全量元数据,因此,提高了元数据提交的效率。通过业务线程接收针对全量元数据的修改请求,通过提交线程提交修改请求对应的修改映射信息,可以使得业务线程与所述提交线程可以并行工作,且相互不影响,避免了业务阻塞。而只有当提交线程对所述目标数据提交成功之后才会修改业务线程的内存中的全量元数据,否则不修改,避免了对所述全量元数据修改提交失败时,需要对所述全量元数据进行回滚的过程,进一步避免了业务堵塞。
请参见图2,是本发明实施例提供的一种数据处理方法的流程示意图,如图2所示,所述方法可以包括:
步骤S101,获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
具体的,本发明实施例提供的方法可以通过元数据管理系统实现,所述元数据管理系统包括元数据管理线程,所述元数据管理线程包括业务线程以及提交线程。所述元数据管理系统可以包括zk。其中,元数据又称中介数据或者中继数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。所述业务线程用于接收针对元数据的业务请求(比如针对全量元数据的修改请求),所述提交线程用于提交数据(比如提交上述第一修改映射信息或者提交全量元数据)。可以通过所述业务线程获取针对全量元数据的修改请求,根据所述全量元数据的修改请求获取所述全量元数据中的待修改元数据,并获取针对所述待修改数据进行修改后的目标数据。将所述待修改数据修改至所述目标数据还需要过渡修改数据,即通过所述过渡修改数据将所述待修改数据修改至所述目标数据。所述业务线程将所述过渡修改数据保存至公共内存中,以使之后提交线程可以在所述公共内存中获取所述过渡修改数据。
步骤S102,根据所述待修改数据和所述目标数据生成第一修改映射信息;
具体的,提交线程可以通过接收到的业务线程发送的过渡修改数据在所述公共内存中的内存地址,在所述公共内存中获取所述过渡修改数据。根据获取到的所述过渡修改数据、所述待修改数据以及所述目标修改数据生成所述第一修改映射信息。例如所述待修改数据是x1,所述目标数据是x2,所述过渡修改数据为x3,则将所述待修改数据x1修改至所述目标数据x2的过程为:x1→x3,x3→x2,上述第一修改映射信息包括将所述待修改数据修改至所述目标数据的修改映射关系,例如上述x1→x3,x3→x2。
步骤S103,将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据;
具体的,上述提交线程可以将所述第一修改映射信息提交至所述元数据管理线程中的增量元数据队列。所述增量元数据队列用于缓存提交成功的针对元数据的修改映射信息。若所述第一修改映射信息在所述增量元数据队列中提交缓存成功,则基于所述增量元数据队列中的第一修改映射信息修改所述业务线程的内存中的全量元数据,得到修改后的全量元数据。所述修改后的全量元数据包括上述待修改数据对应的目标数据。上述增量元数据队列中的数据也可以称之为log增量数据,通过增加log增量数据,在对全量元数据进行修改时,可以只提交所述log增量数据,而不用提交所述全量元数据,提高了元数据提交的效率。且当所述log增量数据在缓存节点中缓存成功时,才通过提交成功的log增量数据修改内存中的全量元数据,避免了直接修改全量元数据并提交全量元数据提交失败时对所述全量元数据回滚的操作。
可选的,可以通过多线程机制处理业务问题,即上述业务线程可以有多个,可以将业务请求进行分类,比如将接收到的修改请求分类,可以按照修改请求对应的数据位置进行分类,也可以按照修改请求对应是增加或者删除的类型进行分类。每一个业务线程可以接收专门一类的业务请求,不同类型的业务请求由不同业务线程处理,可以提高业务处理的效率,避免堵塞。同样,也可以有多个提交线程,不同的提交线程可以提交不同类别的数据。由于上述业务线程与提交线程是异步进行的,因此,业务请求的接收处理与元数据的提交互不影响,提高了业务处理的畅通性。
本发明实施例首先获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;根据所述待修改数据和所述目标数据生成第一修改映射信息;将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。由此可见,本发明实施例提出的方法在对全量元数据进行修改时,无需编辑整个全量元数据,只编辑需要被修改的元数据。修改完成之后,无需提交整个全量元数据,只需提交被修改部分的元数据对应的修改映射信息,提高了元数据的提交效率。并且,只有当所述第一修改映射信息提交成功之后才会修改内存中的全量元数据,避免了在直接修改全量元数据且修改提交失败时对所述全量元数据进行回滚的过程,提高了业务处理的通畅性。
请参见图3,是本发明实施例提供的另一种数据处理方法的流程示意图,如图3所示,所述方法可以包括:
步骤S201,获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
其中,所述步骤S201的具体实现过程请参见图2对应的实施例中对所述步骤S101的描述,这里不再进行赘述。
步骤S202,将所述待修改数据修改为过渡修改数据,将所述过渡修改数据保存至公共内存中;
具体的,可以通过上述业务线程将所述待修改数据修改为所述过渡修改数据,并将所述过渡修改数据保存在所述公共内存中。所述过渡修改数据具有在所述公共内存中的内存地址,所述内存地址也可以称之为数据地址。所述业务线程可以将所述过渡修改数据在所述公共内存中的数据地址发送给提交线程。
步骤S203,根据所述过渡修改数据对应的数据地址在所述公共内存中获取所述过渡修改数据,基于所述过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,并删除所述公共内存中的所述过渡修改数据;
具体的,可以通过上述提交线程根据获取到的业务线程发送的所述过渡修改数据的数据地址在所述公共内存中获取所述过渡修改数据。并基于所述过渡修改数据、所述待修改数据以及所述待修改数据对应的目标数据,生成所述第一修改映射信息。所述第一修改映射信息包括将所述待修改数据通过所述过渡修改数据修改至所述目标数据的修改映射关系。可以在所述提交线程在所述公共内存中获取到所述过渡修改数据,并将所述过渡修改数据保存在系统内存中时,删除所述公共内存中的过渡修改数据。也可以在成功生成所述第一修改映射信息时,删除所述公共内存中过渡修改数据。以在对所述过渡修改数据使用完成时,释放所述公共内存的存储空间。
步骤S204,若存在多个所述第一修改映射信息,则根据所述提交线程、每个第一修改映射信息的数据量大小以及增量元数据队列中每个缓存节点对应的节点缓存阈值,合并所述多个第一修改映射信息,生成多个合并修改映射信息;每个合并修改映射信息的数据量不大于所述节点缓存阈值;
具体的,所述增量元数据队列中包括多个缓存节点,所述缓存节点用于缓存提交后的修改映射信息。若存在多个上述第一修改映射信息时,通过所述提交线程,根据每个第一修改映射信息的数据量的大小以及增量元数据队列中每个缓存节点(znode)对应的节点缓存阈值,合并所述多个第一修改映射信息,并生成多个合并修改映射信息。每个合并修改映射信息的数据量不大于所述节点缓存阈值。由于一个第一修改映射信息往往数据量较小,因此,通过将多个第一修改映射信息进行合并缓存在所述缓存节点中,可以节约缓存节点资源。例如,当每个缓存节点的节点缓存阈值为256k时,当存在三个第一修改映射信息的数据量大小依次为1k、100k、150k时,可以将该三个第一修改映射信息进行合并,合并之后得到的合并修改映射信息的数据量为251k,且251k小于256k,即在一个缓存节点中能够存储得下所述合并修改映射信息。可选的,在根据每个第一修改映射信息的数据量以及节点缓存阈值进行第一修改映射信息的合并时,也可以加入合并的时间机制。例如,当接收到两个第一修改映射信息的数据量大小为1k、2k,合并该两个第一修改映射信息生成的合并修改映射信息的数据量3k,3k远小于一个缓存节点的节点缓存阈值256k。但是,当所述合并修改映射信息的数据量较小,但是在之后又长时间未接收到其他的第一修改映射信息,则可以设定时间阈值,比如30秒钟,当在30秒内未接收到其他第一修改映射信息,则依然向所述缓存节点提交此时合并得到合并修改映射信息。即可以在合并修改映射信息的数据量达到所述节点缓存阈值时,向所述缓存节点提交所述合并修改映射信息,也可以在达到时间阈值时,向所述缓存节点提交所述合并修改映射信息。所述合并修改映射信息的具体合并提交机制根据实际应用场景决定,此处不做限制。
可选的,当上述第一修改映射信息的数据量大于所述节点缓存阈值时,可以将数据量大于所述节点缓存阈值的第一修改映射信息进行分块,即分成几部分分别保存在多个缓存节点中。通过控制每个缓存节点的可缓存的最大数据量,可以提高元数据提交的效率,保证元数据提交的高效性。
步骤S205,按照生成时间的顺序,基于所述提交线程将所述多个合并修改映射信息依次提交至所述增量元数据队列中的缓存节点;
具体的,按照上述多个合并修改映射信息的生成时间的先后,通过上述提交线程将所述多个合并修改映射信息依次提交至所述增量元数据队列中的缓存节点。即将上述多个合并修改映射信息依次缓存在所述增量数据队列中的缓存节点。可以设置每个缓存节点的索引,进而可以通过每个缓存节点的索引管理所述缓存节点。比如通过start index(开始节点索引)以及end index(末尾节点索引)来管理所述缓存节点。所述end index用于表示下一次可以被缓存的缓存节点。由于上述缓存节点有多个,例如所述多个缓存节点的索引依次为0,1,2,3,4,5。当第一次对所述全量元数据进行修改时,只用到前面两个缓存节点,例如只用到索引为0以及索引为1的缓存节点,则此时上述start index的数值为0,endindex的数值为2。则当第二次需要提交缓存所述第一修改映射信息时,所述第一修改映射信息从end index对应的缓存节点(即索引为2的缓存节点)开始缓存。
步骤S206,若提交成功,则分别生成针对所述每个合并修改映射信息的提交成功信息,基于所述提交线程将所述合并修改映射信息的提交成功信息发送至所述业务线程;
具体的,若上述合并修改映射信息在所述增量元数据队列的缓存节点中缓存成功,则表明提交成功,则分别生成针对所述每个合并修改映射信息的提交成功信息,例如ACK字符(确认字符)。通过所述提交线程线程将所述合并修改指令对应的提价成功信息发送给所述业务线程。
步骤S207,根据所述业务线程、所述合并修改映射信息的提交成功信息以及所述缓存节点中的所述合并修改映射信息修改所述全量元数据,得到修改后的全量元数据;
具体的,当所述业务线程接收到所述提交线程发送的针对所述合并修改映射信息的提交成功信息,则根据所述增量元数据队列的缓存节点中的合并修改映射信息修改内存中的全量元数据,得到修改后的全量元数据。通过上述修改过程,可以保证修改后的全量元数据中所述待修改数据的位置处对应的数据与所述缓存节点中所述待修改数据对应的目标数据一致。
本发明实施例首先获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;根据所述待修改数据和所述目标数据生成第一修改映射信息;将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。由此可见,本发明实施例提出的方法在对全量元数据进行修改时,无需编辑整个全量元数据,只编辑需要被修改的元数据。修改完成之后,无需提交整个全量元数据,只需提交被修改部分的元数据对应的修改映射信息,提高了元数据的提交效率。并且,只有当所述第一修改映射信息提交成功之后才会修改内存中的全量元数据,避免了在直接修改全量元数据且修改提交失败时对所述全量元数据进行回滚的过程,提高了业务处理的通畅性。
请参见图4,是本发明实施例提供的一种数据缓存的场景示意图。可以通过管理指针a3管理上述增量元数据队列中的缓存节点,所述管理指针可以通过上述start index以及end index管理使用的缓存节点。如图4所示,所述增量元数据队列a1中的缓存节点包括索引为0的缓存节点、索引为1的缓存节点、索引为2的缓存节点、索引为3的缓存节点、索引为4的缓存节点、索引为5的缓存节点以及索引为6的缓存节点。当接收到上述第一修改映射信息,比如第一修改映射信息y1,所述第一修改映射信息y1的数据量大于256k,且上述endindex的数值为5时,所述管理指针首先指导上述提交线程将所述第一修改映射信息y1保存在内存buffer(即内存缓冲器a2)中。可以将所述第一修改映射信息y1分块缓存在所述内存buffer中,分块的数据量大小为上述节点缓冲阈值。比如256k,即分块保存在所述内存buffer中的每一部分数据的数据量不大于256k。将按照分块保存在所述缓冲器a2中的第一修改映射信息y1提交至增量元数据队列a1的多个缓存节点中,即按照分块的数据量大小将上述第一修改映射信息y1从索引为5的缓存节点开始,依次缓存在所述增量元数据队列中的缓存节点中。当所述第一修改映射信息y1的数据量小于256k时,可以直接将所述第一修改映射信息y1缓存至索引为5的缓存节点。
可选的,当存在多个第一修改映射信息时,可以按照节点缓存阈值为256k的数据量大小,对所述多个第一修改映射信息进行合并,将生成的多个合并修改映射信息保存在缓冲器a2中,再通过缓冲器a2将所述多个合并修改映射信息从索引为5的缓存节点开始,依次缓存在所述增量元数据队列中的缓存节点中。合并的具体过程请参见上述步骤S204,这里不再进行赘述。
请参见图5,是本发明实施例提供的一种业务处理的场景示意图。业务线程可以接收到客户端发送的针对全量元数据的修改请求,业务线程可以发送针对全量元数据的修改请求对应的提交请求到提交线程。所述提交线程可以根据接收到的提交请求生成第一修改映射信息,并将所述第一修改映射信息提交至增量元数据队列的缓存节点中。若所述第一修改映射信息在所述缓存节点中提交成功,则所述提交线程向所述业务线程返回针对所述第一修改映射信息的提交成功信息(比如ack字符(确认字符))。所述业务线程接收到所述提交成功信息时,根据所述缓存节点中的第一修改映射信息修改内存中的全量元数据。所述业务线程将根据所述第一修改映射信息修改完成的全量元数据返回至客户端,以使用户可以在所述客户端看到修改完成的全量元数据对应的终端界面。
请参见图6,是本发明实施例提供的另一种数据处理方法的流程示意图,如图6所示,所述方法可以包括:
步骤S301,当所述增量元数据队列中的所有缓存节点均处于所述非缓存状态时,将根据所述增量元数据队列中的所有缓存节点中的第一修改映射信息修改完成的全量元数据,确定为已落地数据;
具体的,当上述增量元数据队列中的所有缓存节点均完成对所述第一修改映射信息的缓存时,即每个缓存节点都缓存有所述第一修改映射信息时,将根据所述增量元数据队列中的所有缓存节点中的第一修改映射信息修改完成的全量元数据,确定为所述已落地数据。所述已落地数据完成了一轮所述增量元数据队列的所有缓存节点中的第一修改映射信息的修改。当所述增量元数据队列中所有缓存节点均完成对所述第一修改映射信息的缓存时,所述缓存节点处于非缓存状态,即所述缓存节点暂时不再缓存所述第一修改映射信息。
步骤S302,基于所述提交线程备份所述已落地数据,若备份成功,则将所述增量元数据队列中的所有缓存节点从所述非缓存状态恢复至可缓存状态;恢复至所述可缓存状态的缓存节点的可缓存数据量等于所述节点缓存阈值;
具体的,通过所述提交线程备份所述已落地数据,即将所述已落地数据缓存在系统内存中。若备份成功,则将所述增量元数据队列中所有缓存节点从所述非缓存状态恢复至可缓存状态。恢复至所述可缓存状态的缓存节点的可缓存数据量等于上述节点缓存阈值。同时,可以将上述均完成缓存的缓存节点中的第一修改映射信息进行备份,比如备份为日志,便于后续在处理所述全量元数据时有所依据。由于所述提交线程提交所述已落地数据与业务线程接收业务请求(例如修改请求)为异步的,因此不会阻塞业务的处理。
步骤S303,基于所述业务线程获取针对所述已落地数据的修改请求,将所述已落地数据的修改请求对应的提交请求发送至提交线程;所述提交请求是针对所述已落地数据的修改请求生成的修改映射信息的提交请求;
具体的,通过上述业务线程获取所述已落地数据的修改请求,所述业务线程可以将所述已落地数据的修改请求对应的提交请求发送至提交线程。所述提交请求是针对所述已落地数据的修改请求生成的修改映射信息的提交请求,以使所述提交线程可以根据所述提交请求,生成修改映射信息,并提交生成的修改映射信息。
步骤S304,根据所述提交线程以及所述提交请求生成第二修改映射信息,并将所述第二修改映射信息依次提交至所述增量元数据队列中具有所述可缓存状态的的缓存节点;所述缓存节点用于覆盖缓存提交成功的所述第二修改映射信息;
具体的,通过所述提交线程,根据所述提交请求生成第二修改映射信息,即所述提交线程可以根据所述提交请求对应的已落地数据中的待修改数据、所述已落地数据中的待修改数据的过渡修改数据以及已落地数据中的待修改数据的目标数据,生成所述第二修改映射信息。所述提交线程可以将所述第二修改映射信息依次提交至所述增量元数据队列中具有可缓存状态的缓存节点中。所述缓存节点在缓存所述第二修改映射信息时,可以覆盖所述缓存节点中的第一修改映射信息进行缓存,也可以清空所述缓存节点中的第一修改映射信息进行缓存。
步骤S305,若提交成功,则基于所述提交线程向所述业务线程发送针对所述第二修改映射信息的提交成功信息;
具体的,若上述第二修改映射信息在所述缓存节点中缓存成功,则表明提交成功,则通过所述提交线程向所述业务线程发送针对所述第二修改映射信息的提交成功信息。
步骤S306,根据所述业务线程、所述第二修改映射信息的提交成功信息以及所述缓存节点中的所述第二修改映射信息修改所述已落地数据;
具体的,当所述业务线程接收到针对所述第二修改映射信息的提交成功信息时,根据所述缓存节点中的第二修改映射信息修改所述已落地数据。
步骤S307,获取重启请求,根据所述重启请求执行重启操作;
具体的,当接收到重启请求时,根据所述重启请求重启元数据管理系统。
步骤S308,重启成功之后,获取所述已落地数据,基于所述缓存节点中的所述第二修改映射信息对所述已落地数据进行修改,得到修改后的已落地数据;
具体的,重启成功之后,获取上述已经备份的已落地数据,根据所述缓存节点中缓存的第二修改映射信息修改所述已落地数据,得到修改后的已落地数据。即通过重启,可以在元数据管理系统中恢复重启前所述已落地数据的状态,即通过所述缓存节点中的第二修改映射信息修改后的已落地数据的状态。
请参见图7,是本发明实施例提供的一种数据修改的场景示意图。如图7所示,队列a1为增量元数据队列,队列a1中有7个缓存节点,7个缓存节点的索引对应为0到6,根据队列a1中缓存节点的第一修改映射信息修改所述全量元数据b1,一个缓存节点对所述第一修改映射信息缓存完成就对所述全量元数据b1修改一次,当根据索引为6的缓存节点(即第7个也就是最后一个缓存节点)中的第一修改映射信息对所述全量元数据修改完成时,得到修改后的全量元数据b1’,将所述全量元数据b1’称之为已落地数据b2,并备份所述已落地数据b2。可以理解为,所述已落地数据b2为经过增量元数据队列中的第一修改映射信息修改完一轮的数据,所述已落地数据b2可以理解为修改更新之后的全量元数据。队列a2为7个缓存节点均完成对上述第一修改映射信息的缓存的队列,接下来,当接收到对所述更新之后的全量元数据(即已落地数据b2)的修改请求时,根据针对所述已落地数据b2的修改请求生成第二修改映射信息。所述第二修改映射信息的生成原理和上述第一修改映射信息的生成原理一致。将所述第二修改映射信息重新从上述队列a2的第一个缓存节点(索引为0的缓存节点)开始,依次缓存在所述队列a2中,所述缓存节点在缓存所述第二修改映射信息时覆盖所述缓存节点中的第一修改映射信息进行缓存。根据所述队列a2中的第二修改映射信息修改所述已落地数据b2,得到修改后的已落地数据b2’。上述缓存过程为循环缓存过程,即每当上述增量元数据队列中的所有缓存节点对修改映射信息缓存完成,就备份一次根据所述所有缓存节点中的修改映射信息进行修改完成的全量元数据(即修改更新之后的全量元数据)。当之后再生成其他修改映射信息时,将生成的其他修改映射信息依次覆盖缓存至缓存节点中。根据缓存节点中缓存的所述其他修改映射信息修改备份的全量元数据。
本发明实施例首先获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;根据所述待修改数据和所述目标数据生成第一修改映射信息;将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。由此可见,本发明实施例提出的方法在对全量元数据进行修改时,无需编辑整个全量元数据,只编辑需要被修改的元数据。修改完成之后,无需提交整个全量元数据,只需提交被修改部分的元数据对应的修改映射信息,提高了元数据的提交效率。并且,只有当所述第一修改映射信息提交成功之后才会修改内存中的全量元数据,避免了在直接修改全量元数据且修改提交失败时对所述全量元数据进行回滚的过程,提高了业务处理的通畅性。
请参见图8,是本发明实施例提供的一种数据处理装置的结构示意图。如图8所示,该数据处理装置1可以包括:获取模块101、生成模块102和第一提交模块103;
获取模块101,用于获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
生成模块102,用于根据所述待修改数据和所述目标数据生成第一修改映射信息;
第一提交模块103,用于将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。
其中,所述获取模块101、生成模块102和第一提交模块103的具体功能实现方式请参见图2对应的实施例中的步骤S101-步骤S103,这里不再进行赘述。
其中,所述生成模块102,包括第一修改单元1021、保存单元1022和生成单元1023:
第一修改单元1021,用于将所述待修改数据修改为过渡修改数据;
保存单元1022,用于将所述过渡修改数据保存至公共内存中;
生成单元1023,用于基于所述公共内存中的过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息。
其中,所述第一修改单元1021、保存单元1022的具体功能实现方式请参见图3对应的实施例中的步骤S202,所述生成单元1023的具体功能实现方式请参见图3对应的实施例中的步骤S203,这里不再进行赘述。
其中,所述过渡修改数据具有在所述公共内存中的数据地址;所述生成单元1023,包括获取子单元10231和生成子单元10232:
获取子单元10231,用于根据所述过渡修改数据对应的数据地址在所述公共内存中获取所述过渡修改数据;
生成子单元10232,用于基于所述过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,并删除所述公共内存中的所述过渡修改数据。
其中,所述获取子单元10231和生成子单元10232的具体功能实现方式请参见图3对应的实施例中的步骤S203,这里不再进行赘述。
其中,所述元数据管理线程包括增量元数据队列;所述增量元数据队列包括多个缓存节点;所述缓存节点用于缓存提交后的所述第一修改映射信息;所述元数据管理线程还包括业务线程以及提交线程;所述业务线程用于接收针对所述全量元数据的修改请求;所述提交线程用于提交所述第一修改映射信息。
其中,所述第一提交模块103,包括合并单元1031、提交单元1032、发送单元1033和第二修改单元1034:
合并单元1031,用于若存在多个所述第一修改映射信息,则根据所述提交线程、每个第一修改映射信息的数据量大小以及增量元数据队列中每个缓存节点对应的节点缓存阈值,合并所述多个第一修改映射信息,生成多个合并修改映射信息;每个合并修改映射信息的数据量不大于所述节点缓存阈值;
提交单元1032,用于按照生成时间的顺序,基于所述提交线程将所述多个合并修改映射信息依次提交至所述增量元数据队列中的缓存节点;
发送单元1033,用于若提交成功,则分别生成针对所述每个合并修改映射信息的提交成功信息,基于所述提交线程将所述合并修改映射信息的提交成功信息发送至所述业务线程;
第二修改单元1034,用于根据所述业务线程、所述合并修改映射信息的提交成功信息以及所述缓存节点中的所述合并修改映射信息修改所述全量元数据,得到修改后的全量元数据。
其中,所述合并单元1031、提交单元1032、发送单元1033和第二修改单元1034的具体功能实现方式请参见图3对应的实施例中的步骤S204-步骤S207,这里不再进行赘述。
其中,若缓存节点完成对所述第一修改映射信息的缓存,则所述缓存节点处于非缓存状态;
所述数据处理装置1,还包括确定模块104和备份模块105:
确定模块104,用于当所述增量元数据队列中的所有缓存节点均处于所述非缓存状态时,将根据所述增量元数据队列中的所有缓存节点中的第一修改映射信息修改完成的全量元数据,确定为已落地数据;
备份模块105,用于基于所述提交线程备份所述已落地数据,若备份成功,则将所述增量元数据队列中的所有缓存节点从所述非缓存状态恢复至可缓存状态;恢复至所述可缓存状态的缓存节点的可缓存数据量等于所述节点缓存阈值。
其中,所述确定模块104和备份模块105的具体功能实现方式请参见图6对应的实施例中的步骤S301-步骤S302,这里不再进行赘述。
其中,所述数据处理装置1,还包括第一发送模块106、第二提交模块107、第二发送模块108和第一修改模块109:
第一发送模块106,用于基于所述业务线程获取针对所述已落地数据的修改请求,将所述已落地数据的修改请求对应的提交请求发送至提交线程;所述提交请求是针对所述已落地数据的修改请求生成的修改映射信息的提交请求;
第二提交模块107,用于根据所述提交线程以及所述提交请求生成第二修改映射信息,并将所述第二修改映射信息依次提交至所述增量元数据队列中具有所述可缓存状态的的缓存节点;所述缓存节点用于覆盖缓存提交成功的所述第二修改映射信息;
第二发送模块108,若提交成功,则基于所述提交线程向所述业务线程发送针对所述第二修改映射信息的提交成功信息;
第一修改模块109,用于用于根据所述业务线程、所述第二修改映射信息的提交成功信息以及所述缓存节点中的所述第二修改映射信息修改所述已落地数据。
其中,所述第一发送模块106、第二提交模块107、第二发送模块108和第一修改模块109的具体功能实现方式请参见图6对应的实施例中的步骤S303-步骤S306,这里不再进行赘述。
其中,所述数据处理装置1还包括重启模块110和第二修改模块111:
重启模块110,用于获取重启请求,根据所述重启请求执行重启操作;
第二修改模块111,用于重启成功之后,获取所述已落地数据,基于所述缓存节点中的所述第二修改映射信息对所述已落地数据进行修改,得到修改后的已落地数据。
其中,所述重启模块110和第二修改模块111的具体功能实现方式请参见图6对应的实施例中的步骤S307-步骤S308,这里不再进行赘述。
本发明实施例首先获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;根据所述待修改数据和所述目标数据生成第一修改映射信息;将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。由此可见,本发明实施例提出的方法在对全量元数据进行修改时,无需编辑整个全量元数据,只编辑需要被修改的元数据。修改完成之后,无需提交整个全量元数据,只需提交被修改部分的元数据对应的修改映射信息,提高了元数据的提交效率。并且,只有当所述第一修改映射信息提交成功之后才会修改内存中的全量元数据,避免了在直接修改全量元数据且修改提交失败时对所述全量元数据进行回滚的过程,提高了业务处理的通畅性。
请参见图9,是本发明实施例提供的另一种数据处理装置的结构示意图。如图9所示,所述数据处理装置1000可以包括:处理器1001,网络接口1004和存储器1005,此外,所述数据处理装置1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的数据处理装置1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
根据所述待修改数据和所述目标数据生成第一修改映射信息;
将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。
应当理解,本发明实施例中所描述的数据处理装置1000可执行前文图2、图3和图6中任一个所对应实施例中对所述数据处理方法的描述,也可执行前文图8所对应实施例中对所述数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本发明实施例还提供了一种计算机可读存储介质,且所述计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图2、图3和图6中任一个所对应实施例中对所述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖范围。

Claims (11)

1.一种数据处理方法,其特征在于,包括:
获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
根据所述待修改数据和所述目标数据生成第一修改映射信息;
将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待修改数据和所述目标数据生成将所述待修改数据修改至所述目标数据的第一修改映射信息,包括:
将所述待修改数据修改为过渡修改数据;
将所述过渡修改数据保存至公共内存中;
基于所述公共内存中的过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息。
3.根据权利要求2所述的方法,其特征在于,所述过渡修改数据具有在所述公共内存中的数据地址;所述基于所述公共内存中的过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,包括:
根据所述过渡修改数据对应的数据地址在所述公共内存中获取所述过渡修改数据;
基于所述过渡修改数据、所述待修改数据以及所述目标数据生成所述第一修改映射信息,并删除所述公共内存中的所述过渡修改数据。
4.根据权利要求1所述的方法,其特征在于,所述元数据管理线程包括增量元数据队列;所述增量元数据队列包括多个缓存节点;所述缓存节点用于缓存提交后的所述第一修改映射信息;所述元数据管理线程还包括业务线程以及提交线程;所述业务线程用于接收针对所述全量元数据的修改请求;所述提交线程用于提交所述第一修改映射信息。
5.根据权利要求4所述的方法,其特征在于,所述将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据,包括:
若存在多个所述第一修改映射信息,则根据所述提交线程、每个第一修改映射信息的数据量大小以及增量元数据队列中每个缓存节点对应的节点缓存阈值,合并所述多个第一修改映射信息,生成多个合并修改映射信息;每个合并修改映射信息的数据量不大于所述节点缓存阈值;
按照生成时间的顺序,基于所述提交线程将所述多个合并修改映射信息依次提交至所述增量元数据队列中的缓存节点;
若提交成功,则分别生成针对所述每个合并修改映射信息的提交成功信息,基于所述提交线程将所述合并修改映射信息的提交成功信息发送至所述业务线程;
根据所述业务线程、所述合并修改映射信息的提交成功信息以及所述缓存节点中的所述合并修改映射信息修改所述全量元数据,得到修改后的全量元数据。
6.根据权利要求4所述的方法,其特征在于,若缓存节点完成对所述第一修改映射信息的缓存,则所述缓存节点处于非缓存状态;
所述方法还包括:
当所述增量元数据队列中的所有缓存节点均处于所述非缓存状态时,将根据所述增量元数据队列中的所有缓存节点中的第一修改映射信息修改完成的全量元数据,确定为已落地数据;
基于所述提交线程备份所述已落地数据,若备份成功,则将所述增量元数据队列中的所有缓存节点从所述非缓存状态恢复至可缓存状态;恢复至所述可缓存状态的缓存节点的可缓存数据量等于所述节点缓存阈值。
7.根据权利要求6所述的方法,其特征在于,还包括:
基于所述业务线程获取针对所述已落地数据的修改请求,将所述已落地数据的修改请求对应的提交请求发送至提交线程;所述提交请求是针对所述已落地数据的修改请求生成的修改映射信息的提交请求;
根据所述提交线程以及所述提交请求生成第二修改映射信息,并将所述第二修改映射信息依次提交至所述增量元数据队列中具有所述可缓存状态的的缓存节点;所述缓存节点用于覆盖缓存提交成功的所述第二修改映射信息;
若提交成功,则基于所述提交线程向所述业务线程发送针对所述第二修改映射信息的提交成功信息;
根据所述业务线程、所述第二修改映射信息的提交成功信息以及所述缓存节点中的所述第二修改映射信息修改所述已落地数据。
8.根据权利要求7所述的方法,其特征在于,还包括:
获取重启请求,根据所述重启请求执行重启操作;
重启成功之后,获取所述已落地数据,基于所述缓存节点中的所述第二修改映射信息对所述已落地数据进行修改,得到修改后的已落地数据。
9.一种数据处理装置,其特征在于,包括:
获取模块,用于获取针对全量元数据的修改请求,根据所述全量元数据的修改请求确定目标数据以及所述全量元数据中的待修改数据;所述目标数据是指针对所述待修改数据进行修改后的数据;
生成模块,用于根据所述待修改数据和所述目标数据生成第一修改映射信息;
第一提交模块,用于将所述第一修改映射信息提交至元数据管理线程,若提交成功,则基于所述第一修改映射信息修改所述全量元数据,得到修改后的全量元数据;所述修改后的全量元数据包括所述目标数据。
10.一种数据处理装置,其特征在于,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-8任一项所述的方法。
CN201910402670.9A 2019-05-15 2019-05-15 一种数据处理方法、装置以及计算机可读存储介质 Active CN110134550B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910402670.9A CN110134550B (zh) 2019-05-15 2019-05-15 一种数据处理方法、装置以及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910402670.9A CN110134550B (zh) 2019-05-15 2019-05-15 一种数据处理方法、装置以及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110134550A true CN110134550A (zh) 2019-08-16
CN110134550B CN110134550B (zh) 2024-06-18

Family

ID=67574199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910402670.9A Active CN110134550B (zh) 2019-05-15 2019-05-15 一种数据处理方法、装置以及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110134550B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659097A (zh) * 2019-09-23 2020-01-07 深圳市伊欧乐科技有限公司 语种文件处理方法、装置、设备及存储介质
CN112379847A (zh) * 2020-12-04 2021-02-19 北京艺源酷科技有限公司 一种数据存储结构及上传存储方法
CN112422404A (zh) * 2020-10-19 2021-02-26 上海哔哩哔哩科技有限公司 消息处理方法及系统
CN113821519A (zh) * 2020-11-26 2021-12-21 北京沃东天骏信息技术有限公司 一种数据处理方法以及领域驱动设计架构
CN116069788A (zh) * 2023-03-24 2023-05-05 杭州趣链科技有限公司 数据处理方法、数据库系统、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101078999A (zh) * 2006-05-26 2007-11-28 任永坚 一种实现数据备份和恢复的方法及系统
CN102609337A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种内存数据库快速数据恢复方法
CN108427728A (zh) * 2018-02-13 2018-08-21 百度在线网络技术(北京)有限公司 元数据的管理方法、设备及计算机可读介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101078999A (zh) * 2006-05-26 2007-11-28 任永坚 一种实现数据备份和恢复的方法及系统
CN102609337A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种内存数据库快速数据恢复方法
CN108427728A (zh) * 2018-02-13 2018-08-21 百度在线网络技术(北京)有限公司 元数据的管理方法、设备及计算机可读介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659097A (zh) * 2019-09-23 2020-01-07 深圳市伊欧乐科技有限公司 语种文件处理方法、装置、设备及存储介质
CN110659097B (zh) * 2019-09-23 2023-10-24 深圳市伊欧乐科技有限公司 语种文件处理方法、装置、设备及存储介质
CN112422404A (zh) * 2020-10-19 2021-02-26 上海哔哩哔哩科技有限公司 消息处理方法及系统
CN112422404B (zh) * 2020-10-19 2022-08-19 上海哔哩哔哩科技有限公司 消息处理方法及系统
CN113821519A (zh) * 2020-11-26 2021-12-21 北京沃东天骏信息技术有限公司 一种数据处理方法以及领域驱动设计架构
CN112379847A (zh) * 2020-12-04 2021-02-19 北京艺源酷科技有限公司 一种数据存储结构及上传存储方法
CN116069788A (zh) * 2023-03-24 2023-05-05 杭州趣链科技有限公司 数据处理方法、数据库系统、计算机设备和存储介质
CN116069788B (zh) * 2023-03-24 2023-06-20 杭州趣链科技有限公司 数据处理方法、数据库系统、计算机设备和存储介质

Also Published As

Publication number Publication date
CN110134550B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN110134550A (zh) 一种数据处理方法、装置以及计算机可读存储介质
CN103312624B (zh) 一种消息队列服务系统和方法
CN106294772B (zh) 分布式内存列式数据库的缓存管理方法
EP2874077B1 (en) Stateless database cache
CN107025289B (zh) 一种数据处理的方法及相关设备
CN109391646A (zh) 消息中间件消息获取方法、装置和系统
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
CN105701156A (zh) 一种分布式文件系统管理方法及装置
CN106202485A (zh) 数据操作方法和系统
CN110032543A (zh) 一种存储文件系统的管理方法
EP3842955A2 (en) File directory traversal method, apparatus, device, and medium
CN106777085A (zh) 一种数据处理方法、装置及数据查询系统
US20220318193A1 (en) Executing a conditional command on an object stored in a storage system
CN113760509A (zh) 一种超时管理方法、装置及电子设备
CN109739684A (zh) 基于向量时钟的分布式键值数据库的副本修复方法与装置
US8229995B2 (en) Data transfer processing apparatus, data transfer processing method, and computer product
CN102959529A (zh) 用于缓存的网络的广播协议
CN109656877A (zh) 一种用户文件配额的方法、装置及分布式文件系统
CN103077099A (zh) 一种块级快照系统及基于该系统的用户读写方法
CN109144551A (zh) 一种多层级组网方式下设备固件更新方法及系统
CN109063210A (zh) 存储系统的资源对象查询方法、装置、设备及存储介质
CN103714059B (zh) 一种更新数据的方法及装置
CN109002400A (zh) 一种内容感知型计算机缓存管理系统及方法
CN103838682B (zh) 一种文件目录的读取方法和设备
CN109614385A (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