优化策略:企业海量文件传输事件处理(下)

在探讨了文件传输事件通知的重要性之后,本文将着重阐述镭速技术如何通过策略优化来增强企业处理大规模文件传输任务的能力。

大规模文件传输的挑战

在初期设计事件通知功能时,为了迅速适应市场需求,并未充分考虑各种可能性,而是采用了单一的生产者与消费者模式。镭速(私有化部署方案,也可接入公有云,企业、社会组织用户可申请免费试用)在文件传输服务和web应用服务中实现了功能叠加,其中文件传输服务负责生成事件,而web应用服务则负责接收和处理这些事件。服务间通过http协议发布事件任务,如下图所示:

大规模文件传输事件流程

这种设计在文件传输量较小、事件稀少时,由于web应用服务的请求负载较低,服务能够稳定运行。然而,在持续的大量文件上传,尤其是众多小文件的上传/下载场景中,镭速传输服务在8C16G的配置下能处理每秒5000+文件的传输,这导致瞬时上报请求激增,事件处理进程任务繁重,web服务器负载过高,甚至影响到web服务对实时请求的响应速度,事件处理速度减缓。

例如,在大量小文件通知的场景下,每秒需进行数百次通知,单个事件处理服务的并发处理能力有限,处理缓慢可能导致事件积压,内存占用增大,影响整个web应用服务的正常运作。经过深入分析,我们识别出以下五个主要问题:

事件请求的单次数据结构冗余,上报并发请求过于频繁,给事件接收web服务带来较大压力;

事件接收的web服务与用户前台的所有请求接口位于同一web应用服务器上,共享线程池,在高并发环境下处理响应缓慢;

http请求采用短连接方式,在高并发情况下频繁建立和断开连接,消耗较多资源和处理时间,增加了web服务的负载;

Python本身的并发处理能力较弱,事件处理占用大量线程资源,导致其他接口请求处理速度下降;

使用sqlite数据库时,频繁的读写操作容易导致全局锁表,使得部分应用请求处理异常。

针对这些问题,我们对事件功能的设计进行了全面优化,具体改进措施如下:

事件生产端:

对事件生成(文件服务)的请求频率进行优化,对非实时事件请求进行合并处理,将多次请求合并为一次,减少了事件发布的请求次数。

事件接收/事件处理:

将事件接收和处理从web应用服务中分离出来,创建独立进程(event程序),并设置独立端口,通过服务分离减轻web应用服务的负载压力。

减少事件接口的直接操作,将待处理的事件数据入队,转移到后台进行处理,以提高接口响应速度。

采用长连接方式,减少连接建立和断开的开销,以提升性能和效率。

利用多消费者模式,在linux环境下通过多进程启动多个event程序,显著提升接口和事件处理的效率。采用协程方式处理大量事件操作,增强单进程的处理能力。

将上报数据的提交方式从即时提交改为定时批量提交至数据库,避免频繁的数据提交,减少数据库并发。

优化后的流程如下图所示:

通过实施上述方案,测试结果表明,系统现在能够每秒处理数千条事件响应,优化效果显著,大幅提升了事件处理能力,有效应对了大规模文件传输事件的处理需求,同时也改善了用户体验。企业用户可以更有效地利用事件通知功能来完成自定义的自动化任务。

总结

优化企业处理大规模文件传输事件的策略对于提高企业运营效率至关重要。通过全面的技术优化和流程改进,企业能够更好地适应数据量的增长,确保文件传输的安全性和高效率。这不仅有助于保护数据安全,还能提升企业的整体运营效率,为企业的持续发展打下坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/534141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于UCG游戏平台的一些思考

UCG游戏平台,全称User Generated Content,即用户生成内容。它涵盖了所有玩家可以自主编辑的部分,包含并不限于换装、捏脸、关卡摆放等内容。 UCG概念在最近又火了起来,但这个模式出现的并不早。早在10多年前,war3编辑器…

查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用,使用top命令查看cpu使用率长时间50%以上,cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己,top命令无法查看到挖矿病毒进程,可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

手动实现简易版RPC(上)

手动实现简易版RPC(上) 前言 什么是RPC?它的原理是什么?它有什么特点?如果让你实现一个RPC框架,你会如何是实现?带着这些问题,开始今天的学习。 本文主要介绍RPC概述以及一些关于RPC的知识,为…

UI设计解析:入门必读,透彻理解UI的核心概念

UI用户界面是什么? UI是用户界面的缩写。UI是用户与设备、网站或应用程序交互的媒介。目标是使用户体验简单直观。用户只需尽量得到预期的结果。 用户界面是建立在吸引人类感官(视觉、触觉、听觉等)的交互层中的。它不仅包括键盘、鼠标、触…

Linux系统概述与安装

Linux的介绍 Linux内核 Linux内核是 Linux 操作系统主要组件,也是计算机硬件与其软件之间的交互入口。它负责两者之间的通信,还要尽可能高效地管理资源 Linux Shell shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口 Linux文…

kubekey 离线安装harbor、k8s、kubesphere

目录 参考文献 前提条件 部署准备 下载kubukey 离线包配置和制作 配置离线包 制作离线包 离线安装集群 复制KubeKey 和制品 artifact到离线机器 创建初始换、安装配置文件 安装镜像仓库harbor 初始化harbor 项目 修改配置文件 安装k8s集群和kubesphere 手动安装依…

子域名是什么?有什么作用?

在互联网世界中,域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名,其中有些大型公司的网站还不止一个域名,除了主域名外还拥有子域名。有些人感到非常困惑,不知道子域名是什么。其实子域名也就是平时所说的二级域…

AI绘本生成解决方案,快速生成高质量的AI绘本视频

美摄科技凭借其深厚的技术积累和前瞻性的市场洞察力,近日推出了一款面向企业的AI绘本生成解决方案,旨在通过智能化、自动化的方式,帮助企业快速将文字内容转化为生动有趣的绘本视频,从而提升内容传播效率,增强品牌影响…

openssl密钥证书管理(Key and Certificate Management)

前言 前两日应别人要求提供一份CSR文件过去,方便他们生成相关证书,对于这一块本来也不熟,于是找到openssl官网,想找找相关的教程看看,一番小找,果有收获,是个宝藏,源文档在这…

AI 对话完善【人工智能】

AI 对话【人工智能】 前言版权开源推荐AI 对话v0版本:基础v1版本:对话数据表tag.jsTagController v2版本:回复中textarea.jsChatController v3版本:流式输出chatLast.jsChatController v4版本:多轮对话QianfanUtilChat…

1、Qt UI控件 -- qucsdk

前言:Qt编写的自定义控件插件的sdk集合,包括了各个操作系统的动态库文件以及控件的头文件和sdk使用demo。类似于Wpf中的LivChart2控件库,都是一些编译好的控件,可以直接集成到项目中。该控件是飞扬青云大神多年前开发的&#xff0…

从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南

文章目录 一、写组件1、注册全局组件方法2、组件13、组件2 二、测试三、发布1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和更新2、注意事项 一、写组件 确定组件库的需求和功能:在开始构建组件库之前&#xff0c…

三相整流桥器件选型计算方法-电压与电流计算公式

三相整流桥的选型主要涉及到两个关键参数:电压和电流。以下是电压与电流的计算公式及选型方法: 电压计算: 输入交流电压有效值(Vrms)是选择整流桥的重要参考。整流桥的额定电压(Vrrm)应至少为输…

echarts tooltip提示框显示不全

一、背景: 写在前面: 自行封装。一个可由多个柱形图叠加而成的图表,命名为someHoverLine(可自定义)。 下面罗列了移动端和web端的封装组件代码; 展示了vue2、uniapp、vue3的不同封装和使用案列。 二、问题描述: 三、解…

数组常用方法

for循环 使用计数器变量来迭代数组元素 var arr [1,2,3,4,5]for(var i0;i<arr.length;i){console.log(array[i]) }上面的i就是计数器变量&#xff0c;初始值为0&#xff0c;每次循环后加1&#xff0c;直到i等于数组长度为止。在循环体内&#xff0c;可以通过数组索引arr[…

C 强制类型转换

强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#xff0c;如下所示&am…

攻防演练 | redis艰难写shell进入内网

背景 某地市级攻防演练 要求 拿到指定单位的靶标系统&#xff08;必须是web后台管理权限数据库服务器&#xff09; 正式开始 redis未授权 首先通过信息收集获取到了一些IP&#xff0c;且发现一个IP中存在redis未授权。 此时兴冲冲的去尝试写入定时任务反弹shell&#xff…

淘宝评论数据API接口:洞察消费者声音的关键工具

淘宝评论数据API接口&#xff1a;洞察消费者声音的关键工具 请求示例&#xff0c;API接口接入Anzexi58 随着电子商务的蓬勃发展&#xff0c;消费者对于商品的评价和反馈成为了购物决策中不可或缺的一部分。淘宝作为中国最大的电商平台之一&#xff0c;汇聚了海量的商品和评论数…

【SpringBoot】-- mapstruct进行类型转换时Converter实现类不能自动生成代码问题解决

问题描述 我的问题如下&#xff1a; 应该在红色区域生成对应的转换细节&#xff0c;但是这里只返回了一个空对象 问题解决 加入lombok-mapstruct-binding依赖,也要注意依赖引用顺序问题 <dependency><groupId>org.projectlombok</groupId><artifactId&…