什么是 Serverless?
Serverless 是一种云计算架构风格,其核心思想是让开发者专注于业务逻辑的实现而非底层基础设施的管理。相比于传统的云计算方式,Serverless 具有以下优势:
- 无需关心服务器管理:传统云计算需要开发者自行管理服务器资源,配置环境等,而 Serverless 只需要上传代码和配置文件即可,所有底层资源由云厂商管理。
- 按需付费:Serverless 仅在被使用时才付费,没有使用完全不收费,减少了浪费和成本。
- 自动伸缩:Serverless 可以根据业务负载自动伸缩资源,无需手动调整服务器规模。
本地存储转云存储
在传统的应用开发中,文件通常会存储在本地磁盘上。但是,随着互联网业务规模的增长,本地磁盘容量可能不足以支持大规模的文件存储。此时,就需要考虑将文件存储到云存储中。传统的做法是自行搭建文件服务器,但是需要花费一定的时间和成本,同时面临伸缩、备份等问题。
在 Serverless 架构下,可以利用云存储服务提供商的存储服务来实现本地存储转云存储,完全摆脱对服务器的依赖。
下面以阿里云 OSS 为例,介绍如何使用 Serverless 将本地文件存储到云存储中。
阿里云 OSS
阿里云 OSS(Object Storage Service)是一种对象存储服务,可以无限扩容,高可用性,强一致性,同时提供各种安全控制和权限管理等功能。使用阿里云 OSS,可以快速实现文件存储、应用数据备份或归档等需求。
Serverless 原理
在 Serverless 架构下,我们使用阿里云函数计算(Function Compute)来实现本地存储转云存储的功能。Function Compute 可以将我们编写的函数转化为一个独立的服务,不需要关注服务器的规模和部署,只需要上传代码和配置文件即可。
具体过程如下:
- 前端应用将需要存储的文件提交到后端,后端将文件上传至本地服务器。
- 前端应用向 Serverless 服务端发送请求,将文件上传并存储至阿里云 OSS。
- Serverless 服务端将请求转化为一个函数调用,将本地文件读取后上传至阿里云 OSS。
- 完成上传操作后,返回上传结果给前端应用。
操作步骤
1. 创建 OSS 存储空间
登录阿里云官网,进入对象存储(OSS)控制台。在控制台中创建一个存储空间,设置存储空间的访问权限。
2. 开通函数计算
在阿里云函数计算(Function Compute)控制台中开通该服务。
3. 创建函数
在控制台中创建一个函数,将该函数与 OSS 存储空间相关联。同时,将函数所需的配置信息(例如 OSS 的 endpoint、accessKeyId、secretAccessKey 等)保存至函数的环境变量中。
示例代码:
-- -------------------- ---- ------- --------------- - -------- ------- -------- --------- - ----- --- - ------------------- ----- ------ - ----------------- ----- ------ - -------- ----- ---------- ----------------- -- ------ --------------- ----- ------ - --- ----- ------- ------------------------ ------- ------------------- ------------ -------------------------- ---------------- ----------------------------- -- ------------- -------- -------- ----- - -- ----- - ------------------ ------ ------------- ----- - ----------------- -------- -- -------- ----- -------- - ----------------------- ----- -------- - --------------- -------------------- -------------------- -- - ----------------- -------- -- ----- ------ -------------- ---- -------------- -- - ------------------ ------ ------------- ----- -- -- -
4. 部署函数
将函数部署至阿里云函数计算上。部署完成后,可以获取到该函数的入口 URL。
5. 调用函数
在前端应用中,可以通过发送 HTTP 请求的方式调用该函数。请求参数中需要包含文件的信息(例如文件名、文件类型、文件大小等),调用函数后,可以获取到文件在 OSS 中的存储路径。
示例代码:
axios.post('yourFunctionUrl', {fileName: file.name, fileType: file.type, fileSize: file.size, filePath: file.path}) .then(response => { console.log(response.data.path) }) .catch(error => { console.error(error) })
总结
通过 Serverless 的方式实现本地存储转云存储,可以摆脱服务器管理的繁琐,同时也可以降低成本,使应用部署更加简单和稳定。阿里云对象存储服务提供商 OSS 能够无限扩容,高可用性,实现了文件存储、应用数据备份或归档等需求,为开发者提供了强大的支持。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6471a9c8968c7c53b0f8d876