当前位置: 首页 > news >正文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   

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

 

         重定向的下载路径就是这个样子了, 这样从OSS下载打包成压缩文件, 和后面的客户端下载压缩文件, 的压力都给到了 serverless

https://(这里是你的函数计算的外网请求地址, 后面是controller层的接口路径, 带上临时文件的路径) /zipServicePlatform/downloadZipFile?filePath=/tmp/c2090e89-a8fe-4f2d-b1fb-2ba185f44801730030168136097284.zip

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

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

相关文章:

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

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

从上到下打印二叉树

题目描述 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 算法思想 建立一个vector数组ret用来当做返回的结果数组,建立一个队列用来接收二叉树…...

【推荐】排序模型的调优

【推荐】排序模型的调优 排序模型的选择 排序模型常见的训练方式 样本类别不均衡处理尝试 欠拟合 过拟合 其他问题 排序模型的选择 LR,GBDT,LRGBDT,FM/FFM, 深度模型(wide & deep,DeepFM&#x…...

负载均衡安装配置详解

负载均衡(Load Balancing)是一种将网络流量分布到多个服务器上的技术,以提高系统的性能、可靠性和可扩展性。 在负载均衡中,有一个负载均衡器(Load Balancer),它充当了传入请求的前置接收器。当…...

Java-逻辑控制

目录 一、顺序结构 二、分支结构 1.if语句 2.swich语句 三、循环结构 1.while循环 2.break 3.continue 4.for循环 5.do while循环 四、输入输出 1.输出到控制台 2.从键盘输入 一、顺序结构 按照代码的书写结构一行一行执行。 System.out.println("aaa"); …...

UE 透明渲染次序

附加顺序 用最外面的球, 依次附加里面的球 最后附加的物体优先级最高 附加顺序 用最里面的球, 依次附加外面的球 这样渲染顺序就对了...

【C++】多态原理剖析,Visual Studio开发人员工具使用查看类结构cl /d1 reportSingleClassLayout

author:&Carlton tag:C topic:【C】多态原理剖析,Visual Studio开发人员工具使用查看类结构cl /d1 reportSingleClassLayout website:黑马程序员C tool:Visual Studio 2019 date:2023年7月24日 目…...

vue实现flv格式视频播放

公司项目需要实现摄像头实时视频播放,flv格式的视频。先百度使用flv.js插件实现,但是两个摄像头一个能放一个不能放,没有找到原因。(开始两个都能放,后端更改地址后不有一个不能放)但是在另一个系统上是可以…...

iptables安全技术和防火墙

防火墙:隔离功能 位置:部署在网络边缘或主机边缘,在工作中,防火墙的主要作用是决定哪些数据可以被外网访问以及哪些数据可以进入内网访问,主要在网络层工作 其他类型的安全技术:1、入侵检测系统 2、入侵…...

微信小程序开发5

一、自定义组件-插槽 1.1、什么是插槽 在自定义组件的wxml结构中&#xff0c;可以提供一个<slot>节点(插槽)&#xff0c;用于承载组件使用者提供的wxml结构 1.2、单个插槽 在小程序中&#xff0c;默认每个自定义组件中允许使用一个<slot>进行占位&#xff0c;这种…...

【算法题】2681. 英雄的力量

题目&#xff1a; 给你一个下标从 0 开始的整数数组 nums &#xff0c;它表示英雄的能力值。如果我们选出一部分英雄&#xff0c;这组英雄的 力量 定义为&#xff1a; i0 &#xff0c;i1 &#xff0c;… ik 表示这组英雄在数组中的下标。那么这组英雄的力量为 max(nums[i0],n…...

fastutil简单测试下性能

前言 简单测试一下fastutil的实现和Java类库实现的速率。 使用jmh进行测试。 简单解释一下&#xff0c;每轮测试预热2次&#xff0c;每次1s&#xff1b;实测2次&#xff0c;每次1秒。 进行5轮测试。数组大小3种。 package fastutil;import it.unimi.dsi.fastutil.ints.IntArr…...

【FAQ】关于无法判断和区分用户与地图交互手势类型的解决办法

一&#xff0e; 问题描述 当用户通过缩放手势、平移手势、倾斜手势和旋转手势与地图交互&#xff0c;控制地图移动改变其可见区域时&#xff0c;华为地图SDK没有提供直接获取用户手势类型的API。 二&#xff0e; 解决方案 华为地图SDK的地图相机有提供CameraPosition类&…...

腾讯云裸金属服务器CPU型号处理器主频说明

腾讯云裸金属服务器CPU型号是什么&#xff1f;标准型BMSA2裸金属服务器CPU采用AMD EPYC ROME处理器&#xff0c;BMS5实例CPU采用Intel Xeon Cooper Lake处理器&#xff0c;腾讯云服务器网分享落进书房武器CPU型号、处理器主频说明&#xff1a; 裸金属服务器CPU处理器说明 腾讯…...

工程安全监测无线振弦采集仪在建筑物中的应用

工程安全监测无线振弦采集仪在建筑物中的应用 工程安全监测无线振弦采集仪是一种用于建筑物结构安全监测的设备&#xff0c;它采用了无线传输技术&#xff0c;具有实时性强、数据精度高等优点&#xff0c;被广泛应用于建筑物结构的实时监测和预警。下面将从设备的特点、应用场…...

【iOS】isKindOfClass和isMemberOfClass方法

前言 这个归根结底还是在考察我们对isa走向图和类的继承的理解&#xff0c;也就是苹果官方这幅图&#xff1a; 接下来的函数调用流程请参考这张图。 1 isKindOfClass方法 1.1 objc_opt_isKindOfClass C函数 查看源码可发现&#xff0c;无论是谁调用isKindOfClass方法都会…...

李飞飞「具身智能」VoxPoser:0预训练完成复杂指令

机器人接入大模型听懂人话 论文地址&#xff1a; https://voxposer.github.io/voxposer.pdf 项目主页&#xff1a; https://voxposer.github.io/ 参考链接&#xff1a; [1]https://twitter.com/wenlong_huang/status/1677375515811016704 [1]https://www.amacad.org/publicatio…...

前端八股文

info 毕业设计(课题、方向 本科毕业设计&#xff1a;家庭医生签约管理系统后台开发(微信小程序) 硕士课题&#xff1a;医学图像分割(婴儿脑分割) 51062319991129351X 邮编 重庆市南岸区 400000 13183849783 // 18728097929 // 13158442955 中国广电四川网络股份有限公司中江…...

前端年度工作述职报告优秀

前端年度工作述职报告优秀篇1 尊敬的各位领导、各位同仁&#xff1a; 大家好!按照20__年度我公司就职人员工作评估的安排和要求&#xff0c;我认真剖析、总结了自己的工作情况&#xff0c;现将本人工作开展情况向各位领导、同仁做以汇报&#xff0c;有不妥之处&#xff0c;希…...

【MyBatis 学习一】认识MyBatis 第一个MyBatis查询

目录 一、认识MyBatis 1、MyBatis是什么&#xff1f; 2、为什么要学习MyBatis? 二、配置MyBatis环境 1、建库与建表 2、创建新项目 3、xml文件配置 &#xff08;1&#xff09;配置数据库连接 &#xff08;2&#xff09;配置 MyBatis 中的 XML 路径 三、测试&#x…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...