项目中有视频需要做 OSS 的签名,每次签名当前链接有效期 3 天,每一个视频集里面有大约 1000 条视频,前端每次分页去拿,现在是每晚 12 点去做批量签名,数据量上来后,晚上的批量签名就占满了 CPU 的占用(批量 upd 语句),之前考虑过一种方案是,用的时候再去签名,这样感觉接口上会慢。因为会出现冷门数据和热门数据,新上传的视频是热门,过了 1 个月,就可能是冷门数据了。
1
xwayway 2021-11-08 11:16:41 +08:00
用的时候再去签,你一个视频只用签一次啊。这就像缓存一样,用的时候再去数据库取,没啥问题。
|
2
afirefish 2021-11-08 11:19:23 +08:00
用的时候签,签完签名 url 和时间存数据库。取的时候判断过期,过期了再签。
|
3
Vegetable 2021-11-08 11:22:11 +08:00
没注意过 presign 引起的性能问题。你这个设计下,12 点相当于一个「雪崩」,所有 URL 在同一时间过期,你完全可以设计成 3 天有效期,随机在 48 ~ 72 小时之间刷新 URL ,避免压力集中在同一个时间。
也可以直接使用 LRU 缓存+用时签名的策略 |
4
ch2 2021-11-08 11:56:25 +08:00
建议用 CDN 签名,别用 OSS 的签名
|
5
georgech 2021-11-08 15:12:02 +08:00
最好还是上 CDN ,可以提升文件访问速度,而且每次获取的时候签名也足够了。
实在不行,就在服务端加一层缓存,缓存过期时间与链接保持一样的过期时间,缓存过期后再重新签名 |
6
IvanLi127 2021-11-08 23:24:01 +08:00 via Android
把签名平摊到一整天去,慢慢签不行吗?
|