分布式图片存储系统的制作方法

文档序号:9922077阅读:650来源:国知局
分布式图片存储系统的制作方法
【技术领域】
[0001]本发明涉及分布式图片存储系统,是一种具备容错功能的网络分布式文件系统。
【背景技术】
[0002]图片在目前互联网领域应用越来越多,使用的存储空间、传输带宽、网页体积绝对值和比重越来越大。因此降低存储成本、提高图片并发读取性能、增强容量可扩展能力等成为目前图片存储的主要问题。分布式系统具备高可扩展性、高可用性、高稳定性及高并发性等优势,能够解决海量图片存储与读取,提供优良的解决方案。

【发明内容】

[0003]本发明的目的是:提供一种分布式图片存储系统,能够提高图片处理速度,提升系统稳定性,实现海量图片数据的存储和访问。
[0004]基于以上情况,本发明基于分布式系统具有多个计算节点,具备保证系统的一致性、侦测故障节点、数据恢复、均衡负载、线性扩展等特点提出了一种分布式图片存储系统。
[0005]本发明分布式图片存储系统由三个子系统组成,包括:
[0006]—、图片上传提交子系统,图片上传提交子系统用于接收客户端提交的图片字节流,对原始图片进行信息提取、压缩、加数字水印等处理,这些处理均采用并行方式执行,最后将处理后的图片存储到图片存储子系统中。
[0007]二、图片存储子系统,图片存储子系统可基于分布式文件存储数据库构建,如基于Mongodb的GridFS构建,其是一种由多个节点和分片组成的分布式文件存储系统,其中每一个节点中包含多个分片,实现数据的分块存储,提供系统的高可用性。采用一致性Hash算法来协调多个节点运作,通过心跳机制来定位故障节点,通过选举算法选举主控节点,能在不终止服务的情况下动态的添加或移除节点,动态调节图片存储子系统的存储容量。
[0008]三、图片读取子系统,图片读取子系统利用Web服务器,如高性能web服务器Nginx向用户提供访问图片存储子系统中的图片服务,通过Nginx处理访问请求,解析请求参数,根据参数不同实现读压缩功能,给用户传输不同大小的图片,以实现根据用户的需求为用户提供不同压缩比的图片的目的。
[0009]为实现本发明之目的,采用以下技术方案予以实现:
[0010]本发明的技术方案如下:
[0011]分布式图片存储系统主要分为三个子系统:图片上传提交子系统、图片存储子系统和图片读取子系统。各个子系统均以分布式架构部署到不同的设备上,每个子系统也是集群的运作方式。
[0012]一、图片上传提交子系统
[0013]该系统接收客户端提交的图片字节流,对原始图片进行提取信息、压缩、数字水印等处理后,再与图片存储子系统交互,将图片存储在图片存储子系统上。系统采用高效的二进制传输协议Hessian,接收客户端传来的图片,在收到图片后还要对原始图片做一定的处理,包括提取图片信息,根据用户要求进行压缩,还可以在图片上添加水印,这些图片处理可通过基于开源框架Hadoop的MapReduce并行化进行。提交子系统的服务器通过Tomcat接收请求,然后启动MapReduce任务,任务执行完毕后返回到主线程,响应客户端。由于Hessian协议的语言无关性可以实现多语言客户端,Hessian协议有很多开源实现版本,包括Java、Python、C++、.Net、Php、Ruby等,所以提交子系统也可以同时支持多种语言的客户端。
[OOM] 对于图片处理(MapReduce任务),该子系统米用多次任务分片(Map),一次整合(Reduce)的方式处理图片。多次Map是指每一种图片处理都是一个Map任务,Map任务完成后将输出传给下一个Map任务进行处理,当判定图片处理已经完成时,启动Reduce任务提交到存储子系统中。如此设计可以实现图片的管道化处理,这些管道可以在不同的节点(如Hadoop节点)上进行,可以同时并发处理多个提交请求,提高系统的并发能力。
[0015]二、图片存储子系统
[0016]图片存储子系统承载着图片的物理存储和索引机制,在整个系统中处于非常重要的地位。该系统可基于分布式文件存储数据库如Mongodb和对象存储结构如GridsFS实现,采用分片架构如Sharding架构,在其基础上通过一致性Hash算法实现可以保证数据一致性的访问层。通过心跳机制检查故障节点,基于二进制日志提高数据恢复效率。
[0017]系统底层采用分布式文档存储数据库,如Mongodb集群架构,使用大对象存储结构如GridFs结构进行物理存储,对外采用访问控制代理模块,如mongo proxy,主要功能包括实现读写分离和连接池(预先生成的多个连接)。如图2所示,该子系统包括:
[0018]数据库分片(如Shards):—个shard为一组mongodb物理数据库集群,由多个分片shard共同组成一个副本集合,每个shard上的数据为某一范围的数据块,可以支持指定shard范围的查询。数据在shard中的存储方式是按块存储的,一旦某个数据块的容量增长到最大容量时,这个数据块会切分成两块。当shard的数据过多时,数据块将被迀移到系统的其他shard中。另外,新的shard加入时,数据块也会迀移,即多个数据库分片分别存储某数据的一部分,组成该完整的数据,当增加数据库分片时,重新计算每个分片上应存储的所述数据的一部分,各数据库分片重新存储按计算结果得到的该数据的一部分。
[0019]备份块(如Replica set):由多个存储数据相同、地位平等的mongodb物理数据库集群共同组成,用于存储备份数据块,如上述副本集合。
[0020]控制中心(如Mongos):可以有多个,相当于一个控制中心,负责数据请求的路由和协调操作,包括请求分发、数据整合等,使得mongodb集群像一个整体的系统。
[0021]用于提供配置接口、以访问控制中心的配置服务器(Configserver):该配置服务器用于存储每个shard、replica set、节点和块数据的基本信息。每个config server上都有一份所有块数据信息的拷贝,以保证每台config server上的数据的一致性。
[0022]访问控制代理模块(如Mongoproxy):是一个提供实现读写分离、维护连接池的代理模块。读写分离是将客户的读请求和写请求进行分离,分别转发给不同的任务处理模块进行处理,在执行写请求时,mongod进程就不会再接受其他任务请求,提高系统性能。
[0023]三、图片读取子系统
[0024]图片读取子系统面向的是终端浏览图片的用户,通过Httpurl的方式提供图片浏览服务。url格式与参数如下:
[0025]http://{image_server}/imgname/{encoded_pic_id}.jpg?scale ={x|m|ssize}
[0026]image_server:图片浏览请求处理Http服务器域名或ip;
[0027]ecode_pic_id:图片id加密后的字符串;
[0028]scale:图片尺寸x、m、s分别指大、中、小图片,同时支持大于O的数字,指定图片的一边(长边或短边)变为这个数字,另一边(短边或长边)则根据图片的原来长度宽比进行伸缩得到。
[0029]图片读取子系统介于最终浏览用户和存储子系统之间,主要功能是接受用户请求,从存储子系统中获取图片,然后响应给用户。这个过程还包括缓存交互和图片压缩等。[°03°] 该系统的http请求处理基于web服务器,如Ngnix实现,Nginx收到Http请求之后,根据配置文件和负载均衡算法选择该子系统的具体模块(如过滤,重定向、反向代理、缓存、读取等)进行处理,处理模块执行处理之后,把结果输出给客户端。
[0031 ]该系统的缓存功能是基于分布式内存对象缓存系统,如memcached实现,memcached是一个开源的基于内存对象的分布式缓存系统。采用与web服务器如Ngninx集成的方式,web服务器Nginx在处理请求的过程中会先去memcached缓存中查找图片数据,如果没有命中才会去数据库中查询图片,这样的实现方式进一步提高了系统的响应速度。
[0032]—种分布式图片存储系统,包括图片上传提交子系统、图片存储子系统和图片读取子系统,其特征在于:
[0033]图片上传提交子系统用于接收客户端提交的图片字节流,对原始图片进行处理,再将处理后的图片存储在图片存储子系统上;
[0034]图片存储子系统包括分布式文件存储数据库,用于存储图片;
[0035]图片读取子系统用于接收客户端的图片处理请求,将该请求的图片处理结果返回给客户端。
[0036]所述的分布式图片存储系统,优选的:
[0037]该图片上传提交子系统包括服务器、信息提取模块、图片压缩模块、数字水印模块和应用接口模块;其中:
[0038]服务器用于通过应用接口模块接收客户端提交的图片二进制字节流,服务器将该二进制流复原为图片后将该复原后的图片保存到内存中,再将图片传输给信息提取模块处理,之后再由图片压缩模块处理,最后由数字水印模块处理。
[0039]所述的分布式图片存储系统,优选的:
[0040]信息提取模块用于提取图片信息;
[0041]图片压缩模块用于对图片进行压缩;
[0042]数字水印模块用于对图片添加水印。
[0043]所述的分布式图片存储系统,优选的:
[0044]所述信息提取模块、图片压缩模块、数字水印模块、应用接口模块均能够对多张图片进行并行处理。
[0045]所述的分布式图片存储系统,优选的:图片存储子系统包括以下部分:
[0046](I)数据库分片,每个数据库分片为一组数据库集群,用于存储预定大小的数据块;
[0047](2)数据库备份块,每个数据库备份块由多个存储数据相同、地位平等的数据库集群组成,用于存储备份数据块;
[0048](3)配置服务器,用于提供配置接口,以访问控制中心;
[0049](4)控制中心,用于负责路由和协调操作;
[0050](5)访问控制代理模块,用于实现读写分离和连接池维护。
[0051 ]所述的分布式图片存储系统,优选的:
[0052]图片读取子系统包括图片请求处理模块、图片处理模块和图片缓存模块;
[0053]图片请求处理模块用于对收到的客户端请求进行负载均衡处理,之后交由图片处理模块处理,图片处理模块执行以下操作:重定向、反向代理、缓存读取,并把处理结果通过过滤模块过滤之后将结果返回给客户端;
[0054]图片读取子系统通过图片请
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1