配合EFV定向分发使用,轻量级智能缓存分发系统上线

配合EFV定向分发使用,轻量级智能缓存分发系统上线

不久前,EFV推出了定向分发功能,可以给不同的视频设置不同的分发域名,但是只有七牛云,阿里云等商用云储存提供了源站同步这个功能,所以这次我写了一个轻量级智能缓存分发系统提供给大家。我直接通过一个实战案例给大家解释这个轻量级智能缓存分发系统是如何运作的。

实战案例:

EFV转码服务器:德国服务器,高CPU,大硬盘。
EFV系统绑定域名:https://www.leimulamu.com 。

缓存服务器:美国CN2服务器,垃圾CPU,小硬盘100G。
缓存系统绑定域名:https://cdn.leimulamu.com 。

在EFV转码后台视频库中批量给一部分视频设置定向分发,操作图如下:
定向分发
图中http://127.0.0.1:3001 更改成 https://cdn.leimulamu.com 即可。

轻量级智能缓存分发系统设置项如下:

module.exports = {
    cacheHost: "https://www.leimulamu.com", //缓存转码服务器的域名 最后不包含/
    corsUrls: "https://www.leimulamu.com|https://cdn.leimulamu.com", //留空即开放所有域名访问
    maxCacheSize: 1024 * 1024 * 1024 * 30, // 默认1G 自行根据服务器情况设置
    cacheDir: './tmp' // 缓存目录,默认源码目录中的tmp中,可设置绝对路径
}

意思已经在注释写的很清楚了。

这个时候当用户播放设置好了定向分发的视频的时候,其中的切片会替换成https://cdn.leimulamu.com 提供服务。
雷姆拉姆网中的一个设置定向分发的视频切片加载的时候,这个切片域名如下:
https://cdn.leimulamu.com/videos/202006/30/5efb0ec803ced46174479c7e/dc87a9/index1.ts
缓存服务器上的逻辑:当用户访问如上域名时,系统会判断是否有缓存这个文件,如果有则直接返回给用户,如果没有,则会请求转码服务器上边的文件返回给用户,并且同时将这个文件缓存。
如果缓存文件容量超过了设置的容量大小,会将最少使用的文件给释放。

缓存在缓存服务器上边的文件会进行混淆二进制储存,样式如下:
轻量级缓存分发系统文件格式

总结

此系统配合EFV的定向分发乃是绝配,使用一台高配置的服务器进行转码,而使用好几台低配但是带宽不错的VPS进行分发缓存,根据测试,大概只有网站的前10页内容是用户热点访问内容,也就是缓存了这部分热门内容就可以满足几乎80%用户的访问需求。再来,如果开启了试看功能,则缓存了热点的试看切片内容,可以大幅度提高用户的访问速度和用户体验。