一种元数据访问方法、装置和存储介质转让专利

申请号 : CN202211418015.0

文献号 : CN115470008B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王淏舟杨峻峰冯雷

申请人 : 杭州拓数派科技发展有限公司

摘要 :

本申请涉及一种元数据访问方法、装置和存储介质,该方法包括:将目标元数据的缓存数据加载至第一内存中;所述目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;响应于主节点的元数据访问请求,将所述第一内存中的所述目标元数据的缓存数据加载至所述主节点对应的从节点的第二内存中;所述从节点读取所述第二内存,以访问所述目标元数据。通过本申请减小了元数据服务的访问压力,解决了现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题。

权利要求 :

1.一种元数据访问方法,其特征在于,所述方法包括:

数据抽取器将目标元数据从元数据服务中抽取出来缓存至云磁盘,加载器从云磁盘中将目标元数据的缓存数据加载至加载器的第一内存中;所述目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;

响应于主节点的元数据访问请求,将所述第一内存中的所述目标元数据的缓存数据加载至所述主节点对应的从节点的第二内存中;所述从节点读取所述第二内存,以访问所述目标元数据。

2.根据权利要求1所述的元数据访问方法,其特征在于,所述将目标元数据的缓存数据加载至第一内存中之前包括:获取所述元数据服务中的目标元数据;

根据获取到的所述目标元数据,生成所述目标元数据的缓存数据。

3.根据权利要求2所述的元数据访问方法,其特征在于,所述根据获取到的所述目标元数据,生成所述目标元数据的缓存数据包括:根据所述目标元数据的数据类型对所述目标元数据进行分类,获取类型信息;

对所述目标元数据进行特征提取;

对提取到的特征和分类后的目标元数据进行编码,得到编码数据;

根据所述编码数据和所述类型信息,生成所述缓存数据。

4.根据权利要求2所述的元数据访问方法,其特征在于,所述根据获取到的所述目标元数据,生成所述目标元数据的缓存数据包括:获取所述目标元数据的版本信息,根据所述版本信息生成所述缓存数据。

5.根据权利要求1所述的元数据访问方法,其特征在于,所述方法还包括:响应于元数据服务发送的数据更新指令,获取所述从节点的任务的执行状态;所述数据更新指令用于指示更新所述第一内存中存储的所述目标元数据的缓存数据;

根据所述执行状态,从所述第一内存中选择与所述执行状态对应的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中。

6.根据权利要求5所述的元数据访问方法,其特征在于,所述根据所述执行状态,从所述第一内存中选择与所述执行状态对应的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中包括:当所述执行状态为所述从节点执行任务时,从所述第一内存中选择更新前的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中;

当所述执行状态为所述从节点空闲时,从所述第一内存中选择更新后的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中。

7.根据权利要求1所述的元数据访问方法,其特征在于,所述方法还包括:响应于从节点的接入请求,将所述第一内存的地址连接到待接入的从节点中。

8.根据权利要求1至权利要求7中任一项所述的元数据访问方法,其特征在于,所述从节点为无状态计算节点。

9.一种元数据访问装置,其特征在于,所述装置包括:

第一加载模块,用于数据抽取器将目标元数据从元数据服务中抽取出来缓存至云磁盘,加载器从云磁盘中将目标元数据的缓存数据加载至加载器的第一内存中;所述目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;

访问模块,用于响应于主节点的元数据访问请求,将所述第一内存中的所述目标元数据的缓存数据加载至所述主节点对应的从节点的第二内存中;所述从节点读取所述第二内存,以访问所述目标元数据。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求8中任一项所述的元数据访问方法的步骤。

说明书 :

一种元数据访问方法、装置和存储介质

技术领域

[0001] 本申请涉及数据处理领域,特别是涉及一种元数据访问方法、装置和存储介质。

背景技术

[0002] 现有的元数据访问方法为,用户访问指令发送到分发节点,分发节点连接一个主节点,并把访问指令发送至主节点,主节点收到指令以后从元数据服务拉取元数据对指令进行解析,主节点启动计算节点,并发送指令至计算节点,计算节点启动后,接收指令,计算节点从元数据服务拉取元数据,并对指令进行处理,计算节点返回处理结果,并且退出销毁,释放计算资源。现有技术中的元数据访问方法,所有节点(分发节点、主节点即从节点)均需访问元数据服务,数据量大,占用大量网络带宽, 提高了网络开销和成本,极大的加重了元数据服务的负载,导致数据库性能差,以及需要分配更多的资源给元数据服务。元数据服务负载高,限制了最大节点的数量,也就是限制了整个数据库集群的性能。
[0003] 针对现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题,目前还没有提出有效的解决方案。

发明内容

[0004] 在本实施例中提供了一种元数据访问方法、装置和存储介质,以解决现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题。
[0005] 第一个方面,在本实施例中提供了一种元数据访问方法,所述方法包括:
[0006] 将目标元数据的缓存数据加载至第一内存中;所述目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;
[0007] 响应于主节点的元数据访问请求,将所述第一内存中的所述目标元数据的缓存数据加载至所述主节点对应的从节点的第二内存中;所述从节点读取所述第二内存,以访问所述目标元数据。
[0008] 在其中的一些实施例中,所述将目标元数据的缓存数据加载至第一内存中之前包括:
[0009] 获取所述元数据服务中的目标元数据;
[0010] 根据获取到的所述目标元数据,生成所述目标元数据的缓存数据。
[0011] 在其中的一些实施例中,所述根据获取到的所述目标元数据,生成所述目标元数据的缓存数据包括:
[0012] 根据所述目标元数据的数据类型对所述目标元数据进行分类,获取类型信息;
[0013] 对所述目标元数据进行特征提取;
[0014] 对提取到的特征和分类后的目标元数据进行编码,得到编码数据;
[0015] 根据所述编码数据和所述类型信息,生成所述缓存数据。
[0016] 在其中的一些实施例中,所述根据获取到的所述目标元数据,生成所述目标元数据的缓存数据包括:
[0017] 获取所述目标元数据的版本信息,根据所述版本信息生成所述缓存数据。
[0018] 在其中的一些实施例中,所述方法还包括:
[0019] 响应于元数据服务发送的数据更新指令,获取所述从节点的任务的执行状态;所述数据更新指令用于指示更新所述第一内存中存储的所述目标元数据的缓存数据;
[0020] 根据所述执行状态,从所述第一内存中选择与所述执行状态对应的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中。
[0021] 在其中的一些实施例中,所述根据所述执行状态,从所述第一内存中选择与所述执行状态对应的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中包括:
[0022] 当所述执行状态为所述从节点执行任务时,从所述第一内存中选择更新前的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中;
[0023] 当所述执行状态为所述从节点空闲时,从所述第一内存中选择更新后的所述目标元数据的缓存数据加载至所述从节点的所述第二内存中。
[0024] 在其中的一些实施例中,所述方法还包括:
[0025] 响应于从节点的接入请求,将所述第一内存的地址连接到待接入的从节点中。
[0026] 在其中的一些实施例中,所述从节点为无状态计算节点。
[0027] 第二个方面,在本实施例中提供了一种元数据访问装置,所述装置包括:
[0028] 第一加载模块,用于将目标元数据的缓存数据加载至第一内存中;所述目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;
[0029] 访问模块,用于响应于主节点的元数据访问请求,将所述第一内存中的所述目标元数据的缓存数据加载至所述主节点对应的从节点的第二内存中;所述从节点读取所述第二内存,以访问所述目标元数据。
[0030] 第三个方面,在本实施例中提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一个方面所述的元数据访问方法的步骤。
[0031] 与现有技术相比,在本实施例中提供的一种元数据访问方法、装置和存储介质,通过将元数据中的目标元数据进行缓存至云磁盘后,从节点需要访问目标元数据时,加载器先将目标元数据加载至加载器的本地内存中,从节点需要访问相应的目标元数据时,再将该目标元数据加载至从节点的本地内存中,从而减小元数据服务的访问压力,解决了现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题。
[0032] 本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。

附图说明

[0033] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0034] 图1是执行本申请实施例的一种元数据访问方法的终端的硬件结构框图;
[0035] 图2是本申请实施例的一种元数据访问方法的流程图;
[0036] 图3是本优选实施例中的一种元数据缓存生成方法的流程图;
[0037] 图4是本优选实施例中的一种元数据缓存访问方法的流程图;
[0038] 图5是本优选实施例中的一种计算节点更新方法的流程图;
[0039] 图6是本优选实施例中的一种元数据缓存动态更新方法的流程图;
[0040] 图7是本申请实施例的一种元数据访问装置的结构框图。

具体实施方式

[0041] 为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
[0042] 除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
[0043] 为了便于理解,示例性的给出了与本申请相关概念的说明以供参考,可以理解的是,相关概念的说明也作为本申请实施例的一部分内容,具体如下:
[0044] 一、弹性分布式计算
[0045] 基于分布式集群的计算节点可以动态按需生成和销毁。分布式的计算节点资源无需预先生成。
[0046] 二、无状态计算节点
[0047] 无状态计算节点不存储任何集群的信息以及数据,生成和销毁不会对分布式集群产生任何影响。本申请所涉及的所有从节点,皆为无状态计算节点,其状态全部储存于元数据服务中。
[0048] 三、 元数据
[0049] 一种用于描述/执行数据库中用户数据/查询/操作的数据,本申请所涉及的元数据为独立式存储。元数据为数据库关键数据,一旦损坏,数据库将停止服务且不可恢复。
[0050] 四、分布式数据库
[0051] 本申请所涉及的分布式数据库为主‑从(master ‑ segment) 节点架构的存算分离的分布式数据。其中,主节点负责接收用户指令 (query)和解析,从节点为eMPP(elasticMassive Parallel Processing,弹性大规模并行计算)架构的无状态计算节点,负责处理用户指令,读取和处理数据,并把结果返回至主节点 。一般的数量级为一个主节点,数千个从节点。
[0052] 五、元数据存储/访问
[0053] 本申请所涉及的元数据存储和访问皆为同一节点进行存储和访问,即元数据作为关键性数据统一存储,保证其安全性。所有节点 (包括所有的主、从节点)都需要访问元数据。元数据服务系统指一种类数据库服务系统,可以为分布式数据库提供统一的元数据服务,包括存储,查询,修改,插入。
[0054] 六、用户指令(query)
[0055] 用户对存储的数据进行增删查改,数据库主节点在接收到用户指令以后,会对用户指令进行解析和翻译至机器语言,并交由计算节点进行处理。在整个 过程 (解析,翻译,处理) 中,需要元数据参与进行处理。
[0056] 在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是执行本申请实施例的一种元数据访问方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
[0057] 存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的一种元数据访问方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0058] 传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
[0059] 在本实施例中提供了一种元数据访问方法,图2是本申请实施例的一种元数据访问方法的流程图,如图2所示,该流程包括如下步骤:
[0060] 步骤S210,将目标元数据的缓存数据加载至第一内存中;目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据。
[0061] 具体地,该方法可以应用于eMPP架构,进一步可以应用于基于eMPP分布式存算分离数据库。加载器将目标元数据的缓存数据加载至第一内存中,这里的目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据,这里的第一内存为加载器的本地内存,加载器可以从云磁盘中将目标元数据的缓存数据加载至加载器的本地内存中。进一步具体地,根据元数据的活跃程度,可以将元数据分为热数据和冷数据,其中可以定义冷数据为低更新频率高访问频率的元数据,热数据为高更新频率低访问频率的元数据。对于冷数据,其会频繁被计算节点访问,但其数据更新频率较低,可以将冷数据作为目标元数据从元数据服务中提取出来,生成缓存数据镜像,计算节点从缓存数据镜像中获取相应的目标元数据,而无需访问元数据服务,极大的节省了网络带宽和降低了元数据服务的复杂度。
[0062] 示例性地,这里的加载器可以为eMPP架构自带的加载器。
[0063] 步骤S220,响应于主节点的元数据访问请求,将第一内存中的目标元数据的缓存数据加载至主节点对应的从节点的第二内存中;从节点读取第二内存,以访问目标元数据。
[0064] 具体地,加载器响应于主节点的元数据访问请求,将第一内存中的目标元数据的缓存数据加载至主节点对应的从节点的第二内存中;从节点读取第二内存,以访问目标元数据,这里的第二内存可以为从节点的本地内存。这里的从节点为无状态计算节点,从节点对目标元数据的缓存数据的访问,只能通过主节点通知加载器。加载器响应于主节点的元数据访问请求,该元数据访问请求携带有需要进行目标元数据访问的从节点的信息,将加载器的本地内存中的目标元数据的缓存数据加载至相应的从节点的本地内存中,从节点从其本地内存中读取目标元数据,以访问该目标元数据。
[0065] 在本实施例中,将元数据中的目标元数据进行缓存至云磁盘后,从节点需要访问目标元数据时,加载器先将目标元数据加载至加载器的本地内存中,从节点需要访问相应的目标元数据时,再将该目标元数据加载至从节点的本地内存中,从而减小元数据服务的访问压力,解决了现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题。
[0066] 在其中的一些实施例中,将目标元数据的缓存数据加载至第一内存中之前包括:获取元数据服务中的目标元数据,根据获取到的目标元数据,生成目标元数据的缓存数据。
[0067] 具体地,从元数据服务中将目标元数据抽取出来,根据获取到的目标元数据,生成目标元数据的缓存数据。
[0068] 在其中的一些实施例中,根据获取到的目标元数据,生成目标元数据的缓存数据包括:根据目标元数据的数据类型对目标元数据进行分类,获取类型信息;将分类后的目标元数据进行特征提取;对提取到的特征和分类后的目标元数据进行编码,得到编码数据;根据编码数据和类型信息,生成缓存数据。
[0069] 具体地,将分类后的目标元数据进行特征提取,提取特征值,将提取的特征值和分类后的目标元数据一并进行编码,得到编码数据,根据编码数据和类型信息,生成缓存数据,缓存数据中包括编码数据和目标元数据的类型信息,生成对应的缓存数据镜像,并保存于云磁盘中。示例性地,这里的编码可以是二进制编码,以使得编码后得到的编码数据符合加载器本地内存和从节点的本地内存中的数据结构。通过对目标元数据进行分类及特征值提取,加快云磁盘中目标元数据的查询速度。
[0070] 在其中的一些实施例中,根据获取到的目标元数据,生成目标元数据的缓存数据包括:获取目标元数据的版本信息,根据版本信息生成缓存数据。
[0071] 具体地,获取目标元数据的版本信息,为缓存数据生成版本信息,将带有版本信息的缓存数据,生成对应的缓存数据镜像,并保存于云磁盘中。
[0072] 在其中的一些实施例中,该元数据访问方法还包括缓存动态更新过程,该缓存动态更新过程包括:响应于元数据服务发送的数据更新指令,获取从节点的任务的执行状态;数据更新指令用于指示更新第一内存中存储的目标元数据的缓存数据;根据执行状态,从第一内存中选择与执行状态对应的目标元数据的缓存数据加载至从节点的第二内存中。
[0073] 具体地,加载器响应于元数据服务发送的数据更新指令,获取从节点的任务的执行状态,当执行状态为从节点正在执行任务时,从第一内存中选择更新前的目标元数据的缓存数据加载至从节点的第二内存中;当执行状态为从节点空闲时,从第一内存中选择更新后的目标元数据的缓存数据加载至从节点的第二内存中。当所有的从节点均从第一内存中选择更新后的目标元数据的缓存数据加载至从节点的第二内存中后,即所有的从节点完成缓存连接更新后,从节点删除旧的内存缓存以及系统删除旧的缓存数据的镜像文件。
[0074] 下面通过优选实施例对本申请实施例进行描述和说明。
[0075] 在本优选实施例中提供了一种元数据缓存生成方法,如图3所示,该方法包括如下步骤:
[0076] 步骤S310,数据抽取器将需要的元数据从元数据服务中抽取出来。
[0077] 具体地,这里的需要的元数据即为目标元数据也即冷数据。这里的数据抽取器可以为eMPP架构中实现数据抽取功能的模块。
[0078] 步骤S320,缓存数据生成器根据元数据的内部的数据的属性对元数据进行分类。
[0079] 具体地,按照单个元数据内部的数据的属性,对元数据进行分类。这里的缓存数据生成器可以为eMPP架构中实现缓存数据生成功能的模块。
[0080] 步骤S330,缓存数据生成器对元数据进行预计算。
[0081] 具体地,这里的预计算包括扫描抽取出来的分类后的元数据,并按照系统定义的特征类计算出特征值,这里的特征值可以通过哈希算法来计算,这里的特征值可用来表征元数据的类型。
[0082] 步骤S340,缓存数据生成器对抽取出来的元数据进行编码。
[0083] 具体地,缓存数据生成器对分类后的元数据和计算出的特征值进行二进制编码,以保证其符合内存中数据结构。数据抽取器将抽取出来的数据交由缓存数据生成器进行编码,以提升加载速度和查询速度。
[0084] 步骤S350,对元数据进行版本校验,生成版本信息。
[0085] 步骤S360,对处理好的元数据进行打包,生成缓存数据。
[0086] 步骤S370,缓存数据生成器为打包好的缓存数据添加版本信息,并生成对应的缓存数据镜像,保存于云磁盘中。
[0087] 具体地,缓存数据生成器为打包好的缓存数据添加版本信息,缓存数据生成器将添加版本信息的缓存数据生成缓存数据镜像,并将生成的缓存数据镜像保存于云磁盘中。后续主节点或元数据服务触发元数据访问,加载器将元数据的缓存数据镜像从云磁盘中读出放入加载器的本地硬盘中,计算节点从加载器的本地硬盘中读取数据到计算节点的本地硬盘中,加载器的本地硬盘和计算节点的本地硬盘在一个服务器内。这里的计算节点为无状态计算节点。
[0088] 在本实施例中,数据抽取将需要的元数据从元数据服务中抽取出来缓存至云磁盘,计算节点需要访问目标元数据时,加载器先将目标元数据加载至加载器的本地内存中,计算节点需要访问相应的目标元数据时,再将该目标元数据加载至计算节点的本地内存中,从而减小元数据服务的访问压力,解决了现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题;对目标元数据进行分类、预计算和编码,加快了后续对于缓存数据的查询速度。对元数据进行冷热数据分类,使得离线缓存成为可能,离线缓存做成数据镜像,可以通过操作系统直接挂载,无需特殊硬件设备。对元数据进行预计算,提高了对缓存数据的查询的速度。对元数据的查询关键字进行对应的多关键字哈希编码,使用专用的数据结构对元数据进行存储,专用数据结构是为内存中的缓存数据所设计,进行分类和储存,并进行编码后的生成的数据结构。对元数据进行特殊编码,提高了元数据的安全性和加载速度,全二进制编码,可直接整块加载到内存中,对专用的数据结构添加了数据校验,保证数据的正确性。即本实施提供的元数据缓存生成方法减少了元数据服务的负载,减少了元数据需要的网络传输带宽,减少了元数据查询的延迟,提高了数据库集群整体性能及提高了数据库集群物理节点的承受数量。
[0089] 在本优选实施例中提供了一种元数据缓存访问方法,如图4所示,该方法包括如下步骤:
[0090] 步骤S410,将缓存数据镜像挂载到本地环境中。
[0091] 具体地,系统将缓存数据镜像挂载到本地环境中,这里的系统可以为eMPP架构的操作系统。离线缓存做成数据镜像,可以通过操作系统直接挂载,无需特殊硬件设备。
[0092] 步骤S420,加载器读取元数据的缓存数据镜像。
[0093] 具体地,加载器将云磁盘中的缓存数据镜像加载至加载器的内存中,即加载器将云磁盘中的缓存数据镜像加载至加载器的本地硬盘中。加载器先对元数据进行版本校验,版本正确后,加载器对元数据进行校验。加载器读取云磁盘中的二进制文件,并保存于加载器的内存中。加载器读取元数据通过云磁盘的I/O链路进行,不占用网路带宽,减少了系统的数据访问压力。
[0094] 步骤S430,加载器将其内存中的缓存数据连接到计算节点的本地内存中。
[0095] 步骤S440,计算节点从其本地内存中获取对应的元数据。
[0096] 具体地,当计算节点需要元数据的时候,如果该元数据已经被加载进计算节点的本地内存中,计算节点直接读取相应内存即可获取对应的元数据。
[0097] 在本实施例中,计算节点需要访问目标元数据时,加载器先将目标元数据加载至加载器的本地内存中,计算节点需要访问相应的目标元数据时,再将该目标元数据加载至计算节点的本地内存中,从而减小元数据服务的访问压力,解决了现有技术中存在的所有节点均需访问元数据服务导致元数据服务负载高的问题。缓存由加载器独立控制,每个物理环境只需要一份内存拷贝,极大的节约了内存空间(每个物理环境的计算节点>100)。
[0098] 在本优选实施例中提供了一种计算节点更新方法,如图5所示,该方法包括如下步骤:
[0099] 步骤S510,加载器收到新计算节点加入的指令时,加载器并连接到缓存数据的加载器的内存地址。
[0100] 步骤S520,加载器通知计算节点,并将缓存数据的加载器的内存地址连接到新计算节点的本地内存中。
[0101] 具体地,将缓存数据的加载器的内存地址连接到新计算节点的本地内存中后,新计算节点即可正常工作。当计算节点销毁、回收或非正常退出时,其去缓存的内存连接会由操作系统自动断开,无需额外处理。
[0102] 在本实施例中,计算节点的新建、销毁和回收均不需要对缓存进行特殊处理,不占用任何计算资源;计算节点非可控状态下退出,不影响缓存本身,无需对缓存进行特殊处理。
[0103] 在本优选实施例中提供了一种元数据缓存动态更新方法,如图6所示,该方法包括如下步骤:
[0104] 步骤S610,当元数据有更新时,元数据服务通知缓存数据生成器,缓存数据生成器生成新的元数据的缓存数据镜像,并通知加载器。
[0105] 具体地,当元数据服务检测到有新版本元数据的时候,元数据服务通知缓存数据生成器,缓存数据生成器生成新的元数据的缓存数据镜像,并通知加载器。
[0106] 步骤S620,加载器重新读取新的元数据的缓存数据镜像,并生成新的元数据内存缓存。
[0107] 具体地,加载器重新从云磁盘中读取新的元数据的缓存数据镜像,并生成新的元数据的加载器内存缓存。
[0108] 步骤S630,加载器检查所有的计算节点,根据计算节点的状态进行更新。
[0109] 具体地,如果计算节点还有正在执行的任务,则等待,当计算节点完成当前任务,加载器通知计算节点解除当前元数据内存缓存的连接,并重新连接到新的内存缓存上;如果计算节点当前无任务或即将执行新的任务,则通知计算节点解除当前元数据内存缓存的连接,并将其连接到新的元数据内存缓存上。从而实现元数据缓存动态更新。
[0110] 步骤S640,所有计算节点完成缓存连接更新后,计算节点删除其旧的内存缓存以及对应的镜像文件,加载器删除其旧的内存缓存以及对应的镜像文件。
[0111] 在本实施例中,当元数据有更新时,加载器根据计算节点的状态,来判断是否连接至新的元数据的加载器内存缓存上,从而实现元数据缓存动态更新,并且在更新过程中不影响计算节点的任务的执行。缓存数据镜像随元数据版本进行动态更新,动态更新时集群无需停机,不影响当前正在执行的任务,缓存数据镜像动态滚动切换,旧缓存数据镜像占用的内存和磁盘空间会及时回收。
[0112] 在本实施例中还提供了一种元数据访问装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0113] 图7是本申请实施例的一种元数据访问装置的结构框图,如图7所示,该装置包括:
[0114] 第一加载模块710,用于将目标元数据的缓存数据加载至第一内存中;目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;
[0115] 访问模块720,用于响应于主节点的元数据访问请求,将第一内存中的目标元数据的缓存数据加载至主节点对应的从节点的第二内存中;从节点读取第二内存,以访问目标元数据。
[0116] 需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
[0117] 在本实施例中还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0118] 可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0119] 可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0120] S1,将目标元数据的缓存数据加载至第一内存中;目标元数据为元数据服务中数据更新频次低于第一预设值且数据访问频次高于第二预设值的元数据;
[0121] S2,响应于主节点的元数据访问请求,将第一内存中的目标元数据的缓存数据加载至主节点对应的从节点的第二内存中;从节点读取第二内存,以访问目标元数据。
[0122] 需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
[0123] 此外,结合上述实施例中提供的一种元数据访问方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种元数据访问方法的步骤。
[0124] 应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
[0125] 显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
[0126] “实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
[0127] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。