如何优化企业海量文件传输事件处理呢?(下)
继上一篇文章对文件传输事件及其通知的重要性进行了探讨之后,本文将重点介绍镭速是如何通过优化策略来提升企业处理海量文件传输事件的能力。
为了快速响应市场需求,事件通知功能在设计初期并没有考虑太多因素,使用单生产单消费模式,在原有的镭速(私有化部署方案,也可接入公有云,企业、社会组织用户可申请免费试用)服务(文件传输服务,web应用服务)进行功能叠加,文件传输服务作为生产者(生产事件),web应用服务作为消费者(负责接收和处理事件),服务之间使用http方式作为事件任务的发布,如下图:
这种设计在文件传输量小文件事件少时,web应用服务请求负载低,服务还能正常稳定运行,但当持续海量文件上传,特别是在大量小文件上传/下载场景下,(镭速传输服务8C16G情况下单个传输任务能处理5000+文件每秒的上传或下载),瞬时上报请求多导致事件处理进程任务繁重,web服务器负载高,甚至影响web服务的实时请求响应慢,事件处理速度慢等情况,比如:当遇到海量小文件通知场景,每秒需要进行上千次通知,单个事件处理服务并发处理有限,如果处理慢,会导致事件堆积导致内存占用大,影响整个web应用服务等问题,经过深入分析,我们分析了以下5点原因:
i.单次事件请求数据结构冗余,事件上报并发请求过与频繁,导致事件接收web服务负载压力大;
ii.负责事件接收的web服务与用户前台所有请求接口在同一个web应用服务器中,共用线程池,高并发情况下处理响应慢;
iii.http请求使用短连接方式,高并发情况下,频繁的建立连接和断开,耗费较高的资源和处理时间,导致web服务负载压力大;
iv.本身python并发处理能力弱,当事件处理占用线程资源多容易导致其它接口请求处理慢;
v.采用sqlite数据库读写频繁容易造成全局锁表,导致一些应用请求处理异常。
为此,针对以上问题原因,我们在事件功能在设计上进行全面优化,以下是改进的方案措施:
分别为
事件生产端: i事件生成(文件服务)进行事件请求频率优化,对非实时的事件请求进行合并处理,按照一定的频率对多次请求合并为一次请求处理,减少事件发布的请求次数
事件接收/事件处理:
i事件接收,事件处理从web应用服务拆出,独立进程(event程序),独立端口,通过服务分离,减少web应用的服务负载压力 ii减少事件接口的实际操作,将需要处理的事件数据入列,放到后台处理,提升接口响应 iii.使用长连接方式,减少连接建立和断开的开销,提供更好的性能和效率
iv.使用多消费者模式,linux 使用多进程的方式启动多个event程序,成倍提升接口以及事件处理效率,采用协程的方式处理大量事件执行的相关操作,提升单进程的处理效率; v.处理上报的数据从每次提交变成定时批量提交到数据库,避免频繁提交数据,减少数据库并发
如下图:
上述方案实施后,测试结果显示每秒能处理上千条事件的响应处理,优化效果明显,成倍提升事件处理能力,轻松应对海量文件传输事件的处理,同时也提升了用户使用体验,企业用户可以更好地使用事件通知功能来完成自定义的自动化任务。
结语
优化企业海量文件传输事件处理的策略对于提升企业运营效率具有重要意义。通过全面的技术优化和管理流程改进,企业可以更好地应对数据量的增长,确保文件传输的安全和高效。这不仅有助于保障数据安全,还能够提高企业的整体运营效率,为企业的长远发展奠定坚实的基础。
本文《如何优化企业海量文件传输事件处理呢?(下)》内容由镭速-大文件传输软件整理发布,如需转载,请注明出处及链接:https://www.raysync.cn/news/post-id-1676
相关推荐