使用serverless实现从oss下载文件并压缩

这篇具有很好参考价值的文章主要介绍了使用serverless实现从oss下载文件并压缩。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        公司之前开发一个网盘系统, 可以上传文件, 打包压缩下载文件, 但是在处理大文件的时候, 服务器遇到了性能问题, 主要是这个项目是单机部署.......(离谱),  然后带宽只有100M, 现在用户比之前多很多, 然后所有人的压缩下载请求都给到这一台服务器了, 比如多个人下载的时候带宽问题, 服务器内存占用问题, 下载速度和没开会员的百度云网盘有一拼, 用户苦不堪言,

        所以考虑到使用阿里的 serverless 函数计算, 把从OSS的下载和压缩, 以及压缩后的客户端对文件下载, 这些压力全给到 serverless

一.  使用的阿里云 serverless 函数计算 FC 

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

        使用之前我们需要开发一个传统的 springboot 项目,  代码没什么保密的东西, 都是抄的chatgpt, 项目地址 :   GitHub - canxiusi/zip-to-oos

        拉下来就可以直接运行的那种, 需要在配置文件里补全你的OSS信息

 1. 之后我们把项目打成jar包, 并压缩成zip

 2. 之后登录阿里云的 serverless, 再服务列表点击创建服务

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

3. 然后在自动弹出的页面中点击创建函数

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

4. 选择第二个, 使用springboot项目, 的zip压缩包上传

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

5.  这里一定要勾选 处理HTTP请求, 因为我们这是传统的 springboot 项目, 手白了就是 controller 层要接收上游系统的请求

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

 6. 运行环境选择 java8, 把项目的zip压缩上传上去, 启动命令就是 java -jar, 注意带上 jvm 的运行参数 

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

7. 高级配置这里直接把配置拉满, 市区选择北京/上海时间

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

8. 触发器这里选择支持的请求方式, 就是接口上 @PostMapping, @GetMapping 一类的, 签名根据自己的需要配置

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

9. 在函数详情页面点击测试函数, 这里就是请求 controller 我们定义的接口

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

10. 在触发器管理页面, 我们可以看到函数的外网请求地址, 这样我们就可以在其他项目调用接口了

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

11. 调用方系统请求serverless的部分代码

 因为这里要压缩的文件比较大, 所以在请求头这里设置了异步请求

        异步请求 serverless, 把OSS的文件路径和调用方系统回调地址作为参数

        后续就是等待 serverless 从OSS下载并压缩文件后, 通过http请求, 把 zip 文件在 serverless 的临时路径返回给调用方系统, 调用方系统进行入库处理, (这里没在内存做压缩, 因为文件过大会OOM)

        调用方系统通过客户端轮询请求, 查询临时文件路径存不存在, 在拿到临时文件的路径后, 再重定向到 serverless 直接下载文件

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

         下图的 controller 其实就是 serverless 在处理完 zip 文件后的回调地址, 逻辑就是把 serverless 的 zip 文件的路径入库

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

   

         下图的 downloadZipFile 就是前面的 serverless 的外网请求地址, 加上 serverless 部署的代码的 controller 层, 根据文件路径下载文件的接口路径

使用serverless实现从oss下载文件并压缩,serverless,云原生,java

        经过测试, serverless 的请求处理速度还是很快的, 因为和OSS对接有专网, (这个要注意 servereless 的地域要和 OSS 的地域一样)

        5个gb的零零散散的文件, 有很多文件路径,  逐个请求OSS下载, 再把文件流写入到磁盘临时文件, 然后返回给调用方系统临时文件的路径, 大概花费了4分多, 注意这里只是返回了在 serverless 的压缩包的临时文件路径, 后续要再次通过重定向到 serverless 的下载文件接口, 下载临时文件

使用serverless实现从oss下载文件并压缩,serverless,云原生,java文章来源地址https://www.toymoban.com/news/detail-608586.html

到了这里,关于使用serverless实现从oss下载文件并压缩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端实现下载文件(包含压缩包下载)方式汇总

    默认最简单的下载方式是: window.open(后台接口API路径) ,但该方法弊端:因是新开窗口方式,前端展示上,每次会闪下。 此外,如果使用window.open(文件URL)方式: pdf、office文档、psd:直接下载。 图片、txt:新开窗口预览,不会下载;且txt预览,有时出现中文乱码问题。 一、

    2024年02月10日
    浏览(40)
  • 阿里云OSS对象存储使用临时URL访问,并对下载文件重命名

    如何使用临时授权的url访问云对象地址,又如何通过该URL下载自定义的文件名。 下面是两个内容点: 1.直接获取临时url,这个跟官方的差不多,基本上照搬即可。 2.获取临时url,并且可以对下载文件重命名。 java SDK版本 3.5.0 官方文档 oss java sdk 举例 直接使用临时URL访问,这里可

    2024年02月09日
    浏览(40)
  • Vue3 - 超详细 “纯前端“ 将阿里云 OSS 存储文件删除教程,支持单个 / 批量删除各种图片图像、文档、音视频文件、压缩包等文件(附完整示例运行源码,保证新手小白 100% 轻松实现删除功能)

    如果您需要纯前端将文件上传到阿里云 OSS,请访问:这篇文章。 本文站在新手的角度, 在 vue3 项目开发中,超详细 “纯前端(无需后端)” 删除阿里云oss文件,支持单个删除或批量删除oss存储上的各种图片图像、文档、音视频文件、压缩包等文件, 你可以直接复制示例源

    2024年01月18日
    浏览(44)
  • Spring Boot实现对超大文件进行异步压缩下载

     在Web应用中,文件下载功能是一个常见的需求,特别是当你需要提供用户下载各种类型的文件时。本文将演示如何使用Spring Boot框架来实现一个简单而强大的文件下载功能。我们将创建一个RESTful API,通过该API,用户可以下载问价为ZIP压缩文件。 首先,确保你已经创建了一个

    2024年02月07日
    浏览(41)
  • java 批量下载将多个文件(minio中存储)压缩成一个zip包

    我的需求是将minio中存储的文件按照查询条件查询出来统一压成一个zip包然后下载下来。 思路:针对这个需求,其实可以有多个思路,不过也大同小异,一般都是后端返回流文件前端再处理下载,也有少数是压缩成zip包之后直接给下载链接返回到前端,前端收到链接url直接

    2024年02月10日
    浏览(42)
  • 使用hutool工具,对多文件下载进行打包下载,这里使用的是zip压缩算法。

    参考以下博主: Java实现文件下载zip包单文件等_java下载zip文件_liu.kai的博客-CSDN博客 先将需要压缩的文件们打包在一块生成一个临时压缩包 将这个临时的压缩包,以单文件下载的方式,给前端响应过去 删除临时的压缩包

    2024年02月04日
    浏览(70)
  • vue3利用 a 标签,文件流,JSZip 压缩包,实现文件下载

    在实现文件的下载,采用 a 标签,会出现图片,没有进行下载,而是,在当前页面打开了图片。 导致原因: ·a标签,有 download 属性,可以实现下载 同源文件( ip 和 端口 相同),当图片不同源 时,点击下载,会在当前窗口直接打开图片,而不是进入下载状态。 1.1 没有图片

    2023年04月08日
    浏览(30)
  • 使用Java实现远程文件下载到本地目录

    今天开发时遇见了一个下载附件的需求,他的附件是存在一个网盘里查询时只是给我返回了一个https的路径,需要通过这个路径把附件下载到本地的目录里 这里我使用的是网上搜索的图片路径做了一下测试仅供参考 如正文介绍 使用Java实现远程文件下载到本地目录记录就到此

    2024年02月12日
    浏览(39)
  • 完整教程:Java+Vue+Websocket实现OSS文件上传进度条功能

    文件上传是Web应用开发中常见的需求之一,而实时显示文件上传的进度条可以提升用户体验。本教程将介绍如何使用Java后端和Vue前端实现文件上传进度条功能,借助阿里云的OSS服务进行文件上传。 后端:Java、Spring Boot 、WebSocket Server 前端:Vue、WebSocket Client 安装依赖 UploadF

    2024年02月05日
    浏览(73)
  • 使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载

    使用hutool工具对多文件进行打包压缩并下载 需求 工作中遇到需要将详情页面数据导出为word,同时详情中有图片和附件,由于附件没法写入到word中(可能是自己没有找到对应的解决办法) , 故将需要导出的word文件,和附件一同打包成zip,进行下载 实现 共两个步骤 1 . 使用hutool对多文

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包