Google App Engine(GAE) Flex实例磁盘是否共享?如何实现实例间文件共享?
磁盘共享问题解答
你配置的50GB磁盘不会在多个实例间共享。
App Engine Flex 环境的每个实例都是独立运行的虚拟机,app.yaml 中 resources 下配置的 disk_size_gb 是每个实例单独分配的本地磁盘容量,你当前配置2个实例的情况下,每个实例都拥有独立的50GB本地磁盘,实例之间的磁盘完全隔离,无法互相访问。
实例间文件共享解决方案
针对你需要用ffmpeg实时提取视频帧、低延迟访问视频文件的需求,推荐以下可行方案:
- 本地预缓存热数据
若你高频访问的视频总容量不超过单实例50GB磁盘上限,可以直接在实例的启动脚本中提前将所有需要的视频下载到本地磁盘,ffmpeg直接读取本地文件,速度最快,完全满足即时响应的要求。如果视频总容量超过50GB,可以搭配LRU缓存策略,只保留高频访问的视频在本地,自动淘汰低频访问的文件释放空间。 - 挂载共享文件存储
使用全托管的NFS文件存储服务,创建实例后在GAE Flex的Docker镜像中配置开机自动挂载,所有实例都可以直接读写同一个共享存储空间,访问延迟远低于对象存储,足够支撑ffmpeg实时抽帧的性能要求。 - 对象存储挂载加本地缓存
可以在实例中使用GCS Fuse工具将对象存储桶挂载到本地目录,同时开启本地缓存配置,高频访问的视频会自动缓存到实例本地磁盘,首次访问走对象存储链路,后续访问就和本地磁盘速度一致,无需额外调整业务逻辑即可满足性能要求。
内容的提问来源于stack exchange,提问作者danday74
相关产品推荐
相关产品推荐

