微服务文件服务设计咨询

想咨询各位几个问题,谢谢。
1、目前微服务框架内我想开发一个文件服务专门用于处理文件、OSS上传,目前考虑的是接入多家OSS对象存储提供商,方便后期切换,目前暂不考虑切换换文件的转移(暂时定靠人工上下载),数据库中文件路径是存储相对路径还是完整路径好呢?
2、是否需要设计一张附件表存储全部上传的文件,同1是存储相对路径还是完整路径呢?

阅读 2.2k
1 个回答

【问题一】

用云存储的话一般是相对路径。

其实也压根不是路径了,而是 FileKey 这种文件标识,只不过长的看起来像路径。

存 FileKey 有两个好处:

  1. 替换服务商方便。绝大部分云存储供应商都会提供“源站克隆”、“源站迁移”(可能服务不叫这个名,但功能是这个功能)。也就是说,当你要换服务商时,只需要把新的存储桶的源站指向老的,剩下的就跟你无关了,你代码不需要改动任何一行(当然了配置项肯定得改)。
  2. 切换 CDN 方便。当某个 CDN 节点挂掉时,你可以迅速的通过修改配置文件的方式替换为其他的 CDN 节点,同样不需要你改一行代码。

当然你可能会说,“我存完整路径,需要切换时再在代码里手动 REPLACE 掉开头的域名什么的,不也行吗?”。这个问题就不回答了吧,你自己思考一下。


【问题二】

看你业务需求。

一般来说业务上用不到这个表,因为这个 FileKey 你还是得存到相应的实体表里。比如用户头像,你总不能用户表里只存个附件 ID、然后外键关联到这个附件表里吧?

所以这个表更大的用途是做日志查询用的。但如果数据量比较大的话其实关系型数据库不算是一个特别好的选择。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进