我们将部署一个没有raid的存储服务器(我们有很多数据,但目前存储空间有限|数据并不重要(,因此我们将为12 x 8 TB驱动器中的每个驱动器分配一个子域,供客户从中下载。
客户端将通过http上的静态URL下载内容(http://subdomain1.xyzwebsite.com/folder1/file1.mkv),我们的服务器功能强大,有128 GB的RAM和6 x 2核处理器,带10 GB LAN卡,但如果没有RAID,当多个客户端从同一个驱动器下载时,这看起来像是一个瓶颈,所以为了克服它,我开始研究清漆缓存,但我不满意它将如何提供数据(我不理解设置对象大小和手动将缓存位置设置为RAM或DISK(。
注意:每个文件大小的范围可以从500 MB到4 GB
我们不想要一个单独的服务器来缓存数据,我们想利用这个强大的服务器来做到这一点,现在对于解决方案,我认为数据位于1个驱动器中,如果可以将频繁使用的(文件在24小时或12小时内下载(内容复制/镜像/缓存到第二个驱动器,并用相同的子域提供相同的文件
注意:Nginx知道通过access.log 访问哪个文件
场景:有12个驱动器(操作系统有2个单独的驱动器,我在这里不算在内(,我将在11个驱动器上存储数据,并将第12个驱动器用作所有驱动器的副本/镜像/缓存,我知道http是如何工作的,无论我是否将多个ip添加到同一域,我一次只能从一个ip下载(我将在同一服务器上添加多个ip地址(,这是我的解决方案数据将通过循环提供,如果一个客户端正在从一个ip下载,则另一个客户端可能会从第二个ip下载。
现在我不知道如何实现它,我尝试寻找解决方案,但没有得到任何解决方案,主要有两个问题:
- 如何仅将11个驱动器的频繁数据复制/镜像/缓存到1个驱动器并从中提供服务
- 如果我将第二个ip地址条目添加到同一子域,并且在第12个驱动器上没有数据,它将如何获取它
在同一服务器上需要基于Nginx或Varnish的解决方案,如果可以进行基于RAM的缓存,这将对有利
Varnish可以用于此,但遗憾的是,它不是开源版本。
Varnish Enteprise的特点是所谓的海量存储引擎,它使用磁盘和RAM来存储大量数据。
MSE不使用文件来存储对象,而是使用具有类似文件系统行为的预先分配的大文件。这样做的速度要快得多,而且不太容易出现磁盘碎片。
在MSE中,您可以配置单个磁盘的行为方式以及每个磁盘使用的存储量。每个磁盘或磁盘组都可以进行标记。
基于Varnish Enterprise的MSE VMOD,您可以控制每个磁盘或磁盘组上存储的内容。
您可以根据内容类型、URL、内容大小、磁盘使用情况和许多其他参数来决定如何将内容分发到磁盘。您也可以选择不在磁盘上保留内容,而只将内容保留在内存中。
不管该MSE-VMOD如何;热内容";将自动从磁盘缓冲到内存中。还有";水位";您可以调整的设置决定了如何自动确保始终有足够的空间可用。