最近项目中有这样的需求:
PS: 服务端需要保存图片。 之前都是通过图片,保存在服务器特定目录下,然后把路径传递给处理函数。
现在由于处理图片的服务器要扩展为多台( api 服务器还是一台),所以就想把图片存放在 s3 上面,然后,把 s3 上面图片对应的 url 传递给处理函数。但是,现在我的做法是:
问题: 改为 s3 存放图片之后,响应时间相差很多,有什么方法可以优化?或者是我的做法欠妥还有更好的方法?
1
guyskk0x0 2017-09-23 20:05:44 +08:00 via Android
1. s3 支持客户端直传吗?服务端发个 token 给调用方,调用方自己上传到 s3,我记得七牛支持这个。
2. 同理,s3 支持直接下载并保存图片吗,这样就不用服务端重复下载了,七牛支持这个,s3 应该也支持。 3. 加带宽吧 |
2
whileFalse 2017-09-23 20:37:35 +08:00 via iPhone
s3 可以客户端直传。
|
3
derek80 2017-09-23 20:39:58 +08:00 via Android
楼上的 1,2 可以用 STS 发 token 解决。
|
4
itertools OP @guyskk0x0 第二点可行,但是第一点有个疑点,比如:我这个 api 可能给合作方或者以后开放给更多人。这时候,调用方就不可控,可能就不愿意自己调用 s3 相关 api (通过 token )上传。
|
5
calease 2017-09-24 09:17:41 +08:00
s3 有 pre-signed url
调用你的 api 得到 pre-signed url 然后调用方直接上传, 通过 s3 notification 发通知给 lambda 处理上传结果。 |