`
cfyme
  • 浏览: 275169 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

电子商务文件存储及读取服务的设计和开发思路

 
阅读更多

商品图片,平均200-500K,说大不大,说小不小,但量大且细碎,通常通过页面上传,全部保存在文件里,管理和索引都很慢,几乎无法备份,读取也很慢。

传统的基于磁盘存储的缺陷:
1、 图片存储和应用程序在一个服务器上,图片的读取占用大量的磁盘IO,在访问量高的时候,图片读取和应用程序相互影响。特别互联网环境下的文件多以几K,几十K的小文件为主,磁盘寻址和读取,缓存命中率都比较低。
2、 当规模大到一定程度,应用服务器将扩展到多服务器集群环境中,传统的磁盘存储在集群环境下面临集中存储的挑战。
3、 基于磁盘的存储,在面临未来扩容的情况下,也显的能力不足,通过增加磁盘的容量很快将达到极限,最好的方法还是多服务器集群的存储。所以在存储和读取上的难度将陡然增加。

所以鉴于此,放弃简单的磁盘存储,而且各大互联网公司都有自己的文件系统,google的GFS,淘宝的TFS,其他中小型的网站,会采用类似于mogileFS这样开源的文件系统。所以利用开源的文件系统来搭建我们自己的文件系统、文件服务器以及文件的存取服务。

在众多开源的文件系统中,我们选用MongoDB的GridFS作为文件存储服务。

MongoDB特性 MongoDB是一个可扩展、高性能的下一代数据库,由C++语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便,主要特性有:
1. 模式自由,支持动态查询、完全索引,可轻易查询文档中内嵌的对象及数组。
2. 面向集合存储,易存储对象类型的数据, 包括文档内嵌对象及数组 。
3. 高效的数据存储,支持二进制数据及大型对象(如照片和视频) 。
4. 支持复制和故障恢复;提供了主-从、主-主模式的数据复制及服务器之间的数据复制。
5. 自动分片以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器 。

在OECP社区(http://www.oecp.cn)中,我们也初步使用了mongodb,实践证明mongodb从效率和稳定性上都是有保障的。
GridFS和传统的MogileFS不同, gridfs可以和其它的meta数据部署在同一个 db中,默认的会为gridfs的collection分别创建fs.files和fs.chunks. 当存储一个文件时,可以附加存入任意的附加信息,因为这些信息实际上也是一个普通的collection. GridFS的一个优点是可以存储上百万的文件而无需担心扩容性. 通过同步复制,可以解决分布式文件的备份问题. 目前,mongo支持主-从和Replica Pairs以及受限的Master-Master Replication. 比较实用的还是前2种.

选择了存储的方案后,我们需要对电子商务网站的图片的存储和读取进行整体的架构设计,设计思路:
• 决不允许重复图片存在,利用MD5进行判断
• 文件只有原始的需要保留,其他各尺寸和效果都可以由原图生成
• 图片URL总是固定的,不管它出现在哪里 • 缩略图生成规则也简单的体现在URL里
• 第一次请求,由图片处理程序生成静态文件,以后请求即直接定位到静态文件

下图为图片存取流程图:

所用到的技术组件:
1、    MongDB,第一阶段采用单服务器,后期演变到M-S架构
2、    Nginx: 解析URL并定位到静态文件,如果未生成则转向程序去生成图片
3、    JMagick:用于生成高清的缩略图
4、    spring-data:用于对MongoDB的操作


下一步的工作主要是:
1、    对MongoDB的封装
2、    对文件系统的存储实现和应用程序的读取
3、    将文件系统作为OECP平台的系统组件进行包装

延伸:基于MongoDB的日志服务和用户行为分析的架构设计及实现策略的考察和尝试

案例: 视觉中国的NoSQL之路:从MySQL到MongoDB : http://blog.nosqlfan.com/html/1155.html 视觉中国MongoDB开发应用实践 : http://www.infoq.com/cn/presentations/pf-mongodb-develop

 

转载地址:http://www.oecp.cn/hi/yongtree/blog/2575

 

 

分享到:
评论

相关推荐

    ASP.NET电子商务

    在这个特定的项目中,我们看到一系列的文件夹和文件,它们共同构成了一个完整的电子商务解决方案。 首先,我们看到一个名为"51aspx源码必读.txt"的文本文件,这可能是项目开发者的指导文档或源码说明,可能包含了...

    FlashStore源码[RIA实验性项目]_dotnet电子商务系统源代码.rar

    对于学习.NET开发和电子商务系统设计的开发者来说,这是一个宝贵的参考资料,可以帮助他们理解实际项目中的各种技术应用和最佳实践。通过对源码的深入研究,不仅可以提升编程技能,还能了解到一个完整的电子商务系统...

    电子商务系统 java web 完整项目 包含源码和数据库 更新中

    开发者可以通过阅读源码,了解电子商务系统的设计思路,掌握Java Web开发的实战技能,同时也能对数据库设计、安全策略、前端技术等有更深入的理解。随着项目的持续更新,开发者还可以跟进最新的技术趋势,如微服务、...

    谈淘宝网升级图片存储服务.docx

    淘宝网作为一个全球知名的大型电子商务平台,其图片存储服务的重要性不言而喻。随着业务的快速发展,淘宝网在图片服务方面面临着一系列挑战。首先,图片占据了网站流量的绝大部分,且需要根据不同的展示场景生成多种...

    基于Spring Boot+mysql的网上商城购物系统设计与实现(源码+文档).zip

    该资源是一个基于Spring...总的来说,这个项目为学习者提供了一个全面的实践平台,涵盖了Web开发中的众多关键技术和最佳实践,对于提升Java开发、Spring Boot应用、数据库管理和电子商务系统设计的理解具有极大的价值。

    176_Java宠物食品销售网_食品店网站_宠物食品销售_电子商务网站_购物商城-源码+数据库+论文(文章).zip

    这是一个基于Java技术构建的宠物食品销售电子商务网站的源码包,包含了完整的数据库和相关的学术论文。这个项目旨在提供一个在线平台,用户可以浏览、购买各种宠物食品,同时为店主提供了管理商品、订单和客户信息的...

    淘宝网图片存储系统架构

    淘宝网作为中国乃至全球最大的电子商务平台之一,面临着极其庞大的图片存储与访问压力。据流量统计,淘宝网的整体流量中,图片访问流量占比高达90%以上,而主站网页仅占不到10%的比例。这背后反映的是淘宝平台上存储...

    c#源码-案例开发经典实例

    在"经典案例"这一标签下,我们可以期待这些代码实例涵盖了各种常见的应用场景,例如:库存管理系统、电子商务平台、CRM客户关系管理、OA办公自动化系统或者是简单的数据统计分析工具。这些案例将帮助学习者了解如何...

    毕业论文设计-IT计算机-基于JSP的网上购物系统的设计与实现(源代码+论文).zip

    通过对这个项目的学习,学生不仅可以掌握JSP开发的基本技能,还能了解到电子商务系统的设计思路和开发流程,对于未来从事Web开发工作大有裨益。同时,这也是一份宝贵的资源,可以供其他开发者参考和学习,提升他们的...

    springboot062购物推荐网站的设计与实现.zip

    【标题】"springboot062购物推荐网站的设计与实现" 涉及的核心知识点主要集中在使用Spring Boot框架构建一个电子商务平台的推荐系统。Spring Boot是Java开发领域中广泛使用的微服务框架,它简化了Spring应用程序的...

    非常实用的ssh2架构的仿淘宝Shopping网上购物项目源码,内含sql,可以作为毕业设计使用

    通过学习和实践这个项目,学生不仅可以深入理解SSH2框架的工作原理,还能了解到一个完整的网上购物系统的设计思路和实现过程,这对于提升Java Web开发技能和理解电子商务系统的运作模式都非常有帮助。

    ASP服装销售系统设计(源代码).rar

    ASP服装销售系统设计是一个基于ASP技术的Web应用程序,主要用于实现线上服装销售的管理功能。...通过深入研究和理解这个项目,开发者不仅可以提升ASP编程技能,还能了解到完整的电子商务系统开发流程。

    ASP+ACCESS网上图书销售系统(源代码+论文).zip

    总结来说,"ASP+ACCESS网上图书销售系统"是一个基于服务器端脚本和关系数据库的小型电子商务应用实例,它涵盖了网页编程、数据库管理和软件设计等多个IT领域的知识。对于想要学习ASP编程、ACCESS数据库应用以及网上...

    去哪儿网机票搜索系统的高并发架构设计.docx

    随着互联网技术的飞速发展,电子商务平台的用户规模和交易量呈现爆炸性增长。去哪儿网作为中国领先的一站式旅游服务平台,在机票预订领域尤为突出。但随之而来的,是巨大的用户访问压力和数据处理挑战。为了应对日均...

    JSP基于网络超市商品销售管理系统的设计与实现(源代码+论文).zip

    该系统涵盖了商品管理、订单处理、用户交互等多个核心功能,旨在提高超市的运营效率和服务质量。 【描述】:该项目不仅提供了源代码,还包含相关的学术论文,这意味着它不仅是一个实际的开发案例,还对系统的设计...

    美国大学编程作业感应器

    - **面向对象设计**:采用面向对象的设计方法,将数据采集、文件存储等功能模块化,提高代码的可读性和可维护性。 - **文档编写**:为每段代码编写详细的注释,帮助他人理解代码逻辑,同时也是对自己编程过程的一种...

    ASP+ACCESS网上花店毕业设计全套(论文+源代码+说明).rar

    ASP.NET是一种基于.NET Framework的服务器端编程模型,用于构建动态Web应用程序。...通过研究这个项目,可以深入理解ASP.NET、C#和Access数据库的集成应用,以及如何将这些技术应用于实际的电子商务场景。

Global site tag (gtag.js) - Google Analytics