Created time
Aug 2, 2023 02:15 PM
date
Aug 2, 2023
status
Published
category
项目实战
Origin
summary
这篇文章介绍了分布式对象存储系统中元数据服务的PUT操作实现,主要内容包括:
- objects包中的put函数实现,负责处理对象存储并记录元数据
- 与第2章实现的区别:使用对象的散列值而非名称作为存储参数
- 从HTTP请求头部获取对象散列值和大小的工具函数
- 完整流程:从请求头提取散列值,存储对象,从URL获取对象名称,提取对象大小,最后将元数据添加到Elasticsearch中
tags
type
Post
URL
icon
password
slug
distributed-object-storage-metadata-service-go-implementation
objects 包 put 逻辑相关的函数如下所示:
在第2 章中,我们以
<object_name>为参数调用 storeObject。而本章我们首先调用utils.GetHashFromHeader 从 HTTP 请求头部获取对象的散列值,然后以散列值为参数调用 storeObject。之后我们从 URL 中获取对象的名字并且调用 utils.GetSizeFromHeader从 HTTP 请求头部取对象的大小,然后以对象的名字、散列值和大小为参数调用es.AddVersion 给该对象添加新版本。