关于并发文件上传的设计

本文探讨了在高并发文件上传场景下,通过调整API层与DFS的交互方式,从同步变为异步,以减少系统性能损失的方法。讨论了如何在客户端到API层保持不变的情况下,改进API到DFS的链路,采用线程池或额外启动进程等手段,提高整体系统效率。
摘要由CSDN通过智能技术生成

1,系统端对外暴露API层,使用SpringMVC来设计,协议是HTTP。

     当大量文件需要上传时,考虑到互联网传输的这一段速度是比较慢的,例如同时有

            A,B,C,D,E,F,G    这几个Client在传输,如果每个都耗时10S

    那么显而易见,这些client的连接都在保持住10S时间。这个本身没有任何问题,问题出现在下面

2,在1的前提下,如果API层后面,将文件传输到DFS采用的是同步机制,如下链路:

            A(client)------>API---------->DFS     同步

    那么不只是A到API这边要保持10S的连接,从API到DFS也将要同样保持10S的连接。

    那么问题来了,如果DFS还要同时提供大量的读操作,而且几个简单的写操作一直这么占用连接“长达”10S

系统性能损失太大。解决方案如下

3,从客户端到API层无需太多修改,而是修改API到DFS这一段,从同步变为异步,即等待A client发送过来的数据完全弄完以后再一次性写入到DFS里面

    当然这里面也需要有个地方需要选择,A client上来的文件先写到 API的内存?还是硬盘?还是别的存储?

    API到DFS 采用线程池,还是额外起动进程扫描,还是通知进程扫描。。。。

    要考虑的问题不少,但是总体思路已经解决!

转载于:https://my.oschina.net/u/2338362/blog/412112

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值