对象存储服务的回源特性

2024-06-12 08:20

本文主要是介绍对象存储服务的回源特性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为充分提升基础设施相关预算的投资效率,数据安全性,客户的数据可能分布在多套存储中,按照价格、业务场景等,可以划分为如下形式:

  • 本地高端存储,支撑生产类业务
  • 本地低端存储,支撑归档类业务、分析型业务
  • 云端高端存储,支撑生产类业务、分析型业务
  • 云端低端存储,支撑归档类业务

依据不同的规则从不同的存储设备上获取数据,对于客户应用而言,则不是一个好消息,因此期望对象存储服务提供一个统一的访问点,简化客户应用程序的实现。
默认情况下,对象存储服务发现客户指定的对象不存在时,直接返回HTTP 404错误码,为实现回源业务,需要针对前述行为增加例外处理。
从实现技术角度,对象存储可以提供如下方案:

  • 重定向
  • 代理
  • CDN
  • 镜像

重定向

对象存储服务基于HTTP协议的301错误码,实现重定向。
相关流程如下:

  • 客户应用访问对象存储,指定对象名。
  • 对象存储服务检查对象名,发现对象在本集群中不存在。
  • 对象存储服务检查回源规则,发现可以由别的对象存储服务提供访问。
  • 对象存储服务在请求响应消息中返回HTTP 301错误码,同时提供指定的存储服务的URL。
  • 客户应用收到HTTP 301错误码后,使用响应消息中的对象存储服务的URL,重新发起访问请求。

在上述操作流程中,客户应用可以感知到本端对象存储服务和源对象存储服务。

代理

相关流程如下:

  • 客户应用访问对象存储,指定对象名。
  • 对象存储服务检查对象名,发现对象在本集群中不存在。
  • 对象存储服务检查回源规则,发现可以由别的对象存储服务提供访问。
  • 对象存储服务将客户端的请求,转发至源对象存储服务。
  • 本端对象存储服务等待源对象存储服务返回响应。
  • 本端对象存储服务收到响应后,重新封装后,返回给客户应用。
  • 客户应用收到响应。

在上述操作流程中,客户应用只能感知本端对象存储服务。
客户应用下次访问相同的对象时,本端对象存储服务仍然需要将请求转发至源对象存储服务。

CDN

相关流程如下:

  • 客户应用访问对象存储,指定对象名。
  • 对象存储服务检查对象名,发现对象在本集群中不存在。
  • 对象存储服务检查回源规则,发现可以由别的对象存储服务提供访问。
  • 对象存储服务将客户端的请求,转发至源对象存储服务。
  • 本端对象存储服务等待源对象存储服务返回响应。
  • 本端对象存储服务收到响应后
    • 重新封装后,返回给客户应用。
    • 在本端对象存储服务中保留一个副本,并指定过期规则。
  • 客户应用收到响应。

在上述操作流程中,客户应用只能感知本端对象存储服务。
客户应用下次访问相同的对象时,

  • 假如对象在本端对象存储服务中未过期,则由本端对象存储服务响应客户应用的请求。
  • 假如对象在本端对象存储服务中已过期,本端对象存储服务仍然需要将请求转发至源对象存储服务,同时将对象在本端对象存储服务中保留一个副本。

镜像

相关流程如下:

  • 客户应用访问对象存储,指定对象名。
  • 对象存储服务检查对象名,发现对象在本集群中不存在。
  • 对象存储服务检查回源规则,发现可以由别的对象存储服务提供访问。
  • 对象存储服务将客户端的请求,转发至源对象存储服务。
  • 本端对象存储服务等待源对象存储服务返回响应。
  • 本端对象存储服务收到响应后
    • 重新封装后,返回给客户应用。
    • 在本端对象存储服务中保留一个副本。
  • 客户应用收到响应。

在上述操作流程中,客户应用只能感知本端对象存储服务。
客户应用下次访问相同的对象时,直接由本端对象存储服务响应客户应用的请求。

实现思路

实现回源的方案时,考虑点如下:
需要回源的对象
比如:

  • 对象名,比如前缀、后缀
  • 访问账户

回源的站点
客户应用可以指定的参数,比如:

  • 站点的URL,可以指定1个或者多个,设计点比如:
    • 1个主站点,多个备站点
    • 多个主站点,多个备站点
    • 主、备之间切换的条件
    • 站点之间的负载策略
  • 站点的访问账户
  • 站点的并发度
    • 超出源站并发度的对策,请求排队或者直接返回即定的错误码
  • 请求超时值
  • 失效阈值
    • 连续失败的次数
    • 给定时间内失败的次数
    • 连续超时的次数
    • 给定时间内超时的次数
  • HTTP头部的处理
    • 可行的操作,比如透传、附加、修改、删除
    • 处理的范围,比如请求消息中的头部、响应消息中的头部

回源支持的操作
比如读相关的操作。

回源方式
不同回源方式涉及到的业务参数。

  • 重定向
    • 指示客户应用需重新访问的错误码,一般是301
    • 错误码映射,兼容源站的即有实现
  • 代理
    • 访问超时值
    • 错误码映射,兼容源站的即有实现
  • CDN
    • 保留期,决定了对象暂存多长时间
    • 保留对象的桶
    • 保留对象的桶的空间配额
    • 超出配额之后的对策,比如:
      • 不缓存新对象
      • 清理老对象,LRU等
  • 镜像
    • 保留对象的桶
    • 保留对象的桶的空间配额
    • 超出配额之后的对策,比如:
      • 不缓存新对象
      • 清理老对象,LRU等

参考资料

华为云

  • 设置镜像回源规则
  • 获取镜像回源规则
  • 删除镜像回源规则

XSKY

  • 「星技术」纳管对象、NAS及公有云等存储,XSKY对象回源轻松搞定!

这篇关于对象存储服务的回源特性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053685

相关文章

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现