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,搭建一个在线教育视频课程分享网站。
相关文章
|
18天前
|
弹性计算 监控 负载均衡
|
2月前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
|
3月前
|
JavaScript 前端开发 中间件
构建高效后端服务:Node.js与Express框架的完美搭档
【8月更文挑战第28天】在追求高性能、可扩展和易维护的后端开发领域,Node.js和Express框架的组合提供了一种轻量级且灵活的解决方案。本文将深入探讨如何利用这一组合打造高效的后端服务,并通过实际代码示例展示其实现过程。
|
1月前
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
19天前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准,存储、流量和请求等多个计费项
阿里云对象存储OSS提供按量付费与包年包月两种计费方式,涵盖存储、流量、请求等费用。标准存储按量付费0.09元/GB/月,包年包月40GB起售,价格9元/年。公网流量出方向收费,内网及上传免费。具体费用视使用情况而定,详情见官网。
151 0
|
2月前
|
Java API 对象存储
微服务魔法启动!Spring Cloud与Netflix OSS联手,零基础也能创造服务奇迹!
这段内容介绍了如何使用Spring Cloud和Netflix OSS构建微服务架构。首先,基于Spring Boot创建项目并添加Spring Cloud依赖项。接着配置Eureka服务器实现服务发现,然后创建REST控制器作为API入口。为提高服务稳定性,利用Hystrix实现断路器模式。最后,在启动类中启用Eureka客户端功能。此外,还可集成其他Netflix OSS组件以增强系统功能。通过这些步骤,开发者可以更高效地构建稳定且可扩展的微服务系统。
56 1
|
2月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
154 9
|
3月前
|
JavaScript 安全 API
构建高效后端服务:RESTful API 设计与实现
【8月更文挑战第31天】在数字化时代,一个清晰、高效且安全的后端服务是应用程序成功的关键。本文将深入探讨如何设计并实现一个遵循REST原则的API,确保服务的可扩展性和维护性。我们将从基础概念出发,逐步引入真实代码示例,展示如何利用现代技术栈创建高性能的后端服务。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用的技巧。
|
3月前
|
存储 SQL 缓存
深入浅出:构建高效后端服务的五大原则
在数字化浪潮中,后端服务作为技术架构的核心,承载着数据处理和业务逻辑的重要任务。本文将深入探讨如何构建一个高效、稳定且可扩展的后端服务,从五个关键原则出发,带领读者一步步理解并实践这些原则,以确保后端系统能够灵活应对各种挑战。
|
3月前
|
监控 JavaScript 前端开发
深入浅出Node.js: 打造高效的后端服务
【8月更文挑战第27天】在这个数字化飞速发展的时代,后端技术成为支撑互联网服务的基石。Node.js作为其中的佼佼者,以其非阻塞I/O模型、事件驱动架构和丰富的生态系统,赢得了开发者的青睐。本文将带领读者深入理解Node.js的核心概念,通过实际案例分析其应用模式,并探讨如何利用Node.js构建高效、可扩展的后端服务。无论你是初学者还是有经验的开发者,都能在这篇文章中找到提升你的Node.js技能的灵感和知识。

热门文章

最新文章

下一篇
无影云桌面