求这张咸猪手图片大全组图的组图

本人是软件开发实习的,以前没做过类似的项目,各位大神们能否给我推荐一些Java开发图片服务器的书籍、文章,最好有例程。要求存储量大、并发量高。~~~~~~~~~~~~~~~~~~~~感谢大家的回答,我的项目还有一个跟facebook不同的需求是,单个图片就很大。更希望能推荐给我一些有java源代码的资料,感激不尽!
以下来自Facebook的论文:Haystack: Facebook’s photo storage你可以bing一下这个论文名,这个算是业界顶级设计。一般的话,你看一下CDN的相关书籍就行了-----------------------------------------------------------------------1 介绍Haystack是一个对象存储object store,Facebook用于存放图片,特点为:写一次,读多次,永远不更新,很少会删除传统的文件系统存储图片,性能很差,主要是它的目录结构,每个文件都有meta data。对于图片,很多文件meta data是无用的,比如权限,这些meta会浪费存储空间。而主要的性能开销在于文件的meta必须从磁盘读到内存中,才能用于查找文件。对于大规模的文件,比如PB级别的,访问meta是一个性能瓶颈尤其是使用NAS时,读一个图片需要好几个操作,导致频繁disk IOHaystack的设计目标:1. 高性能,低延迟Haystack保证每次读数据最多只有一次磁盘IO。为了做到这一点,所有的meta data都保存在内存中2.容错Haystack把每个图片都复制到多个地理位置,防止机房全面停电,或者国家之间的链接断了3. 控制成本相对NAS,Haystack成本更低4. 简单不能过度设计。Haystack是一个新系统,缺乏经年累月的测试,所以一定要简单,才能够快速在几个月内完成系统2 背景和之前的设计2.1 背景传统的图片服务是web server,CDN,存储系统一起来为用户提供图片一般传统的设计是,用户请求发到CDN,如果CDN中没有图片,它会读取存储系统上图片,并放在CDN缓存中2.2 基于NFS的设计CDN自身并不提供适合于社交网络的图片服务。CDN适合服务那些最热的图片,而社交网络往往会有对大量的旧的图片的请求,比如一些许久不登陆的账户登录了,他的图片需要显示,那么基本上他所有的图片都不在CDN的缓存中,然后需要从存储上读取。这种情况称为long tail我们一开始在NFS每个目录中存储上千的文件,这样导致读取一个文件也会有巨量的磁盘操作,这是NFS的缺点,一般来说读取一个图片会有10个以上磁盘操作;而当我们减少目录中的文件个数,每个目录存放几百个文件,仍然会读取一个文件至少有3次磁盘操作为了进一步降低磁盘操作,我们让Photo Server显式缓存NAS返回的文件句柄。当Photo Server第一次打开一个文件时,它会在memcache中缓存文件句柄。当Photo Server访问一个被缓存的文件句柄时,它会调用一个open_by_filehandle的系统功能,这个是我们加到系统内核的功能。但是,这种做法只提高了一点点性能2.3 讨论面对NAS的性能瓶颈,我们开始探索是否要自建一个类似GFS的文件系统3.设计和实现Facebook使用CDN来提供图片服务,利用Haystack来处理long tail现象。Haystack用于解决NFS的瓶颈问题,即减少磁盘操作。它大量减少了用于存储文件的meta data,所以所有的meta data都可以加载在内存中。Haystack把多个图片存在一个文件中,所以文件数量减少了。Haystack有两种meta data:Application metadata,存放了brower获取图片的所需要的信息Filesystem metadata,存放在从磁盘中获取图片而所需要的信息3.1 总述Haystack架构包含3个核心组件:the Haystack Store, Haystack Directory, and Haystack CacheStore封装了图片的存储系统,用于管理图片的meta data我们通过physical volumes来组织Store的容量。比如,可以把10T分成100个physical volumes,每个100G空间存储我们可以把在不同物理机器上的physical volumes组成logical volumes当Haystack把一个图片写入logical volume时,图片会写到对应的所有的physical volume上,这样能够防止某个磁盘坏了导致图片丢失Diretory维护了logical与physical volume的对应,以及其他的application metadata,比如每个logical volume有多少图片,空间还剩多少Cache是作为内部的CDN,保存最热的图片,也以防上游的CDN宕机了之后,需要重新拖图片当一个用户访问一个page时,web server用Directory为每个photo组成一个URL。这个URL包含了几个信息片段,每个片段都对应了取图片的步骤(浏览器联系CDN或是缓存,从store的某个机器上获取图片)第一部分指明了从哪个CDN来获取图片,CDN会用URL的最后一部分(logical volume,photo)来在内部查找图片,如果CDN找不到图片,它会去掉CDN的地址,然后联系cache。Cache会做类似的查询,如果找不到,它会找到store的machine,来读取图片。上图是上传的路径用户上传图片时,web server会请求Directory的可写入的logical volume,web server给图片分配一个唯一ID,然后把它上传到Store3.2 Haystack DirectoryDirectory提供四个主要功能:1. 提供logical volume到physical volume的映射web server在用户上传图片时,需要使用这些映射;另外,web server在用户请求图片时,需要这些映射生成对应的URL2.Directory对logical volume之间的写操作和physical volume之间的读操作进行负载均衡3. Directory决定了图片的请求是被CDN还是被Cache处理4. Directory决定了哪些logical volume是只读的(比如日常维护的原因,或者容量已经满了)Directory本身是一个PHP应用(用memcached缓存),数据存储在数据库中(复制节点)如果我们丢掉了某个机器上的数据,我们就把对应的信息都删除掉,换一个新的机器3.3 Haystack cachecache接收CDN的请求,或者直接接收用户浏览器的请求Cache是一个分布式的hash table,使用图片的id作为key如果cache不能直接响应图片请求,它会从Store中读取图片下面说明Cache的重要行为:Cache只会在两个条件满足的时候,才会缓存图片1. 请求来自与浏览器,而不是CDN2. 图片来自一个可以写入的Store machine第一个条件是我们在前一个NFS设计中获取的经验,post-CDN caching是比较无效的,因为一个请求miss了CDN而命中了Cache。第二个条件的理由是不直接。我们利用Cache来保护我们的可写入的Store被频繁读取,因为两个有趣的特性:图片在刚上传之后会被疯狂访问;我们的文件系统对于只读、只写的性能都不错,但是对于又读又写,性能不好3.4 Haystack StoreStore的接口故意做的简单。读取接口是根据logical volume,machine id,photo id来获取图片,如果没有发现,就返回错误每个Store的machine都管理很多physical volume,每个volume都有百万张图片。可以把每个physical volume想象成一个巨大的文件,文件名为Store machine可以用logiccal volume的id和图片的offset,很快访问到一张图片。这个知识是Haystack设计的核心:不需要磁盘操作而能够获取文件名字,offset,图片大小,Store machine会把physical volume的文件句柄保存在内存中,以及meta data,比如文件名、offset,文件大小下面介绍每个physical volume的layout,以及如何从volume映射到内存中每个physical volume都是一个巨大的文件,由一个Super Block开头,后面跟了一系列Needles。每个needle都是一个图片,下表是needle的结构为了很快获取needle,每个store machine都会维护一个内存结构,用于缓存每个volume的信息。这个结构是key pairs(key,alternative key),包含了needle flag,size,offset。alternative key是为了解决历史遗留问题而使用的3.4.1 photo read当cache读取photo时,它提供logical volume id,key,cookie。cookie是嵌在url中的number。cookie是在图片上传时随机分配的,为了防止通过猜测图片URL来攻击网站当一个store machine收到一个Cache machine的请求时,它在内存中查找图片的信息,然后把对应的整个needle都读取出来,检查cookie,验证数据完整性,然后返回图片3.4.2 photo write当上传图片时,web server提供logical volume id,key,alternative key,cookie,data给store machinemachine把needle image append在physical volume之后,同时更新内存中的结构这种append-only限制了一些对图片的更新操作,比如旋转图片因为Haystack不允许覆盖needle,所以更新图片只能上传一个相同key,alternative key的图片。如果新图片被写入一个新的logical volume,Directory会更新图片的meta data,然后新的请求永远不会获取老版本的图片。如果新的needle写入了相同的logical volume,machine把新的needle append在physical volume之后。Haystack根据它们的offset来区别最新的版本,offset最大的就是最新的版本3.4.3 photo delete删除是直接的。machine在内存和physical volume中同时设置delete flag。3.4.4 index fileStore machine在重启时,使用一个重要文件index file来优化性能每个physical volume都有一个index file问题在于index file是异步写的。当我们写一个新图片的时候,index file是异步写;删除一个图片,index file也是异步的这样的问题会存在:needle可能没有和index file同步我们把没有索引的needle称为orphan,重启之后,machine会立刻检查每个orphan,创建对应的index record,并把这个record append在index file之后。我们可以这样做是因为orphan只会存在volume file的最后。检查完orphan之后,store machine才提供服务。因为index file可能还包含被delete的文件(因为同步过程失败了),machine在读到这个图片之后,会检查delete flag,如果一个needle被删除了,machine会更新它的内存结构,并通知cache图片没有找到3.4.5 File system目前每个store machine使用的是XFS文件系统。使用XFS有两个好处:1. 几个大文件的block map可以存在内存中2. XFS对于文件预分配、迁移数据块、控制大文件增长都很出色使用XFS,Haystack可以减少磁盘操作3.5 故障恢复我们采用两种技术来处理故障恢复:侦测和修复为了积极发现machine发生问题,我们做了一个后台任务,叫做pitch fork,周期性检查每个machine的问题pitch fork远程测试每个machine的链接,检查每个volume file,试图读取图片。一旦pitch fork发现machine发生异常,它会把这个machine上的所有logical volume标记为read only,我们线下检查故障一旦发现故障原因,我们可能很快修复,但是也存在需要很长时间才能修复的情况。比如不得不bulk sync文件。对此,我们还在研究如何解决这个限制。3.6 优化下面我们讨论几个帮助Haystack成功的优化点3.6.1 压缩compactioncompaction是一个online 操作,把重复的needle删除掉machine把volume file中的needle复制到一个新的文件中,过滤掉重复的、删除掉的文件在compaction过程,删除操作会在两个文件上同时执行。一旦compaction到了volume file的末尾,它会block住对这个volume的任何更新操作,自动切换文件,并更新内存中的结构我们使用compaction来释放磁盘空间。删除模式类似于图片查看:新的图片比较容易被删除。1年时间可能有25%的图片被删除3.6.2 节省更多的内容正如之前描述的,machine维护一个内存结构,这个结构包含了flag,而我们的系统只用了删除标记,我们节省了这个标记,通过把图片的offset设置成0。另外,内存结构也不保存cookie,而是在读出needle之后,才比对cookie。通过这两个技术,我们节省了20%内存3.6.3 批量更新因为磁盘在批量写的时候,性能好于随机写。所以我们支持批量上传。幸运的是,用户一般都是整个相册都上传
已有帐号?
社交帐号登录
无法登录?
社交帐号登录
在这里我是路人甲求这张图片的出处_百度知道
求这张图片的出处
要高清图更
提问者采纳
插画 原创 手绘 Pixiv lily wine侵删【id= 画师:ASK】
提问者评价
来自团队:
其他类似问题
为您推荐:
其他2条回答
画师 ASK作品
是月咏歌呗吗出自守护甜心
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求一张全白的白色图片_百度知道
求一张全白的白色图片
提问者采纳
头像是魔笛的呢。
额 我头像是在百度上找的 不过很喜欢这张图片
用了一年了
原来没看过啊。。是个动漫
之前听人说起过 不过没太注意 有时间可以去看看
有两季,还好看的,咱要做作业了。8
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
为您推荐:
其他2条回答
我遇见种情况打浏览器关掉所标签页截图保存
张全的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁菜单导航全屏广告
512x512512x512
我们一直在进步求一个24等分和一个48等分的圆的图图越大越好,纯黑色,不要背景
牧蛋疼有多疼25
为您推荐:
近似长方形周长为2πr+2r=24.84r=24.64÷(2π+2)=3圆面积为πr²=27.8
...我要的是图
扫描下载二维码

我要回帖

更多关于 咸猪手图片大全组图 的文章

 

随机推荐