分布式图片存储系统技术方案

技术编号:13369000 阅读:66 留言:0更新日期:2016-07-19 15:27
分布式图片存储系统,本发明专利技术针对海量图片给网站带来的访问速度下降、性能压力增大和I/O瓶颈等问题,提出一种海量图片的分布式存储系统。通过把图片数据和网站内容分开部署、在数据库中记录和维护图片服务器状态信息等方法实现图片和页面数据的分离。实验结果表明,该技术能提高网站的访问速度和运行效率,并可动态增加图片服务器的数量,满足日益增加的性能需求。

【技术实现步骤摘要】

本专利技术涉及分布式图片存储系统,是一种具备容错功能的网络分布式文件系统。
技术介绍
图片在目前互联网领域应用越来越多,使用的存储空间、传输带宽、网页体积绝对值和比重越来越大。因此降低存储成本、提高图片并发读取性能、增强容量可扩展能力等成为目前图片存储的主要问题。分布式系统具备高可扩展性、高可用性、高稳定性及高并发性等优势,能够解决海量图片存储与读取,提供优良的解决方案。
技术实现思路
本专利技术的目的是:提供一种分布式图片存储系统,能够提高图片处理速度,提升系统稳定性,实现海量图片数据的存储和访问。基于以上情况,本专利技术基于分布式系统具有多个计算节点,具备保证系统的一致性、侦测故障节点、数据恢复、均衡负载、线性扩展等特点提出了一种分布式图片存储系统。本专利技术分布式图片存储系统由三个子系统组成,包括:一、图片上传提交子系统,图片上传提交子系统用于接收客户端提交的图片字节流,对原始图片进行信息提取、压缩、加数字水印等处理,这些处理均采用并行方式执行,最后将处理后的图片存储到图片存储子系统中。二、图片存储子系统,图片存储子系统可基于分布式文件存储数据库构建,如基于Mongodb的GridFS构建,其是一种由多个节点和分片组成的分布式文件存储系统,其中每一个节点中包含多个分片,实现数据的分块存储,提供系统的高可用性。采用一致性Hash算法来协调多个节点运作,通过心跳机制来定位故障节点,通过选举算法选举主控节点,能在不终止服务的情况下动态的添加或移除节点,动态调节图片存储子系统的存储容量。三、图片读取子系统,图片读取子系统利用Web服务器,如高性能web服务器Nginx向用户提供访问图片存储子系统中的图片服务,通过Nginx处理访问请求,解析请求参数,根据参数不同实现读压缩功能,给用户传输不同大小的图片,以实现根据用户的需求为用户提供不同压缩比的图片的目的。为实现本专利技术之目的,采用以下技术方案予以实现:本专利技术的技术方案如下:分布式图片存储系统主要分为三个子系统:图片上传提交子系统、图片存储子系统和图片读取子系统。各个子系统均以分布式架构部署到不同的设备上,每个子系统也是集群的运作方式。一、图片上传提交子系统该系统接收客户端提交的图片字节流,对原始图片进行提取信息、压缩、数字水印等处理后,再与图片存储子系统交互,将图片存储在图片存储子系统上。系统采用高效的二进制传输协议Hessian,接收客户端传来的图片,在收到图片后还要对原始图片做一定的处理,包括提取图片信息,根据用户要求进行压缩,还可以在图片上添加水印,这些图片处理可通过基于开源框架Hadoop的MapReduce并行化进行。提交子系统的服务器通过Tomcat接收请求,然后启动MapReduce任务,任务执行完毕后返回到主线程,响应客户端。由于Hessian协议的语言无关性可以实现多语言客户端,Hessian协议有很多开源实现版本,包括Java、Python、C++、.Net、Php、Ruby等,所以提交子系统也可以同时支持多种语言的客户端。对于图片处理(MapReduce任务),该子系统采用多次任务分片(Map),一次整合(Reduce)的方式处理图片。多次Map是指每一种图片处理都是一个Map任务,Map任务完成后将输出传给下一个Map任务进行处理,当判定图片处理已经完成时,启动Reduce任务提交到存储子系统中。如此设计可以实现图片的管道化处理,这些管道可以在不同的节点(如Hadoop节点)上进行,可以同时并发处理多个提交请求,提高系统的并发能力。二、图片存储子系统图片存储子系统承载着图片的物理存储和索引机制,在整个系统中处于非常重要的地位。该系统可基于分布式文件存储数据库如Mongodb和对象存储结构如GridsFS实现,采用分片架构如Sharding架构,在其基础上通过一致性Hash算法实现可以保证数据一致性的访问层。通过心跳机制检查故障节点,基于二进制日志提高数据恢复效率。系统底层采用分布式文档存储数据库,如Mongodb集群架构,使用大对象存储结构如GridFs结构进行物理存储,对外采用访问控制代理模块,如mongoproxy,主要功能包括实现读写分离和连接池(预先生成的多个连接)。如图2所示,该子系统包括:数据库分片(如Shards):一个shard为一组mongodb物理数据库集群,由多个分片shard共同组成一个副本集合,每个shard上的数据为某一范围的数据块,可以支持指定shard范围的查询。数据在shard中的存储方式是按块存储的,一旦某个数据块的容量增长到最大容量时,这个数据块会切分成两块。当shard的数据过多时,数据块将被迁移到系统的其他shard中。另外,新的shard加入时,数据块也会迁移,即多个数据库分片分别存储某数据的一部分,组成该完整的数据,当增加数据库分片时,重新计算每个分片上应存储的所述数据的一部分,各数据库分片重新存储按计算结果得到的该数据的一部分。备份块(如Replicaset):由多个存储数据相同、地位平等的mongodb物理数据库集群共同组成,用于存储备份数据块,如上述副本集合。控制中心(如Mongos):可以有多个,相当于一个控制中心,负责数据请求的路由和协调操作,包括请求分发、数据整合等,使得mongodb集群像一个整体的系统。用于提供配置接口、以访问控制中心的配置服务器(Configserver):该配置服务器用于存储每个shard、replicaset、节点和块数据的基本信息。每个configserver上都有一份所有块数据信息的拷贝,以保证每台configserver上的数据的一致性。访问控制代理模块(如Mongoproxy):是一个提供实现读写分离、维护连接池的代理模块。读写分离是将客户的读请求和写请求进行分离,分别转发给不同的任务处理模块进行处理,在执行写请求时,mongod进程就不会再接受其他任务请求,提高系统性能。三、图片读取子系统图片读取子系统面向的是终端浏览图片的用户,通过Httpurl的方式提供图片浏览服务。url格式与参数如下:http://{image_server本文档来自技高网...

【技术保护点】
一种分布式图片存储系统,包括图片上传提交子系统、图片存储子系统和图片读取子系统,其特征在于:图片上传提交子系统用于接收客户端提交的图片字节流,对原始图片进行处理,再将处理后的图片存储在图片存储子系统上;图片存储子系统包括分布式文件存储数据库,用于存储图片;图片读取子系统用于接收客户端的图片处理请求,将该请求的图片处理结果返回给客户端。

【技术特征摘要】
1.一种分布式图片存储系统,包括图片上传提交子系统、图片
存储子系统和图片读取子系统,其特征在于:
图片上传提交子系统用于接收客户端提交的图片字节流,对原始
图片进行处理,再将处理后的图片存储在图片存储子系统上;
图片存储子系统包括分布式文件存储数据库,用于存储图片;
图片读取子系统用于接收客户端的图片处理请求,将该请求的图
片处理结果返回给客户端。
2.根据权利要求1所述的分布式图片存储系统,其特征在于:
该图片上传提交子系统包括服务器、信息提取模块、图片压缩模
块、数字水印模块和应用接口模块;其中:
服务器用于通过应用接口模块接收客户端提交的图片二进制字
节流,服务器将该二进制流复原为图片后将该复原后的图片保存到内
存中,再将图片传输给信息提取模块处理,之后再由图片压缩模块处
理,最后由数字水印模块处理。
3.根据权利要求2所述的分布式图片存储系统,其特征在于:
信息提取模块用于提取图片信息;
图片压缩模块用于对图片进行压缩;
数字水印模块用于对图片添加水印。
4.根据权利要求2所述的分布式图片存储系统,其特征在于:
所述信息提取模块、图...

【专利技术属性】
技术研发人员:许丹霞刘寅汪伟郑宇
申请(专利权)人:北京汇商融通信息技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1