当前位置: 首页 > news >正文

微服务项目:尚融宝(20)(后端搭建:OSS文件上传整合)

认清现实,放弃幻想,准备斗争 

阿里云存储OSS

一、开通“对象存储OSS”服务

为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。 

1、开通“对象存储OSS”服务

2、进入管理控制台 

二、控制台使用

1、创建Bucket

命名:srb-file

读写权限:公共读

2、上传默认头像

创建文件夹avatar,上传默认的用户头像

 

三、使用RAM子用户

1、进入子用户管理页面

2、添加用户 

3、获取子用户key

AccessKeyId, AccessKeySecret

4、设置用户权限

AliyunOSSFullAccess

一、使用SDK

在OSS的概览页右下角找到“Bucket管理”,点击“OSS学习路径”

点击“Java SDK”进入SDK开发文档 

二、创建测试项目

1、创建Maven项目

com.atguigu

aliyun-oss

2、配置pom

<dependencies>
    <!--aliyunOSS-->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.10.2</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

三、测试用例

1、创建Bucket

public class OSSTest {

    // Endpoint以杭州为例,其它Region请按实际情况填写。
    String endpoint = "your endpoint";
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    String accessKeyId = "your accessKeyId";
    String accessKeySecret = "your accessKeySecret";
    String bucketName = "srb-file";

    @Test
    public void testCreateBucket() {
        
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 创建存储空间。
        ossClient.createBucket(bucketName);

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

 2、判断bucket是否存在

@Test
public void testExist() {

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

    boolean exists = ossClient.doesBucketExist(bucketName);
    System.out.println(exists);

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

 3、设置bucket访问权限

@Test
public void testAccessControl() {

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

    // 设置存储空间的访问权限为:公共读。
    ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);

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

什么是对象存储OSS
OSS的全称是:Object Storage Service;即对象存储服务。

在数据存储领域,存储数据的主要方法有三种: 文件、块和对象。

简单来说,对象的功能是模块化的单元,每个对象都充当自包含的存储库,其中包含描述权限、隐私、证券、意外事件和其他信息等详细信息的元数据。例如,它类似于一张照片,其中可能包含描述用于拍摄照片的相机设置以及拍摄时间和地点的元数据。

将OSS与传统的存储方式进行对比
传统上,Web 应用程序使用文件系统和数据库在后端存储用户数据。很简单,结构化数据进入数据库,其他任何东西进入文件系统。这很容易管理,因为很少有应用程序生成非结构化数据——大多数应用程序在表单中接受用户输入并将数据保存到数据库中。

然而,时代在变,随着社交媒体、云存储、数据分析平台和其他计算范式的出现,越来越多的非结构化数据被推送到互联网上。

DC 在 2014 年进行的一项研究预测,到 2020 年,全球创建和复制的非结构化数据将达到 44 泽字节,即每年 44 万亿千兆字节。2015 年非结构化数据已经占所有数字数据的 90%

所以,与其他计算范式一样,存储系统需要不断发展才能满足这一新的非结构化数据浪潮席卷互联网。

自现代计算开始以来人们一直在使用的存储机制,即文件系统,扩展比较困难;不仅需要管理文件系统强加的不必要的元数据和层次结构,还需要处理其他事情,例如备份管理。

而且,仅仅收集非结构化数据是不够的。我们还需要应用某种级别的组织来理解数据。文本分析、自动分类、自动标记等技术对于从我们收集的所有非结构化数据中获得商业意义至关重要。具有固定布局的文件系统使其难以实现。

我们最初接触到的文件系统不是为 HTTP(S) 设计的,而是为人类设计的。在文件系统中共享和管理文件很难以编程方式处理。处理文件流和可能的边界情况很容易出错,需要花费大量的时间和精力。

为了绕过这一切,需要一些新的东西。从头开始设想,始终关注新的需求。这导致了对象存储。

相关文章:

  • 【AI】PyTorch入门(二):训练与预测
  • 【网络服务数据库教程】04 Linux文件服务器 - Samba
  • 让我们谈谈密码哈希
  • 写完Numpy100道基础练习题后的错误总结和语法总结
  • 《算法导论》12.3 插入和删除
  • C++与C的区别终于说清楚了!
  • 前端面试知识查漏补缺
  • WEIXIN day_02(8.17) 小程序的组件库
  • 社区交友源码 支持聊天私聊-礼物系统-直播系统-缘分匹配+搭建教程
  • Reactor 之 手把手教你 Spring Boot 整合 Reactor
  • 【42STL-函数对象使用详情】
  • LVS-Nat模式实战
  • java毕业设计基于的测试项目管理平台Mybatis+系统+数据库+调试部署
  • 对于钾,钙,锌,铁,钠,镁金属离子荧光探针的详细知识整理如下
  • Soft Actor-Critic(SAC算法)
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【RocksDB】TransactionDB源码分析
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  •  D - 粉碎叛乱F - 其他起义
  • HTML-表单
  • Tornado学习笔记(1)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 飞驰在Mesos的涡轮引擎上
  • 简单基于spring的redis配置(单机和集群模式)
  • 强力优化Rancher k8s中国区的使用体验
  • 使用 @font-face
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 物联网链路协议
  • 与 ConTeXt MkIV 官方文档的接驳
  • FaaS 的简单实践
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #162 (Div. 2)
  • #大学#套接字
  • (C++17) optional的使用
  • (C++17) std算法之执行策略 execution
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (力扣)循环队列的实现与详解(C语言)
  • (三分钟)速览传统边缘检测算子
  • (一)RocketMQ初步认识
  • (一一四)第九章编程练习
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)负载均衡,回话保持,cookie
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core 中插件式开发实现
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • /etc/skel 目录作用
  • @FeignClient注解,fallback和fallbackFactory
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce