V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yodhcn
V2EX  ›  程序员

一般实际开发中,后端 API 服务器 & 文件服务器是分开的吗?

  •  
  •   yodhcn ·
    yodhcn · 2023-03-11 18:06:25 +08:00 · 2840 次点击
    这是一个创建于 612 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一般实际开发中,后端 API 服务器 & 文件服务器是分开的吗?

    目前主流的 Java 后端技术栈还是同步的 Spring MVC ,用来传输 Video Stream 是不是不太合适?

    第 1 条附言  ·  2023-03-12 17:04:38 +08:00
    感谢各位老哥的回复!我大概了解了为什么后端 API 服务器 & 文件服务器通常需要分开。

    现在我有一个设想的方案:
    1. 当已授权用户需要请求某个目录中的文件时,需要先请求 Api 服务 "http://xxx.api.com/api/download_token?dir=DIRxxxxx" 拿到 token="TOKENxxxxx"
    2. 用户携带 token 访问文件服务 "http://xxx.file.com/file/DIRxxxxx/music.mp3?token=TOKENxxxxx",可以在该 token 过期前访问 "/DIRxxxxx" 下的所有文件

    请问需要实现至少 "下载、上传、token 鉴权" 这些功能的自建文件服务器有哪些选择?
    PS: 不想使用对象存储,因为使用对象存储的文件在操作系统中不能直接读取。
    希望使用原生文件系统实现,因为方便在操作系统的文件资源管理器中管理文件。
    15 条回复    2023-03-12 12:26:31 +08:00
    pigspy
        1
    pigspy  
       2023-03-11 18:10:01 +08:00   ❤️ 1
    文件服务器和用于提供 API 的服务器肯定会分开部署
    因为在网站上买的云主机的实例规格会不一样
    Chad0000
        2
    Chad0000  
       2023-03-11 18:11:47 +08:00   ❤️ 1
    你可以用 API 来上传到云存储比如 OSS ,但下载一般直接用 CDN 了。
    Mystery0
        3
    Mystery0  
       2023-03-11 18:14:24 +08:00 via Android   ❤️ 1
    短期临时的话随意,长期、想要稳定的话,都会分开的,为的是让流的请求不挤占正常 api 请求的带宽和连接数
    cpstar
        4
    cpstar  
       2023-03-11 18:18:19 +08:00   ❤️ 1
    video stream 实际上不就是文件 I/O<=>网络 I/O ,所以就是你是否需要用 spring 框架来搞这个,还是交给一个 native 一点的 httpd 搞,还是交给谁。
    zoharSoul
        5
    zoharSoul  
       2023-03-11 22:28:46 +08:00   ❤️ 1
    是的
    wheat0r
        6
    wheat0r  
       2023-03-11 22:41:52 +08:00   ❤️ 1
    对于政府采购项目,肯定是分开,能多卖不少钱😂
    edis0n0
        7
    edis0n0  
       2023-03-11 22:48:11 +08:00   ❤️ 1
    我们是所有东西全混在一台*独服上
    mzDV4TUeHyesLbUQ
        8
    mzDV4TUeHyesLbUQ  
       2023-03-11 23:10:26 +08:00   ❤️ 1
    @edis0n0 求生欲很强啊

    @yodhcn 我们之前 API 服务和文件服务是在一起的,直到后来附件太多,服务器没多余的硬盘位...
    kingjpa
        9
    kingjpa  
       2023-03-11 23:14:17 +08:00   ❤️ 1
    必然是分开的,主要是安全隐患。
    lujiaosama
        10
    lujiaosama  
       2023-03-12 00:17:05 +08:00   ❤️ 1
    分开, 服务+COS/OSS+VOD.
    singerll
        11
    singerll  
       2023-03-12 00:20:35 +08:00   ❤️ 1
    有共享存储,可以选择不分开。
    没共享存储,肯定要分开,不然双节点没法做。
    devliu1
        12
    devliu1  
       2023-03-12 08:59:09 +08:00   ❤️ 1
    传 oss ,应用服务器保持无状态
    gtx990
        13
    gtx990  
       2023-03-12 09:19:16 +08:00 via Android   ❤️ 1
    s3 是存储界最伟大的发明
    xuanbg
        14
    xuanbg  
       2023-03-12 10:11:42 +08:00   ❤️ 1
    一般用的少的可以选择云厂商的 OSS 服务而不是自建文件服务。
    kevinlia0
        15
    kevinlia0  
       2023-03-12 12:26:31 +08:00 via Android   ❤️ 1
    分开的。
    1.安全问题考虑
    2.性能问题考虑。不分开,在读取资源文件会使用 API 服务器的资源和网络带宽,读取资源文件 不应影响 API 的主服务
    3.看实际而定吧,小项目用户访问不高,两者不分开放一起的性价比高
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:03 · PVG 04:03 · LAX 12:03 · JFK 15:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.