基本需求:设计一个图片服务器,能够高效的提供各种平台语言接口,包括上传、编辑、删除、切图、排序等功能,目前数据量大概是1亿张。
各个平台复杂需求:图片上传后需要立刻能显示,能进行删除、排序等操作。图片和实体资源有关联性:一个实体对应N张图片,或者对应1张图片,还有图片和实体的对应关系表存储。
图片转换:因为有些实体资源对应N张图片,一张图片对应N张大小的缩略图,若是上传时执行转换操作肯定会很慢,其中多的时候涉及到20来张图片的处理,所以一般得用异步处理。
图片存储:图片关系存储和图片文件存储规划都涉及到各个地方调用的简便性。
我说下我们现在的这个系统,node.js+redis+activemq ,现在遇到的很多问题包括需求复杂,需要大量的修改,还有当用户上传图片的时候,比如文章里面的图片上传,文章还没有完成时,既要进行图片的上传,如何做关联。前台列表页调用图片N张图片,需要循环读取,效率会很差。
基于以上的几点,请求各位,这样的系统如何设计,使用什么软件,什么结构,悉心听取大家的意见。
你的需求如果这么复杂,肯定要把图片地址的组织和分发独立出来作为一个单独的服务器,
存储图片的肯定是nginx 集群,或者是用CDN做前端缓存。要简单的做法就是对每张
图片hash,然后把hash值作为key 来在调用该图片的时候存在,然后根据图片hash 计算
出对应的服务器域名和地址,例如一张图片hash是68b329da9893e34099c7d8ad5cb9c940,
则计算出他的地址是http://68.img.com/b/3/29/da9893e34099c7d8ad5cb9c940.jpg
这样解决负载问题,同时多域名分发能突破ie单域名2线程限制提高图片加载速度。
@tipboy已经用redis和activemq,估计类似的设计已经考虑过了,现在如果还要有提高
就参照facebook的设计吧,就是提高组织和分发的效率,网上有较详尽的分析:
英文原文:
http://www.facebook.com/note.php?note_id=76191543919
中文译文:
http://www.kuqin.com/system-analysis/20120126/317600.html
相关推荐
《大规模分布式存储系统:原理解析与架构实战》是分布式系统领域的一部经典著作,作者杨传辉依托于深厚的理论知识和实践经验,为读者详尽地解析了分布式存储系统的核心技术和基本原理,并针对全球顶尖互联网公司的...
《系统架构:复杂系统的产品设计与开发》是2016年出版的一本关于系统架构设计的重要著作。这本书深入探讨了在构建大型、复杂系统时所面临的挑战和解决方案,为IT行业的专业人士提供了宝贵的指导。其PPT形式的资料集...
3. **负载均衡**:在大规模系统中,负载均衡是将工作负载分散到多个计算资源上,以避免过载,确保服务的连续性和响应时间。常见的负载均衡策略有轮询、最少连接数、IP哈希等。 4. **分布式一致性与复制**:如Paxos...
《大规模分布式存储系统:原理解析与架构实战》是由杨传辉编著的一本深入探讨分布式存储技术的专业书籍。本书全面解析了分布式存储系统的基本原理,并结合实际案例,提供了架构设计与实施的实践经验。 分布式存储...
综上所述,支付宝在其SOA系统的演进过程中,不仅关注技术细节,还重视治理和架构设计的整体性,这为其在大规模SOA系统治理方面积累了宝贵的经验。通过不断的学习、实践和调整,支付宝成功构建了一个灵活、高效且稳定...
系统设计遵循三层结构模式(MVCC7),这使得系统在保持灵活性的同时能高效运行。跨平台设计确保了系统的兼容性,能够适应多种关系数据库和不同的硬件环境。为提升性能,系统使用数据库连接池并通过JDBC技术进行...
### 大规模消息系统的架构设计 在探讨大规模消息系统架构设计的过程中,我们首先需要理解其核心价值在于如何高效地处理海量的数据传输需求。本篇文章将深入解析一个具体案例中的架构演变过程,包括早期的设计思路、...
1. **计算机网络系统设计**: - **高可用性与先进性**:采用可扩展的万兆主干、高性能、大二层网络技术。 - **高可靠性**:确保高度稳定性、足够冗余、容错能力。 - **安全性**:实施身份验证、VLAN划分等技术...
- **大数据**:处理大规模数据的架构设计,如Hadoop、Spark等技术的应用。 - **容器化与Kubernetes**:容器化技术如何简化部署和管理,以及Kubernetes在容器编排中的作用。 - **微服务**:微服务架构的设计原则,...
本文将深入探讨基于大规模集群的运维架构设计的关键要素,包括资源分析、资产管理、集群部署、运维支撑系统等多个方面。 ### 资源分析 资源分析是运维架构设计中的重要环节,它涉及到对现有资源的全面了解和未来...
架构设计并非随意为之,而是基于多种因素的考虑,如系统规模、功能需求、性能指标、开发周期、团队技能等。常见的误解有小型系统无需架构设计和敏捷开发可以忽略架构,但实际上,无论系统大小,清晰的架构都能提高...
### 某大型集团中台平台架构设计方案解析 #### 一、中台整体设计概述 在当前快速发展的数字化时代背景下,某大型集团为了应对日益复杂的业务需求和技术挑战,提出了一套全面的中台平台架构设计方案。该方案旨在...
本方案旨在为某大型集团设计一套完善的中台平台架构,通过构建数据中台与业务中台,实现企业内部资源的有效整合与利用,提升业务响应速度与创新能力。整体设计包括四个主要部分:整体设计、应用说明、核心技术以及...
《大规模分布式存储系统:原理解析与架构实战》是一本深度探讨分布式存储系统核心概念、设计原理和技术实现的专业书籍。本书旨在帮助读者深入理解分布式存储系统背后的复杂性,并提供实践指导,以应对日益增长的数据...
《国网用电信息采集系统2.0终端技术架构方案》初稿是针对电力行业中的智能电表及用电信息管理系统的深入探讨。这份文档旨在提供一套全面的技术框架,以优化电力公司的数据采集、处理和分析能力,从而提升服务质量,...
1. **数据库分层与分布式部署**:为了应对大规模的数据访问需求,采用主从复制、读写分离等策略,实现数据库的分布式部署。主数据库负责写操作,从数据库负责读操作,以此减轻单点压力,提高数据处理能力。 2. **...
SpringCloud微服务系统设计方案是构建大规模、高可用应用程序的一种现代架构。它基于Spring Boot和Spring Framework,旨在简化微服务的开发、部署和管理。本文将深入探讨微服务的本质、面临的挑战、架构设计以及核心...