背景
我们公司为了信息安全,我们的飞书是私有化部署的。这时我们遇到了个问题:
下图可以看到,每个职场都用一个公网连接外网机房的ftp服务来获取视频文件。
当推送新的视频培训课件的时候,同时观看视频的同学太多了,导致职场的带宽打满了。虽然有外网CDN,但是仍然解决不了带宽这个问题。
解决方案
我们采用每个办公区都部署一个局域网 ftp 服务的方案,同时局域网 ftp 服务需要实时同步公网上的视频文件,客户端观看视频时会直接看局域网服务器上的视频文件。
思考出发点
由于增加公网带宽的成本比较高,而且随着服务的增多公网带宽可能会持续增加。我们在方案设计上尽量避开对公网带宽的占用。基于此,我们采用镜像文件系统,利用局域网带宽扩容成本低的特点,减少对公网带宽的消耗。
技术架构图
我们以重庆职场为例,其他职场都一样
下面是客户端请求视频流程和职场FTP服务同步公网FTP服务的流程:
-
客户端下载视频文档的逻辑:
对于客户端来说如果想从职场局域网内的 ftp 服务获取,首先要获取本职场的 ftp 服务地址,而职场和对应的职场局域网内的 ftp 服务IP在管理模块里配置。同时, 职场局域网对公网的访问是通过一个或多个固定的IP 来访问的,所以在视频文件服务的管理模块可以维护 职场局域网公网ip和职场对应的ftp服务ip的对应关系,如下:
职场:职场公网IP(可以多个):ftp 服务IP
可选的,可以把关系维护到配置中心里,如果有变化可以随时改动,看具体情况。
- 职场 ftp 服务同步视频文件逻辑:
职场局域网的FTP服务和公网的FTP服务都会维持一个所有文件属性的MD5和所有文件属性列表的内存集合。职场FTP会定时或事件驱动的方式来发出MD5对比的请求,如果MD5不同,说明公网FTP的文件有了变化,这时就要比较文件属性的集合,看看哪个视频文件属性变了,或增加了哪个视频文件。找到后下载视频文件。
文件属性包括:文件路径+文件名,文件大小,最后修改事件等,总之要充分描述文件的唯一性就好。
另外,职场局域网的FTP 服务同步公网FTP服务的视频时,也要做限流,特别是职场局域网的FTP 服务刚起来没有视频文件的时候,可以慢速同步视频文件,这个要和运维沟通,实时获得现在的带宽。