一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式对象存储中对象移动优化方法与系统与流程

2022-06-01 05:05:52 来源:中国专利 TAG:


1.本发明涉及分布式对象存储技术领域,特别是一种分布式对象存储中对象移动优化方法与系统。


背景技术:

2.存储系统中存储的对象主要有两部分构成,分别为数据和元数据。对于尺寸较大的对象,其元数据只占很小的比例。对象的所有操作基本都要涉及这两部分内容,对象移动也不例外。其中对象的数据存放于数据池中,而元数据有多种,分别存放于数据池中当前对象的头对象中,以及索引池中当前对象所在桶的某个桶分片中。
3.当前的分布式对象存储系统中,经常会使用对象移动的操作,即将对象从一个存储桶移动到另一个存储桶中。此操作涉及到几个主要工作,读取对象、上传对象、删除源对象,除了过程繁琐之外,对于尺寸大的存储对象执行移动操作也极其耗费资源。若批量移动对象的话,可能出现内存暴涨的现象,从而影响客户前端业务,进而带来不好的用户体验。


技术实现要素:

4.本发明的目的是提供一种分布式对象存储中对象移动优化方法与系统,旨在解决现有技术中对象移动过程繁琐以及内存资源耗费大的问题,实现提高移动效率,以及提高分布式对象存储系统的性能。
5.为达到上述技术目的,本发明提供了一种分布式对象存储中对象移动优化方法,所述方法包括以下操作:
6.根据对象名以及该对象所在的源桶的唯一标识,获取数据池中源对象的头对象数据和元数据到内存;
7.在内存中修改原有的元数据,在元数据中添加新增字段;
8.删除源对象中的头对象数据和元数据,并将内存中的数据以及修改后的元数据下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中;
9.将该对象的元数据信息写入索引池中目的桶的某一桶分片中,删除索引池中源桶分片中该对象的元数据信息,完成对象移动。
10.优选地,所述新增字段用于当客户端读取该对象的内容时,先读取该对象的头对象,若头对象的元数据信息中有该新增字段,说明该对象被移动过,那么读取该对象的尾对象数据时,根据该新增字段的值,确定出尾对象的名字,进而从尾对象中读取其他数据。
11.优选地,所述元数据包括etag、tag、content_type、pg_ver、source_zone属性信息。
12.优选地,所述桶分片的编号根据对象的名字经过哈希算法计算得出。
13.本发明还提供了一种分布式对象存储中对象移动优化系统,所述系统包括:
14.源对象获取模块,用于根据对象名以及该对象所在的源桶的唯一标识,获取数据池中源对象的头对象数据和元数据到内存;
15.元数据修改模块,用于在内存中修改原有的元数据,在元数据中添加新增字段;
16.数据池替换模块,用于删除源对象中的头对象数据和元数据,并将内存中的数据以及修改后的元数据下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中;
17.索引池替换模块,用于将该对象的元数据信息写入索引池中目的桶的某一桶分片中,删除索引池中源桶分片中该对象的元数据信息,完成对象移动。
18.优选地,所述新增字段用于当客户端读取该对象的内容时,先读取该对象的头对象,若头对象的元数据信息中有该新增字段,说明该对象被移动过,那么读取该对象的尾对象数据时,根据该新增字段的值,确定出尾对象的名字,进而从尾对象中读取其他数据。
19.优选地,所述元数据包括etag、tag、content_type、pg_ver、source_zone属性信息。
20.优选地,所述桶分片的编号根据对象的名字经过哈希算法计算得出。
21.发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
22.与现有技术相比,本发明通过将源对象的头对象数据和元数据进行修改,在元数据中添加新增字段,通过新增字段,将新增字段值为源桶的唯一标识,进而在读取对象时可以正确读取尾对象数据,以保证数据存取的完整性,并将修改后的元数据下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中,完成对象的快速移动,使得代码逻辑更简洁,操作步骤更少,同时数据可重复利用的方案,极大地简化了逻辑流程,提高了移动效率,极大地提高了分布式对象存储系统的性能,给用户带来更好的使用体验。
附图说明
23.图1为本发明实施例中所提供的一种分布式对象存储中对象移动优化方法流程图;
24.图2为本发明实施例中所提供的一种分布式对象存储中对象移动优化系统框图。
具体实施方式
25.为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
26.下面结合附图对本发明实施例所提供的一种分布式对象存储中对象移动优化方法与系统进行详细说明。
27.如图1所示,本发明公开了一种分布式对象存储中对象移动优化方法,所述方法包括以下操作:
28.根据对象名以及该对象所在的源桶的唯一标识,获取数据池中源对象的头对象数据和元数据到内存;
29.在内存中修改原有的元数据,在元数据中添加新增字段;
30.删除源对象中的头对象数据和元数据,并将内存中的数据以及修改后的元数据下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中;
31.将该对象的元数据信息写入索引池中目的桶的某一桶分片中,删除索引池中源桶分片中该对象的元数据信息,完成对象移动。
32.本发明实施例针对对象存储系统中同一数据池中不同桶之间的对象移动,通过只移动和修改对象的元数据,而不移动数据的方式,简化对象移动步骤。
33.其中对象的数据存放于数据池中,而元数据有多种,分别存放于数据池中当前对象的头对象中,以及索引池中当前对象所在桶的某个桶分片中,且元数据只占很小的比例,因此在本发明实施例中仅移动和修改元数据,并分别在数据池和索引池中作相应修改。
34.根据对象名以及该对象所在的源桶的唯一标识,从数据池中找到目标对象的对象头,然后将该对象头中的数据和元数据读取到内存中。在该内存中直接修改该对象原有的元数据,最重要的是添加新的字段,该字段的值取源桶的唯一标识。该字段用于当客户端读取该对象的内容时,先读取该对象的头对象,若头对象的元数据信息中有该新增字段,说明该对象被移动过,那么读取该对象的尾对象数据时,根据该新增字段的值,确定出尾对象的名字,进而从尾对象中读取其他数据。
35.删除源对象对象头中的数据和元数据,然后将内存中的数据和新元数据,例如etag、tag、content_type、pg_ver、source_zone等属性信息,下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中。将该对象的名字、大小、分类、属主的元数据信息写入索引池中目的桶的某一个桶分片中,其中所述桶分片的编号是根据对象的名字经过哈希算法计算出来的。
36.删除索引池中源桶分片中该对象的元数据信息。
37.在本发明中,由于在对象移动中,只移动和修改对象头中的数据和元数据,而不移动尾对象数据,通过在头对象元数据中添加字段,字段值为源桶的唯一标识,因而在读取对象数据时,可以正确读取尾对象数据,从而保证数据存取的完整性。
38.本发明实施例通过将源对象的头对象数据和元数据进行修改,在元数据中添加新增字段,通过新增字段,将新增字段值为源桶的唯一标识,进而在读取对象时可以正确读取尾对象数据,以保证数据存取的完整性,并将修改后的元数据下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中,完成对象的快速移动,使得代码逻辑更简洁,操作步骤更少,同时数据可重复利用的方案,极大地简化了逻辑流程,提高了移动效率,极大地提高了分布式对象存储系统的性能,给用户带来更好的使用体验。
39.如图2所示,本发明实施例还公开了一种分布式对象存储中对象移动优化系统,所述系统包括:
40.源对象获取模块,用于根据对象名以及该对象所在的源桶的唯一标识,获取数据池中源对象的头对象数据和元数据到内存;
41.元数据修改模块,用于在内存中修改原有的元数据,在元数据中添加新增字段;
42.数据池替换模块,用于删除源对象中的头对象数据和元数据,并将内存中的数据以及修改后的元数据下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中;
43.索引池替换模块,用于将该对象的元数据信息写入索引池中目的桶的某一桶分片中,删除索引池中源桶分片中该对象的元数据信息,完成对象移动。
44.根据对象名以及该对象所在的源桶的唯一标识,从数据池中找到目标对象的对象头,然后将该对象头中的数据和元数据读取到内存中。在该内存中直接修改该对象原有的元数据,最重要的是添加新的字段,该字段的值取源桶的唯一标识。该字段用于当客户端读取该对象的内容时,先读取该对象的头对象,若头对象的元数据信息中有该新增字段,说明该对象被移动过,那么读取该对象的尾对象数据时,根据该新增字段的值,确定出尾对象的名字,进而从尾对象中读取其他数据。
45.删除源对象对象头中的数据和元数据,然后将内存中的数据和新元数据,例如etag、tag、content_type、pg_ver、source_zone等属性信息,下刷到同一存储池中以目的桶唯一标识和对象名命名的新的头对象中。将该对象的名字、大小、分类、属主的元数据信息写入索引池中目的桶的某一个桶分片中,其中所述桶分片的编号是根据对象的名字经过哈希算法计算出来的。
46.删除索引池中源桶分片中该对象的元数据信息。
47.在本发明中,由于在对象移动中,只移动和修改对象头中的数据和元数据,而不移动尾对象数据,通过在头对象元数据中添加字段,字段值为源桶的唯一标识,因而在读取对象数据时,可以正确读取尾对象数据,从而保证数据存取的完整性。
48.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献