知识卡片

大文件切片跨磁盘分发:用条带化突破单块磁盘的吞吐瓶颈

普通读书笔记卡

内容

对于体积比较大的流媒体资源,CDN系统会主动对文件进行切片处理(比如切成小于100MB的分片),这个做法针对的是一类典型的硬件短板场景:在没有磁盘阵列、或者阵列卡性能较差的机器上,如果把一个大文件完整地放在单块磁盘上,这块磁盘的I/O能力就成了读取这个文件的唯一瓶颈;把文件切成多个分片后,不同分片可以分别存放在不同磁盘上,读取这个文件时就能同时从多块磁盘并行读取数据,而不是被单块磁盘的吞吐上限卡住,从而有效提高整体的读取吞吐率。这是一个具有普遍参考价值的存储优化思路:当承载数据的底层介质(这里是单块磁盘)本身存在吞吐上限、又缺乏更高级的硬件方案(如专业磁盘阵列)来突破这个上限时,可以在应用层把大对象人为切分成多个小块、分散存放到多个独立的底层介质上,靠并行读写来突破单一介质的吞吐瓶颈,这个思路本质上和分布式存储里”条带化”(striping)的做法是一致的。

参考来源

- 位置:《高可用架构(第1卷)》第7章《安全与网络》"7.3 CDN对流媒体和应用分发的支持及优化"节,"7.3.4 内容分发系统的问题和应对思路","1.流媒体分发"(源文件:_epub-src/OEBPS/Text/Chapter7_3_5.xhtml) - 结论依据:原文说明"分发的流媒体如果体积比较大,可以考虑主动对文件进行切片(小于100MB)。这样可以对某些配置较差的服务器做一些优化。例如在没有阵列或者阵列卡比较差的机器上,避免将一个大文件放置在一个单独磁盘,从而最大化地从多个磁盘上读取该文件,有效提高吞吐",直接支撑本卡片结论。 - 原始内容:分发的流媒体如果体积比较大,可以考虑主动对文件进行切片(小于100MB)。这样可以对某些配置较差的服务器做一些优化。例如在没有阵列或者阵列卡比较差的机器上,避免将一个大文件放置在一个单独磁盘,从而最大化地从多个磁盘上读取该文件,有效提高吞吐。