认清现实,放弃幻想,准备斗争
阿里云存储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) 设计的,而是为人类设计的。在文件系统中共享和管理文件很难以编程方式处理。处理文件流和可能的边界情况很容易出错,需要花费大量的时间和精力。
为了绕过这一切,需要一些新的东西。从头开始设想,始终关注新的需求。这导致了对象存储。