开发者社区> 问答> 正文

大规模图片系统设计与架构方案

落地花开啦 2016-02-29 18:27:20 1926

基本需求:设计一个图片服务器,能够高效的提供各种平台语言接口,包括上传、编辑、删除、切图、排序等功能,目前数据量大概是1亿张。

各个平台复杂需求:图片上传后需要立刻能显示,能进行删除、排序等操作。图片和实体资源有关联性:一个实体对应N张图片,或者对应1张图片,还有图片和实体的对应关系表存储。

图片转换:因为有些实体资源对应N张图片,一张图片对应N张大小的缩略图,若是上传时执行转换操作肯定会很慢,其中多的时候涉及到20来张图片的处理,所以一般得用异步处理。

图片存储:图片关系存储和图片文件存储规划都涉及到各个地方调用的简便性。

我说下我们现在的这个系统,node.js+redis+activemq ,现在遇到的很多问题包括需求复杂,需要大量的修改,还有当用户上传图片的时候,比如文章里面的图片上传,文章还没有完成时,既要进行图片的上传,如何做关联。前台列表页调用图片N张图片,需要循环读取,效率会很差。

基于以上的几点,请求各位,这样的系统如何设计,使用什么软件,什么结构,悉心听取大家的意见。

存储 文件存储
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:50:46

    你的需求如果这么复杂,肯定要把图片地址的组织和分发独立出来作为一个单独的服务器,存储图片的肯定是nginx 集群,或者是用CDN做前端缓存。
    要简单的做法就是对每张图片hash,然后把hash值作为key 来在调用该图片的时候存在,然后根据图片hash 计算出对应的服务器域名和地址,例如一张图片hash是68b329da9893e34099c7d8ad5cb9c940,则计算出他的地址是http://68.img.com/b/3/29/da9893e34099c7d8ad5cb9c940.jpg这样解决负载问题,同时多域名分发能突破ie单域名2线程限制提高图片加载速度。
    用redis和activemq,估计类似的设计已经考虑过了,现在如果还要有提高就参照facebook的设计吧,就是提高组织和分发的效率

    0 0
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题