有关自建图床类服务 ( 10TB 左右 )有什么坑或者现成的选择吗? 主要避免重复上传文件名哈希

2021-12-02 21:43:15 +08:00
 ClericPy

总体大约 3000 万文件吧, 包括图片视频等不同文件, S3 或其他对象存储

有没有既定方案或者开源项目的, 不知道该搜什么关键词, 找不到就只好自己搭了

  1. 记录原始图片地址转存储路径打算 mongodb 上查, 平时并发不会很高
  2. 存储路径是否存在打算使用带计数器的布隆过滤器(为了可以删除), 有没有坑呢
  3. 用文件内容整个哈希做文件名哈希表, xxhash 怎么样, xxh3_128 作为长度 32 的文件名还能接受, 碰撞应该也安全, 性能比 md5 什么的靠谱

感谢帮助

3146 次点击
所在节点    程序员
15 条回复
whileFalse
2021-12-02 22:04:15 +08:00
不是很明白你要解决什么问题。S3 怎么就满足不了你了?
yuzo555
2021-12-02 22:10:33 +08:00
@whileFalse 他想要带管理功能的

这类程序很多,不过感觉都不是很专业,Github 上搜图床一大片
cnZary
2021-12-02 22:10:47 +08:00
ceph
cnZary
2021-12-02 22:11:20 +08:00
当然上面那个不含图床的管理功能
ritaswc
2021-12-02 23:26:22 +08:00
我的建议是:把文件本身的 sha256 指纹作为文件名存下来
假如一个 我的祖国.mp3 这个文件的 sha256 是: 11223344556677889900aabbccddeeff
我会这样存储:/11/22/3344556677889900aabbccddeeff.mp3

至于文件路径存储,那就是 MySQL 、mongodb 等数据的事情了
ClericPy
2021-12-02 23:33:04 +08:00
@whileFalse 同样的文件秒传

@yuzo555 不好弄就只好自己开发了, 实际难度不大, 就是怕有坑


@cnZary OK 我看看去


@ritaswc 之前在几种哈希里纠结过, 看到 V2EX 不少人提 xxhash 来着. sha256 也是可选项之一
ericgui
2021-12-03 06:52:13 +08:00
min.io
你可以自建类似 s3 的服务
AyaseEri
2021-12-03 09:18:59 +08:00
图像有专门的哈希方案,虽然我也不知道目前的图像哈希算法好不好使
oott123
2021-12-03 09:53:56 +08:00
hash 选 sha 系列的话,OSS 之类的可能服务端能帮你算好,选 xxhash 就未必了
布隆过滤器我觉得没必要,就亿级不到的东西,随便找个数据库就行了
zifangsky
2021-12-03 10:14:40 +08:00
存储文件名弄一个分布式的自增序列(比如:雪花算法)然后把 ID 转 62 进制就行
ungrown
2021-12-03 12:43:17 +08:00
这不就是各大 booru 站点吗。
booru 站点就是 danbooru 这一类 imageboard 网站,即贴图讨论版,内容其实包括图片、视频、wiki 等。由用户上传内容,文件直接按照 hash 命名存储 /去重,额外标记元数据,让用户自行打标签,在此基础上实现内容的审查、发布、搜索、访问、排行榜、推荐。
甚至这套建站模板都是开源的,更有魔改和变种,很多涩图站都是这种(瑟琴果然是第一生产力
Ciallo
2021-12-03 17:55:13 +08:00
minio
ClericPy
2021-12-03 21:59:13 +08:00
@ericgui
@Ciallo
min.io 看到过好几次, 我看一下, 谢谢. 目前主要是想做个 S3 文件上传下载管理系统, 一方面秒传避免重复文件太多, 一方面审计一下


@ungrown 大哥... 你让我在上班期间打开了一个本来不该打开的网站.......


@oott123 你说的是类似 etag 那个东西么, 我主要是上传之前提前算出来然后比对一下避免重复上传的. 然后还不太想绑定服务商. 不过你说的数据量太小确实了, 今天技术评审我也提出来了这么点数据哈希表没啥问题, 计划 mongodb KV 存一下不知道会有坑么, 主要是在意成本, 选布隆还是想省钱, 看了一天布谷鸟过滤器了


@AyaseEri 其实就是想找一个圈内规范级别的. 目前 xxhash 因为 lz4 背书所以还是挺期待的
ungrown
2021-12-06 09:55:22 +08:00
@ClericPy #13
> 大哥... 你让我在上班期间打开了一个本来不该打开的网站.......
我还特意提了一下这些大多是涩图站,不过确实不够着重。
不过 danbooru 这个还好哦,算口味清淡的了,关得够快的话别人顶多以为是个二次元图站。
要 SFW 的话,刚刚搜了一下,safebooru ,这个不涩。
ClericPy
2021-12-06 22:49:35 +08:00
@ungrown 我来这骗方案呢, 结果我让同事当鉴黄师了.... 跑题了

最后选择 mongodb 把 cache 内存控制不太大能满足目前使用了, 前面楼层说的挺好, 1 亿以下折腾布隆不够麻烦的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/819649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX