公开 内部公开 机密 绝密√
另外,在将所有备份文件从服务器上转移出来之前要进行压缩和加密。另外还要确保拥有设计合理的、有用的关于安全、性能和稳定性问题的设定,包括防止数据败坏,其中很多设定都是非常重要的。
2.3.5 文件存储 1. 文件共享 1) HDFS(GFS)
HDFS是Apache Hadoop项目中的一个分布式文件系统实现,基于Google于2003年10月发表的Google File System(GFS)论文。
? 特性
1) 硬件要求低 2) 高容错性 3) 易可扩展 4) 配置简单 5) 超大文件
HDFS采用master/slave架构。
一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。
第17页,共39页Page 17 , Total39
4/4/2013
版权所有,侵权必究All rights reserved
公开 内部公开 机密 绝密√
2) NFS与GFS比较
首先从它们的功能上进行分析。NFS即网络文件系统,是由SUN公司开发的。它是FreeBSD支持的文件系统中的一种,允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序访问远端系统上的文件就像访问本地文件一样。
而GFS是Google为了满足本公司迅速增长的数据处理要求而开发的文件系统。GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它是针对Google的计算机集群进行设计的,专门是为Google页面搜索的存储进行了优化。
所以从功能上看,它们两者是完全不同的概念。
其次从结构上比较,NFS至少包括两个主要部分:一台服务器,以及至少一台客户机。被共享的目录和文件存放在服务器上,客户机远程地访问保存在服务器上的数据。
GFS则由一台Master(通常有几台备份)和若干台TrunkServer构成。GFS中文件备份成固定大小的Trunk分别存储在不同的 TrunkServer上,每个Trunk有多份(比如3)拷贝,也存储在不同的TrunkServer上。Master负责维护GFS中的 Metadata,即文件名及其Trunk信息。客户端先从Master上得到文件的Metadata,根据要读取的数据在文件中的位置与相应的 TrunkServer通信,获取文件数据。
再从跨平台性上,NFS的基本原则是“容许不同的客户端及服务端通过一组RPCs分享相同的文件系统”,它是独立于操作系统的,容许不同的操作系统共同地进行文件的共享。
而GFS则没有这一特点,文件只能被集群系统中的PC所访问,而且这些PC的操作系统一般是Linux。
最后从规模上比较,HDFS只应用在大批量的数据共享上。目前Google拥有超过200个的GFS集群,其中有些集群的PC数量超过5000台。集群的数据存储规模可以达到5个PB,并且集群中的数据读写吞吐量可达到每秒40G。
而NFS一般没有这么巨大的规模。 2. 文件的多服务器自动同步
使用Linux 2.6内核的inotify监控Linux文件系统事件。
利用开源的lsync监听某一目录,如果目录内文件发生增、删、改,利用Rsync协议自动同步到多台服务器。 3. 图片服务器分离
特别是如果程序与图片都放在同一个 APAHCE 的服务器下,每一个图片的请求都有可能导致一个 HTTPD 进程的调用。
使用独立的图片服务器不但可以避免以上这个情况,更可以对不同的使用性质的图片设置不同的过期时间,以便同一个用户在不同页面访问相同图片时不会再次从服务器(基于是缓存服务器)取数据,不但快速,而且还省了带宽。还有就是,对于缓存的时间上,亦可以做独立的调节。
4/4/2013
版权所有,侵权必究All rights reserved
第18页,共39页Page 18 , Total39
公开 内部公开 机密 绝密√
2.3.6 网络问题解决方案
你不可能要求所有的使用人员,都和你的服务器在一个运营商的网络内,而不同网络之间访问速度会很慢,我们可以采用镜像网站和引入CDN来解决这一问题。
用户动态内容(社区、投票、调查、搜索、点评、视频)静态内容(静态网页、图片)DNS解析电信用户网通用户CDN其他用户服务器1服务器n服务器1服务器n服务器1服务器n电信机房多线机房网通机房
1. 智能DNS解析
我们可以在不同的网络运营商部署web服务器,通过linux上的rsync工具自动同步到不同网络接入商的web服务器上,以作为主站的镜像。
然后通过配置智能DNS解析来引导不同网络的访问用户到对应的网络运营商的web服务器。 2. CDN
如果有足够的投资,也可以采用CDN(内容分发网),把静态内容(静态页面和图片)进行CDN缓存,以减轻服务器压力。
CDN的全称是Content Delivery Network,即内容分发网络。它采取了分布式网络缓存结构(即国际上流行的web cache技术),其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络\边缘\,使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。 (也就是一个服务器的内容,平均分部到多个服4/4/2013
版权所有,侵权必究All rights reserved
第19页,共39页Page 19 , Total39
公开 内部公开 机密 绝密√
务器上,服务器智能识别,让用户获取离用户最近的服务器,提高速度。
目前,国内访问量较高的大型网站如新浪、网易等,均使用CDN网络加速技术,虽然网站的访问巨大,但无论在什么地方访问都会感觉速度很快。而一般的网站如果服务器在网通,电信用户访问很慢,如果服务器在电信,网通用户访问又很慢。
2.3.7 WEB应用开发架构设计思路 1. 基于MVC的三层应用开发架构
应用开发实现MVC三层架构进行web应用开发,采用ibatis作为持久层框架,c3p0作为数据库连接池。
iBATIS 是一个可以设计和实现更好的 Java 应用程序持久化层的框架。iBATIS 把对象和存储过程或者使用 XML 描述符的 SQL 语句进行了关联。简单是 iBATIS 最大的优势
? ibatis-使用ibatis的十个理由 1. 至少能操作10种以上的数据库 2. 可配置的caching(包括从属)
3. 支持DataSource、local transaction managemen和global transaction 4. 简单的XML配置文档
5. 支持Map, Collection, List和简单类型包装(如Integer, String) 6. 支持JavaBeans类(get/set 方法)
7. 支持复杂的对象映射(如populating lists, complex object models) 8. 对象模型从不完美(不需要修改) 9. 数据模型从不完美(不需要修改)
10. 你已经知道SQL,为什么还要学习其他东西
4/4/2013
版权所有,侵权必究All rights reserved
第20页,共39页Page 20 , Total39