海量图片的分布式存储设计与实现_第1页
海量图片的分布式存储设计与实现_第2页
海量图片的分布式存储设计与实现_第3页
海量图片的分布式存储设计与实现_第4页
海量图片的分布式存储设计与实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

海量图片的分布式存储设计与实现一、争论背景:性能与资金,二者可兼得?那么问题来了?〔如淘宝、京东等电子商务网站〕时,网页中的图片信息占据了页面数据流量的很大局部,那么问题也来了:,无法从一台效劳器上同时下载页面中全部图片信息;文字和图片以提高扫瞄速度。因此,页面中图片越多Web就越大。同时由于受到扫瞄器本身的并发连接数限制(2个~6个并发),意味着示。I/O:因此当并发用户数越来越多时,I/O性能瓶颈;由于受操作系统的限制,一个名目中能存放的图片文件数量也是有限的:随着图片资源不断增加,如何有效治理和维护图片也是一个难题;如何解决问题?对于少数大型网站系统,由于自身具有雄厚的资金和人力资源,可承受NFS、CDN、Ligd、反向代理、负载均衡等技术提高用户访问速度;但是,这些技术需要浩大的资金来支持。对于多数中小型网站系统,有没有一种方案适用于中等规模商务网站的海量图片数据分布式动态存储及负载均衡的解决方案?该方案可否只需增加器的数量及图片的存储名目,确保系统具有可扩展性和伸缩性。二、架构设计:构建图片效劳器集群有海量级的图片文件,所承受的技术更是涉及广泛,从硬件到软件、编程语言、数据库、Web效劳器、防火墙等各个领域都有较高要求。因此,有必要设立单独的图片效劳器来特地存放图片,把图片数据的流量从Web效劳器上分别开,这样的架构可以有效缓解WebI/O系统设计目标基于以上的考虑,我们期望的设计目标是:图片能进展分布式存储;图片效劳器能实现负载均衡;点;系统的正常运行;〔1〕和2〕是针对系统的高可用和伸缩性,而3〕和4〕对系统的高可用和可扩展而言的。系统架构设计系统整体架构如上图所示:包括客户端、Web效劳器、数据库效劳器、图4用户扫瞄网页时,Web效劳器响应恳求并访问数据库效劳器,获得网页中全部URLURL效劳器下载并显示相应图片。同时需要记录全部图片效劳器的配置及当前状态信息。可以依据需要动态增加或删减。三、系统实现:一种简洁且价廉可用的方案数据库设计与实现:两张简洁的表Web效劳器需要准时把握全部图片效劳器的状态和信息才能动态打算把图地看出,图片效劳器信息表中记录了图片效劳器的ID、名称、URL、最大存储数量、当前已存数量以及效劳器的状态:不行用,每个图片效劳器下会有多个图片信息记录,因此它们是一对多的关系。图片效劳器状态信息表建表语句:图片记录信息表建表语句:是:保存;由客户端扫瞄器对图片路径向图片效劳器集群进展恳求;Controller图片上传的过程比较简单,首先Web效劳器接收客户端的访问恳求WebGetAllUseableServersFlgUsabletrueCurPicAmountMaxPicAmount最大存储量这两个条件。假设有宕机或不行用的状况,需要治理员将那一行的FlgUsablefalse。publicList<ImageServerInfo>GetAllUseableServers{List<ImageServerInfo>serverList=db.ImageServerInfo.Where<ImageServerInfo>(s=>s.FlgUsable==true&&s.CurPicAmount<s.MaxPicAmount).ToList;returnserverList;}这里用到了一个GetServerIndex的方法,它的实现如下:从图片效劳N。然后用随机函数产生一个随机数R1,用R1与N进展取余运算记作I=R1%N。则C[I〔固然,我们可以设计一个更加高效的,类似于一致性哈希算法的哈希函数〕#region01.猎取效劳器索引号///<summary>///01.猎取效劳器索引号///</summary>///<paramname=“serverCount“>效劳器数量</param>///<returns>索引号</returns>publicstaticintGetServerIndex(intserverCount){Randomrand=newRandom;intrandomNumber=rand.Next;intserverIndex=randomNumber%serverCount;returnserverIndex;}#endregion图片的字节流转交给了具体的图片效劳器处理程序:Web端程序的工作就到此完毕,但是这里木有承受异步,因此需要等待图片效劳器的工作完毕。WebClientclientnewWebClient;client.UploadData(serverFullUrl,类向具体的图片效劳器发送恳求,或者是通过在图片效劳器上部署WebServiceWebView上传页面:formenctype=“multipart/form-data“扫瞄页面:这里主要通过对不同的图片效劳器发送恳求猎取图片,从而降低WebI/O这是一个简洁的一般处理程序,它首先接收要保存的图片扩展名以及效劳器ID,依据规章生成具体的保存路径,然后通过I/O流将图片保存到该效劳器的磁盘上;最终将更改数据库信息记录,由于要同时对两张表进展修改,这里我AddpublicImageStatusEnumAdd(ImageInfoimageEntity){//首先是图片信息表db.ImageInfo.Add(imageEntity);//其次是图片效劳器信息表ImageServerInfo

serverEntity =s=>s.ServerId==imageEntity.ImageServerId);if(serverEntity!=null){//当前效劳器存储数量+1serverEntity.CurPicAmount+=1;}//一起提交到SQLServerintresult=db.SaveChanges;if(result>0){}{}}

returnImageStatusEnum.Failure;简洁测试图片文件的上传与扫瞄测试前的预备工作64VMwareR2Web〔没用端口号区分不同的效劳程序来模拟效果。②将WebIIS中,80108020测试图片文件上传与存储gif的过程作为展现。在我连续上传操作了N次之后,现在我们来看看两个文件效劳〔这里主要是看部署的程序所在Upload〕AB总结:从图中可以看出,我们一共上传了13张图片,其中图片效劳器A6张,图片效劳器B7张,两个效劳器的负载并没有消灭一头小一头大,而是一个相比照较均衡的数量,这得益于我们的随机函数。测试图片文件扫瞄恳求①是否显示了图片列表:②是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论