JAVA对接OBS对象存储实践【玩转华为云】
【摘要】 随着云计算的快速发展,对象存储成为了一种越来越流行的数据存储方式。华为云OBS(Object Storage Service,对象存储服务)作为华为云的一项核心服务,提供了高可靠、低成本、可扩展的云存储解决方案。在云计算、大数据等领域有着广泛的应用。通过学习和使用OBS,我们可以更好地管理和存储大量的数据,提高数据的安全性和可靠性,提高工作效率和服务质量。
任务
最近金融项目上需要开发一个服务去和华为云OBS集成存储业务上的文件,此处记录一下JAVA集成华为云OBS的使用,希望对大家快速入门有所帮助。
随着云计算的快速发展,对象存储成为了一种越来越流行的数据存储方式。华为云OBS(Object Storage Service,对象存储服务)作为华为云的一项核心服务,提供了高可靠、低成本、可扩展的云存储解决方案。
一.技术选型
在众多的云存储服务厂商中,为什么要选择华为云作为项目的首选呢?
稳定可靠
海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。
超高性能
千万级TPS,2.4Gb/s单流上传、下载
安全可信
支持细粒度访问控制、加密、审计等功能
极简管理
提供控制台、命令行工具等途径管理海量对象
二. 创建对象存储空间
2.1创建华为云账号
如果您还没有华为云账号,可以先注册一个。注册成功后,登录华为云控制台,在对象存储服务(OBS)中创建一个存储桶(Bucket)。存储桶的名称必须是全局唯一的,并且符合DNS命名规范。
华为云官网地址:
https://www.huaweicloud.com/
2.2开通对象存储服务https://console.huaweicloud.com/console/?region=cn-east-3&locale=zh-cn#/obs/buy
第一次使用华为云提供有面试试用时长,可以放心使用,针对企业级用户直接购买即可。
2.3新建存储空间
点击:创建桶,选择:区域,填写:桶名称,选择:
2.4上传文件
在桶列表中,选择自己的桶,点击进入,点击上传对象,就可以把本地文件上传到桶里。
2.5获取上传密钥
首先你需要获取到华为云的(AK/SK),具体如何获取,请参考:
https://support.huaweicloud.com/api-obs/obs_04_0116.html
三.代码对接OBS
3.1 官网提供SDK开发包
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java-bundle</artifactId>
<version>[3.21.11,)</version>
</dependency>
3.2 上传测试类
import java.io.File;import java.io.FileInputStream;import java.io.IOException;
import com.obs.services.ObsClient;import com.obs.services.model.ObjectMetadata;import com.obs.services.model.PutObjectRequest;
public class UploadFileToOBS {
public static void main(String[] args) throws IOException {
// 配置OBS连接信息
String endPoint = "obs.cn-east-3 .myhuaweicloud.com";
String ak = "AccessKey";
String sk = "SecretKey";
String bucketName = "zhifu-pro ";
// 创建OBS客户端
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
// 创建上传请求
String objectKey = "my-key.zip";
File file = new File("E://1.jpg"); //待上传文件
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(file.length());
PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, new FileInputStream(file), metadata);
// 执行上传操作
obsClient.putObject(request);
// 关闭OBS客户端
obsClient.close();
}
}
首先配置了OBS连接信息,包括OBS服务的EndPoint、Access Key、Secret Key和Bucket名称。然后,创建OBS客户端,并创建上传请求。上传请求中包括要上传的文件、文件的元数据和存储桶名称等信息。最后,执行上传操作并关闭OBS客户端。
3.3 下载测试类
/**
*
*文件下载转换为二进制流
* @param url
* @return
*/
public static byte[] downloadToFile(String url){
byte[] base64Str1=null;
//截取文件名称
String objectName = url.substring(url.lastIndexOf("/")+1);
// 创建OBSClient实例。
ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endpoint);
ObsObject obsObject = obsClient.getObject(bucketName, objectName);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
try {
InputStream inStream = obsObject.getObjectContent();
byte[] buffer = new byte[1024];
int len = -1;
while((len = inStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
base64Str1= outStream.toByteArray();//变成了二进制数组
} catch (IOException ex) {
ex.printStackTrace();
}
return base64Str1;
}
需要注意的是,在实际使用中,我们还需要处理异常和关闭OBS客户端对象,以及涉及到同名文件重复问题,可以添加唯一key算法校验设置即可。在企业实际应用中,针对常用的工具类,都可以做下二次封装,包含桶对象的业务操作,实际文件数据的操作,从而简化应用使用者的难度。
总结
在本篇实践中,我们介绍了华为云OBS的概念和特点,以及如何使用Java代码将大文件上传到OBS。OBS作为一种高可用、高可靠、高性能的对象存储服务,在云计算、大数据等领域有着广泛的应用。通过学习和使用OBS,我们可以更好地管理和存储大量的数据,提高数据的安全性和可靠性,提高工作效率和服务质量。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)