开发者社区> 问答> 正文

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

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

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

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

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

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

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

展开
收起
落地花开啦 2016-02-29 18:27:20 4885 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

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

    2019-07-17 18:50:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
微服务×容器Meetup:云原生架构与应用专场PPT合辑 立即下载
云原生架构容器&微服务优秀案例集 立即下载
以银行架构视角解读和落实银行数字化转型的两份重磅指导文件 立即下载