论文部分内容阅读
基于分布式Web集群的相册系统得到了广泛的应用。它具有海量图片存储需求、海量用户元数据存储、图片上传的高并发、上下行带宽的高占用等特点。相册Web站点需要提供稳定、实时、高可用、高负载的服务。本文研究基于大规模、高性能、高容错、分布式相册Web集群架构的设计。主要研究内容包括:1)硬件架构设计。硬件架构分为LVS(Linux Virtual Server)层、Nginx层、Apache层、Tomcat层、数据持久层,前一层对后一层进行集群配置、负载均衡与健康检查。LVS集群实现系统负载均衡。Nginx集群实现Http反向代理、负载均衡与文件缓存。Apache集群提供Http服务并实现请求重写规则,Tomcat集群采用机器分离实现上传与基本页面功能。数据持久层采用分布式数据库存储海量用户元数据与分布式文件系统存储图片等非结构化数据,图片与元数据采用多重备份恢复机制,相同数据存放不同机架保证数据的安全性与访问性。2)软件架构设计。软件框架采用MVC(Model View Controller)设计模式并利用Spring框架作为技术架构,结合前端Freemarker框架与DWR(Direct Web Remoting)框架来展示页面。统一开发分布式数据库与分布式文件系统访问中间件。采用Memcached内存缓存技术减少分布式数据库请求次数。3)高性能高容错研究。根据用户信息采用HAproxy实现从Apache集群到Tomcat的负载均衡。采用Varnish对Http请求加速,利用缓存来存储请求内容并设置超时信息。为适配所有终端需求,在上传过程中采用异步方式压缩生成不同尺寸的图片。静态资源采用内容分发系统,不仅能降低运营成本,提升用户速度,并能够解决网络的互联互通,防御DDOS(Distributed Denial of Service)攻击。4)海量图片存储去重研究。结合分布式数据库与分布式文件系统去重海量图片,该技术通过提取图片文件二进制流的特征段生成文件MD5码签名,依据签名对图片文件进行存储去重。结合实验数据分析验证该技术不仅能够准确的去重图片,且在计算签名时间、上传速度等方面均优于文件级与块级去重技术,是对海量图片数据存储的一种优化。同时针对该技术的不足性提出了改进方案。本文实现了相册Web集群的高性能分布式架构设计,从硬件架构、软件架构与元数据存储都设计了切实可行的方案。同时探究了提升整个架构性能的方法以及海量数据存储优化设计。系统可以在全文检索、页面推荐等方面进一步研究。