谷粒商城实战笔记-61-商品服务-API-品牌管理-云存储开通与使用

文章目录

一,图片云存储

这张图展示了文件存储的几种常见模式:

  • 普通上传
  • 分布式情况下的普通上传
  • 使用自建服务器
  • 云存储服务的情况
  1. 普通上传:在这种情况下,浏览器直接将文件上传给商品服务,然后由商品服务保存文件。这种方式简单明了,但是存在单点故障风险,因为所有文件都在同一台服务器上存储。

  2. 分布式情况下的普通上传:这是一种改进后的版本,多个商品服务共享同一个文件存储空间。然而,这种方案仍然需要自己维护文件存储基础设施,包括搭建和维护 FastDFS 或 vsftpd 文件系统,这可能会带来较高的前期成本和维护负担。

  3. 自建服务器:商品服务将文件上传至自建的文件存储服务器。虽然这种方式可以实现一定的分布式的文件存储,但它需要自行搭建和维护,包括硬件投入、网络带宽、存储容量规划等,因此初期成本较高,且后期维护成本也不低。

  4. 云存储:云存储(如阿里云对象存储或七牛云存储)提供了一种即开即用的服务,不需要自己购买和维护硬件设备,只需要按需付费。这种方式降低了前期投入,同时也减少了运维压力。

二,阿里云OSS

1,OSS

阿里云OSS(Object Storage Service)是阿里云提供的一种大规模、安全、低成本、高可靠的云存储服务。OSS使用了一套特有的资源术语来描述其服务中的各种组件和概念。

下面是一些主要的资源术语及其含义:

  1. Bucket(存储空间):

    • Bucket 是您用于存储对象(Object)的容器。
    • 所有的对象都必须隶属于某个存储空间。
    • 存储空间名称在整个OSS中是唯一的,一旦创建就不能更改名称,也不能移动对象到其他存储空间。
  2. Object(对象/文件):

    • Object 是OSS存储数据的基本单元,也被称为OSS的文件。
    • 每个对象都有一个键(Key),用于唯一标识该对象。
    • 对象由数据(Data)和元数据(Metadata)组成。
    • 数据可以是任何格式的内容,比如文本、图片、视频等。
    • 元数据是对对象的一些描述信息,例如Content-Type、创建时间等。
  3. Key(对象名/键):

    • Key 是用于唯一标识一个对象的字符串。
    • Key 的长度必须介于1到1023字节之间,采用UTF-8编码。
    • Key 的命名规则比较宽松,但推荐使用有意义的命名以便于管理和检索。
  4. Endpoint(访问域名):

    • Endpoint 是OSS对外提供服务的访问地址。
    • 每个地域(Region)都有自己的Endpoint。
    • 用户通过Endpoint来访问存储在特定地域的Bucket。
  5. Region(地域):

    • Region 是指阿里云在全球部署的物理位置。
    • 在每个Region内部署有一个或多个数据中心。
    • 用户可以选择在哪个Region创建Bucket。
  6. Security(安全):

    • OSS 提供多种安全措施来保护数据的安全性。
    • 包括但不限于身份验证、访问控制列表(ACL)、Bucket Policy、服务器端加密等。
  7. Versioning(版本控制):

    • 版本控制是指OSS为每个对象保留多个版本的能力。
    • 开启版本控制后,无论何时上传同名对象,都会作为一个新版本被保存下来。
  8. Lifecycle Management(生命周期管理):

    • 生命周期管理是OSS提供的用于自动管理对象生命周期的规则集。
    • 可以设置对象在一定条件下的过期、归档或转换存储类型等。
  9. CORS(跨源资源共享):

    • CORS 是一种安全机制,用于允许跨域的HTTP请求。
    • 可以配置Bucket的CORS规则来允许跨域访问。
  10. Logging(日志记录):

    • OSS 支持记录Bucket的操作日志,帮助用户追踪Bucket上的操作行为。

2,基于OSS的文件上传架构

  1. 用户请求上传Policy:用户(可以是网页上的用户或者移动设备上的用户)向应用服务器发送请求,要求获取上传Policy。这个过程通常是在前端发起的,例如在网页上点击"上传文件"按钮时。

  2. 应用服务器返回上传Policy:应用服务器收到用户的请求后,生成一个上传Policy并返回给用户。上传Policy是一段JSON格式的数据,包含了允许用户上传文件的一些限制条件,比如密钥、最大文件大小、可上传的文件类型等。

  3. 用户直接上传数据到OSS:用户拿到上传Policy后,就可以直接将数据上传到OSS了。这里需要注意的是,用户并不是直接将数据传给应用服务器,而是通过OSS提供的API接口将数据上传到云端。这样做的好处是可以减轻应用服务器的压力,同时也能保证数据的安全性和可靠性。

总的来说,这种架构设计使得用户可以直接与OSS进行交互,而不需要经过应用服务器,从而提高了系统的性能和稳定性。

同时,由于上传Policy的存在,也可以对用户的上传行为进行一定的控制和管理。

3,Java中使用OSS

在Java中,可以使用阿里云的OSS SDK来操作对象存储服务(OSS)。以下是一个简单的示例,展示了如何使用OSS SDK上传文件到OSS:

首先,你需要在你的项目中添加OSS SDK的依赖。如果你使用的是Maven,你可以在pom.xml文件中添加以下依赖:

xml 复制代码
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.12.0</version>
</dependency>

然后,你可以创建一个OSSClient实例,并使用它来上传文件:

java 复制代码
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;

public class OSSSample {
    public static void main(String[] args) {
        String endpoint = "<YourEndpoint>";
        String accessKeyId = "<YourAccessKeyId>";
        String accessKeySecret = "<YourAccessKeySecret>";
        String bucketName = "<YourBucketName>";
        String objectName = "<YourObjectName>";
        String localFile = "<YourLocalFile>";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 上传本地文件到OSS。
        ossClient.putObject(bucketName, objectName, localFile);

        // 关闭OSSClient。
        ossClient.shutdown();

        System.out.println("Upload success.");
    }
}

在这个示例中,你需要替换<YourEndpoint><YourAccessKeyId><YourAccessKeySecret><YourBucketName><YourObjectName><YourLocalFile>为你的实际值。

注意:上传文件后,不要忘记关闭OSSClient。

相关推荐
齐 飞10 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
丫头,冲鸭!!!44 分钟前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法
听忆.1 小时前
手机屏幕上进行OCR识别方案
笔记
Selina K2 小时前
shell脚本知识点记录
笔记·shell
2 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
霍格沃兹测试开发学社测试人社区3 小时前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
幸运超级加倍~3 小时前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
王俊山IT3 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Yawesh_best4 小时前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
CXDNW6 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0