架构之分布式图片存储系统架构

图片在不少的应用中会使用到,在论坛和图片分享等应用中会有大规模的使用,在这些应用中的图片的量是很吓人的,而且对图片访问的并发也会很是高,单个的服务器已经没法知足须要了,这个时候须要考虑搭建一个分布式的图片存储系统以保存这么大量的图片信息,而且能支撑高并发的访问。服务器

分析图片的访问,主要问题在于两个方面,一是当高并发时,带宽占用会很是多;二是高并发时硬件的IO会很是高。如何解决这两个问题就是解决问题的方案。网络

先来解决下硬件的高IO,若是使用分布式的部署,将高并发访问的IO分散到多台图片服务器上去,那么单台服务器的IO就会下来。那如何才能将图片分散存储到多台服务器上,客户端访问图片的时候又如何才能准确的路由到正确的服务器上?这就须要有一个目录服务,目录服务保存和提供图片存放位置的信息,客户端经过目录服务获取图片应该存放在哪台服务器上,以及应从哪台服务器上读取或下载图片。有了目录服务器在服务器端确实能够将图片分布式存储了,但客户端使用图片服务的步骤复杂了,须要先调用目录服务器获取图片上传或下载的服务器信息,再访问对应的服务器上传或下载图片。为了客户端调用能相对简单,系统应该提供一个客户端的封装,以js或jar的方式提供,以简化客户端的使用。这里再也不考虑分布式存储的高可用。架构

根据以上分析,一个可实现的分布式图片存储系统的架构以下:并发

分布式图片存储系统架构 - dryr - 要有追求,但不强求

 

    再来看下带宽占用的问题,一个可行的想法是能够考虑对图片进行压缩传输,但图片的压缩和解压会占用机器的cpu,下降处理性能,在高并发时甚至可能会让服务器崩溃。另外,CDN(内容分发网络)也是一个办法,这样能够分散带宽需求,好比在网通网络和电信网络都建一个节点,两个节点间进行同步(这或许是个难点,须要精细的分析)。使用网通网络的客户端访问时路由到网通的节点,使用电信网络的客户端访问时路由到电信的节点,这样就分散了带宽需求,在网通或电信的内部网络带宽要远高于网通与电信间的带宽。分布式

 

 

点击连接加入群【.NET大型网站架构】433685124QQ群高并发

相关文章
相关标签/搜索