@
NoKey @
xiaooloong综合看了一下两位的需求,用我们目前项目用的方案就好,我是专门花了几天时间研究的。
MinIO 这个对象存储使用 Go 写的,官网下载可执行文件,运行一下服务就能跑起来,存文件,图片等等非常简单好用。
Thumbor 使用 Python 开发的非常专业活跃的图像处理工具,几乎你能想到的图片处理,这套工具都能实现,最牛逼的一点就是它有一套算法在处理图片的时候(例如:裁剪)可以对图片的人像、动物、等关键位置识别。你可以直接用 url 的方式去处理,但这个仅仅是测试用的,真正生产的时候用官方提供的检验安全 key 的方式去做非常安全,不像 zimg 可能会被恶意生成。
Thumbor 可以通过插件直接处理 s3 的图像,同理 MinIO 兼容大部分 s3 接口,所以就可以直接用。
不过我们为了降低成本打算把 MinIO 换成 s3,有一点就是 Thumbor 环境略复杂,CentOS 装这个我是放弃了,直接用 Debian 10 几行命令搞定。Thumbor 处理图片的时候非常吃 CPU,尤其是开启了算法相关的配置,处理好的图片可以存到指定目录或者 MongoDB,下一次访问同样规格的图片不会再次被处理。
Thumbor 用的时候有一些小坑,不过跑起来是非常好用稳定的,如果有什么问题也可以问我。
我们用这套方案已经在生产环境跑了很久了,没有出过一次问题,推荐使用。