OSS服务进行后端的存储附件

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: OSS服务进行后端的存储附件

当操作完OSS的流后,需要关闭对应的流,否则会造成资源泄漏或者占用服务资源过多。关闭流的方式如下:

```java

if (inputStream != null) {

   try {

       inputStream.close();

   } catch (IOException e) {

       e.printStackTrace();

   }

}

if (outputStream != null) {

   try {

       outputStream.close();

   } catch (IOException e) {

       e.printStackTrace();

   }

}

```

关于OSS连接池的使用,推荐使用Alibaba Cloud SDK for Java中提供 OSSClientBuilder 来构建连接池的连接。在使用OSS服务时,我们一般都需要创建 OSSClient 实例,而 OSSClient 并不是线程安全的,所以需要使用连接池来减少每个线程创建的 OSSClient 实例和连接数。 示例代码如下:

```java

import com.aliyun.oss.OSSClient;

import com.aliyun.oss.OSSClientBuilder;

import com.aliyun.oss.common.auth.DefaultCredentialProvider;

import com.aliyun.oss.common.comm.Protocol;

import com.aliyun.oss.common.utils.AuthUtils;

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.ArrayBlockingQueue;

import java.util.concurrent.BlockingQueue;

import java.util.concurrent.TimeUnit;

public class OSSClientPool {

   // 连接池最大连接数

   private static int DEFAULT_MAX_CONNECTIONS = 100;

   // 默认的空闲时间(单位:毫秒)

   private static long DEFAULT_IDLE_TIMEOUT = 5 * 60 * 1000;

   // OSS连接池

   private BlockingQueue<OSSClient> ossClientPool = new ArrayBlockingQueue<OSSClient>(DEFAULT_MAX_CONNECTIONS);

   // OSS连接池中最多使用的连接数

   private int maxConnections;

   // OSS连接池中空闲连接的超时时间

   private long idleTimeout;

   // 构造函数

   public OSSClientPool() {

       this(DEFAULT_MAX_CONNECTIONS, DEFAULT_IDLE_TIMEOUT);

   }

   public OSSClientPool(int maxConnections, long idleTimeout) {

       this.maxConnections = maxConnections;

       this.idleTimeout = idleTimeout;

       initialize();

   }

   // 初始化OSS连接池

   private void initialize() {

       for (int i = 0; i < maxConnections; i++) {

           OSSClient ossClient = buildOSSClient();

           if (ossClient != null) {

               ossClientPool.add(ossClient);

           }

       }

   }

   // 构建OSSClient实例

   private OSSClient buildOSSClient() {

       String endpoint = "yourEndPoint"; // 替换成自己的endpoint

       String accessKeyId = "yourAccessKeyId"; // 替换成自己的accessKeyId

       String accessKeySecret = "yourAccessKeySecret"; // 替换成自己的accessKeySecret

       boolean isCname = false; // 非CNAME模式

       OSSClient ossClient = null;

       try {

           ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

           ossClient.setEndpoint(endpoint);

           ossClient.setCredentials(new DefaultCredentialProvider(accessKeyId, accessKeySecret, null));

           ossClient.setProtocol(Protocol.HTTPS);

           ossClient.setTimeout(30000);

       } catch (Exception e) {

           e.printStackTrace();

       }

       return ossClient;

   }

   // 获取OSSClient连接

   public OSSClient getOSSClient() {

       OSSClient ossClient = null;

       try {

           ossClient = ossClientPool.poll(idleTimeout, TimeUnit.MILLISECONDS);

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

       if (ossClient == null) {

           ossClient = buildOSSClient();

       }

       return ossClient;

   }

   // 释放OSSClient连接

   public boolean releaseOSSClient(OSSClient ossClient) {

       return (ossClientPool.add(ossClient) || ossClientPool.offer(ossClient));

   }

   // 销毁OSS连接池

   public void destroy() {

       List<OSSClient> list = new ArrayList<OSSClient>();

       ossClientPool.drainTo(list);

       for (OSSClient ossClient : list) {

           ossClient.shutdown();

       }

   }

}

```

通过上述的方式,我们可以方便地使用OSS服务进行后端的存储附件。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
打赏
0
0
0
0
11
分享
相关文章
AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据
阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,是用户在云上存储的高性价比选择…
StrmVol存储卷:如何解锁K8s对象存储海量小文件访问性能新高度?
如何提升海量文件的数据读取速率,对于AI训练集管理、量化回测、时序日志分析等场景尤为重要。阿里云容器服务(ACK))支持StrmVol类型存储卷,基于底层虚拟块设备及内核态文件系统,显著降低海量小文件访问延迟。
StrmVol 存储卷:解锁 K8s 对象存储海量小文件访问性能新高度
本文介绍了阿里云容器服务(ACK)支持的StrmVol存储卷方案,旨在解决Kubernetes环境中海量小文件访问性能瓶颈问题。通过虚拟块设备与内核态文件系统(如EROFS)结合,StrmVol显著降低了小文件访问延迟,适用于AI训练集加载、时序日志分析等场景。其核心优化包括内存预取加速、减少I/O等待、内核态直接读取避免用户态切换开销,以及轻量索引快速初始化。示例中展示了基于Argo Workflows的工作流任务,模拟分布式图像数据集加载,测试结果显示平均处理时间为21秒。StrmVol适合只读场景且OSS端数据无需频繁更新的情况,详细使用方法可参考官方文档。
554 144
AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据
OSSFS 2.0通过轻量化协议设计、协程化技术及FUSE3低级API重构,实现大文件顺序读写与小文件高并发加载的显著提升,在实际测试中表现出高达数十倍的吞吐量增长。适用于机器学习训练、推理等对高带宽低延迟要求严苛的场景,同时支持静态和动态挂载方式,方便用户在ACK集群中部署使用。
266 34
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
238 12
阿里云对象存储OSS收费标准:500G存储118元1年、
阿里云对象存储OSS 2025年收费标准涵盖存储、流量及请求等费用,支持按量付费与包年包月两种模式。标准型存储按量价格为0.09元/GB/月,包年包月如9元享40GB体验价。流量费仅收取公网出方向,忙时0.50元/GB,闲时0.25元/GB。此外提供多种存储类型(低频、归档等)及流量包优惠方案,未使用功能不收费。详情见阿里云OSS官网。
2129 6
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
132 3
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
198 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
207 6
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
142 5
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡

热门文章

最新文章

AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等