社区
C++ 语言
帖子详情
怎么同时读取多个大容量的文件
fishly_0
2008-03-29 08:13:15
rt,比如说在一些提供视频下载的网站,如果有100个用户同时下载,且下载的电影都不一样。那么服务端该用什么方法读取电影文件并发给客户端呢?用内存映射文件的方法吗? 因为肯定要将电影分为n个数据包发送给客户端,所以每次都要打开文件,然后读取相应位置的文件数据的话,我怕速度会慢。 高手指点下,这种情况怎么处理比较好:)
...全文
188
20
打赏
收藏
怎么同时读取多个大容量的文件
rt,比如说在一些提供视频下载的网站,如果有100个用户同时下载,且下载的电影都不一样。那么服务端该用什么方法读取电影文件并发给客户端呢?用内存映射文件的方法吗? 因为肯定要将电影分为n个数据包发送给客户端,所以每次都要打开文件,然后读取相应位置的文件数据的话,我怕速度会慢。 高手指点下,这种情况怎么处理比较好:)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Supper_Jerry
2008-03-31
打赏
举报
回复
加大内存,内存映射
liuworld
2008-03-31
打赏
举报
回复
还有 向youku,土豆这样的视频网站要是把文件都在硬盘上 无异于找死
liuworld
2008-03-31
打赏
举报
回复
1、文件的自动分类 ,按访问的频繁程度,当然要有合理的算法评估
2、频繁访问的文件放在内存中,想facebook大概用了400台电脑的内存(现在的服务器支持32G内存)专门用来存文件,这就要求要有好的文件管理系统,一般都是mysql记录文件的存储位置
,当然大公司都有自己的文件管理系统,例如Google的数据中心。
fishly_0
2008-03-31
打赏
举报
回复
[Quote=引用 3 楼 coding_hello 的回复:]
视频网站下载能提供多大的带宽?宽带一般也就是128-256KB吧,…
[/Quote]
呵呵,现在就是先考虑用单机的,集群的我们这没人接触过,都不知道怎么弄。 现在感觉要用单机做这也的服务器很难办啊,因为如果文件数量多,容量大,那用户下载时,硬盘的读写太频繁了,可能没用多长时间这硬盘就挂了。 如果全部缓冲的话,就跟barenx 说的一样,除非有海量的内存了。
问下高手,如果用集群的话,该如何下手呢?是否买相关的设备,厂家就会提供相关的技术支持呢?
yichuankun
2008-03-31
打赏
举报
回复
mark
Skt32
2008-03-31
打赏
举报
回复
两级:内存缓冲+文件预读。各用一个线程
fishly_0
2008-03-31
打赏
举报
回复
多谢大家的回复了。主要是怕这种情形:服务器有100个大文件提供下载, 当有100+的客户端连上来后,如果每个客户端每次下载的文件都不一样,那么读取硬盘的频率是非常频繁的,这也是我最担心的问题。 到底应该想方法缓冲文件数据呢还是应该看看在硬件上如何改进?
liveforme
2008-03-31
打赏
举报
回复
学习学习
supercow
2008-03-31
打赏
举报
回复
CreateFileMapping 是比较简单易行的了
jjfwenwenti
2008-03-31
打赏
举报
回复
mark,我也在找办法~
zdsdtc
2008-03-30
打赏
举报
回复
mark
ryfdizuo
2008-03-30
打赏
举报
回复
os一般是会优化的,
hityct1
2008-03-30
打赏
举报
回复
mark
WizardOz
2008-03-30
打赏
举报
回复
也许是我无知了,但是你读取大文件发送不代表就要把文件一起都读到内存中阿。
读一段到缓冲区,发送出去后再读一段不行吗?
chenyu2202863
2008-03-30
打赏
举报
回复
CreateFileMapping
IT_lau
2008-03-30
打赏
举报
回复
mark
cnzdgs
2008-03-30
打赏
举报
回复
楼主可以放心地按照正常方式读文件,完全不用考虑这个问题,这些是操作系统要考虑的,系统的磁盘缓冲会把事情处理好,如果你自己处理往往会适得其反。
野男孩
2008-03-29
打赏
举报
回复
[Quote=引用楼主 fishly_0 的帖子:]
rt,比如说在一些提供视频下载的网站,如果有100个用户同时下载,且下载的电影都不一样。那么服务端该用什么方法读取电影文件并发给客户端呢?用内存映射文件的方法吗? 因为肯定要将电影分为n个数据包发送给客户端,所以每次都要打开文件,然后读取相应位置的文件数据的话,我怕速度会慢。 高手指点下,这种情况怎么处理比较好:)
[/Quote]
视频网站下载能提供多大的带宽?宽带一般也就是128-256KB吧,就算1MByte/s,100个并发也就100MByte/s,服务器都是SCSI硬盘,那速度傻读也能满足这要求吧。内存就算2G,用内存映射,也够用了。
真正高并发的话,肯定是有集群的,不会是单机。
barenx
2008-03-29
打赏
举报
回复
disk bufffer ,利用磁盘缓冲技术,划分出一块内存作为数据缓冲,这个操作系统也会做的,你的程序可以实现的文件预读,就是当用户还没有请求相应的数据的时候,预测用户的行为,把数据事先载入内存
不要试图全内存缓冲,除非你的服务器用了1024TB的内存
oo
2008-03-29
打赏
举报
回复
磁盘访问速度慢是没办法的。
还是用磁盘阵列或分布式存储解决的彻底些。
java
读取
大txt
文件
_JAVA
读取
很大的TXT
文件
(上百G)
当
文件
过于大的时候我们如果还用传统的方式
读取
很容易造成内存满我们应该拆开
读取
:用NIO方式把大
文件
分成固定大小的小
文件
(小于2G,自己综合分析设置多大,每个
文件
太大容易浪费空间,太小浪费时间),然后再循环用方案1去读每个小
文件
。public static void readLargeTextWithNIO() {try {long startTime = System.currentTimeMil...
Python
读取
大
文件
Python
读取
文件
大小大于内存,这么处理就有问题了,会造成MemoryError … 也就是发生内存溢出。那么改如何避免或者定位呢
php中file_get_contents如何
读取
大容量
文件
php中file_get_contents如何
读取
大容量
文件
一、总结 一句话总结:使用file_get_contents()进行分段
读取
,file_get_contents()函数可以分段
读取
1、
读取
大
文件
是,file_get_contents()函数为什么会发生错误? 发生内存溢出而打开错误 当我们遇到文本
文件
体积很大时,比如超过几十M甚至几百M几G的大
文件
,用记事本或者其它...
用python3快速
读取
30G+的txt
文件
处理大
文件
是很容易想到的就是将大
文件
分割成若干小
文件
处理,处理完每个小
文件
后释放该部分内存。2、对于35G的txt
文件
,测试用了3分钟
读取
完成。8G的
文件
用了不到1分钟。1、上面的代码中,每次
读取
1M的
文件
,直到把数据
读取
完。
java
读取
服务器上
文件
,java
读取
linux服务器上
文件
java
读取
linux服务器上
文件
内容精选换一换当创建
文件
系统后,您需要使用云服务器来挂载该
文件
系统,以实现
多个
云服务器共享使用
文件
系统的目的。CIFS类型的
文件
系统不支持使用Linux操作系统的云服务器进行挂载。同一SFS容量型
文件
系统不能同时支持NFS协议和CIFS协议。裸金属服务器、容器(CCE&CCI)操作与云服务器一致。确定云服务器操作系统类型,不同操作系统安装NFS客户端的...
C++ 语言
64,649
社区成员
250,477
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章