您当前的位置: 首页 >  Java

命运之手

暂无认证

  • 3浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java】开发文件下载服务的三个核心技术点

命运之手 发布时间:2022-05-21 11:07:42 ,浏览量:3

首先说一下前提,我们这里说的下载,是指断点下载的方式,不是一次性下载完毕

字节缓存

对于频繁读取的数据,要加载到内存中进行复用

如果每次都重新从硬盘读取到内存,效率会很低,甚至会严重影响程序性能

连接数限制

要根据服务端的宽带大小,和客户的平均宽带配置,确定一个连接数上限

如果连接数过大,多个连接之间竞争宽带资源,很有可能导致,所有连接都不稳定的情况

此时就可能陷入,所有连接速度慢,并且经常断开,经常重连的恶性循环之中

公平分配带宽

比如有一个土豪用户,他使用的万兆宽带

那么如果他要下载一个大文件,一个人就会占用服务器的全部带宽资源

其它的服务接口,和其它的用户,都将无法正常使用服务

因此要保证穷用户和富用户之间的公平性

此时有两种方式可以选择,一种是限制每个连接的下载速度,一种是限制每个连接的数据下载量

直接限制下载速度的方法,相对比较死板,就算只有一个用户在下载也会限速,这就浪费了服务器的宽带能力

限制每个连接数据下载量的做法,则是当每个连接的下载总量达到一定数值时,就将其断开

此时如果该用户还想继续下载,就得重新创建连接,而连接数是有上限的,此时就要和其它用户竞争连接权利

这样就将带宽竞争,一定程度上转为了连接权竞争,限制了土豪用户的独裁权力,更加公平

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0841s