网站架构通用方案内容摘要:

所有的 OSCache特性。 永久缓存 缓存能随意的写入硬盘,因此允许昂贵的创建( expensivetocreate)数据来保持缓存,甚至能让应用重启。 支持集群集群缓存数据能被单个的进行参数配置,不需要修改代码。 缓存记录的过期 你可以有最大限度的控制缓存对 象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。 OSCache是当前运用最广的缓存方案 , JBoss,Hibernate,Spring等都对其有支持。 OSCache的特点 : 1) 缓存任何对象:你可以不受限制的缓存部分 jsp页面或 HTTP请求,任何 java对象都可以缓存。 2) 拥有全面的 API: OSCache API允许你通过编程的方式来控制所有的 OSCache特性。 3) 永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销昂贵的数据。 4) 支持集群:集群 缓存数据能被单个的进行参数配置,不需要修改代码。 5) 缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不能满足需要时)。 2) Memcached memcached是高性能的 分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web应用的速度、 提高可扩展性。 Memcached是以 Key/Value的形式单个对象缓存。 3) 自主开 发的 内存 数据缓存服务 a) 独立进程方式的缓存服务 对于一些常用的动态数据通过开发程序服务缓存 在内存中 ,提供给其他子系统调用,如下面的数据就可以通过这样方式进行缓存。 1) 用户基本信息及状态的信息缓冲 2) 列表缓存,就像论坛里帖子的列表 3) 记录条数的缓存,比如一个论坛板块里有多少个帖子,这样才方便实现分页。 4) 复杂一点的 group, sum, count查询,比如积分的分类排名 b) 集成在 WEB应用 中 的内存缓存 在 web应用中 对于热点的功能,考虑使用完全装载到内存,保证绝对的响应速度,对于需要频繁访问的热点数据,采用集中缓存 (多个可以采用负载均衡 ),减轻数据库的压力,比如:很多配置信息,操作员信息等等。 页面 静态化 静态的 HTML页面严格地由标准的 HTML标示语言构成,并不需要服务器端即时运算生成。 这意味着,对一个静态 HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。 从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的 CPU资源。 页面 静态化 就是采用 效率最高、消耗最小的纯静态化的 html页面 来替换动态页面。 我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。 同时采用第三方开源的 CMS系统来实现网站内容的管理。 对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现 页面静态化 , 所以我们需要引入 常见的信息发布系统 (CMS),信息发布系统 (CMS)可以实现最简单的信息录入自动生成静态页面 , 对于一个大型网站来说,拥有一套高效、可管理的 CMS是必不可少的。 同时, HTML静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑 使用 HTML静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且 存储 再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。 在进行 html静态化的时候 还 可以使用一种折中的方法,就是前端 继续 使用动态实现,在一定的策略下 通过后台模块 进行定时 把动态网页生成 静态 页面,并 定时判断调用,这个能实现很多灵活性的操作。 为了提高静态 HTML的访问效率,主要可以对以下几个方面进行优化:网络带宽、磁盘 I/O以及 cache(高速缓冲存储器 )。 数据库 配置及优化 1. 数据库集群 对生产数据库采用 RAC实现数据库的集群。 2. 数据库及表的散列 把生产数据库和查询数据库进行分离,针对系统业务数据的特点,把大的表进行拆分,对于访问较多的表采用分区表。 使用读 /写数据库分离,随着系统变得越来越庞大,特别是当它们拥有 很差的 SQL时,一台数据库服务器通常不足以处理负载。 但是多个数据库意味着重复,除非你 对数据进行了分离。 更一般地,这意味着建立主 /从副本系统,其中 程序会对主库编写所有的 Update、 Insert和 Delete变更语句,而所有 Select的数据都读取自从数据库(或者多个从数据库)。 尽管概念上很简单,但是想要合理、精确地实 现并不容易,这可能需要大量的代码工作。 因此,即便在开始时使用同一台数据库服务器,也要尽早计划在 PHP中使用分离的 DB连接来进行读写操作。 如果正确 地完成该项工作,那么系统就可以扩展到 2台、 3台甚至 12台服务器,并具备高可用性和稳定性。 3. 拥有良好的 DB配置和备份 很多公司都 没有良好的备份机制,也不知道如 何恰当地完成这项工作。 只有 imp是不够的,还需要 进行热备份,从而得到超快的速度和超高的可靠性。 另外,在将所有备份文件从服务器上转移出来之前要进行压缩和加密。 另外还要确保拥有设计合理的、有用的关于安全、性能和稳定性问题的设定,包括防止数据败坏,其中很多设定都是非常重要的。 文件 存储 1. 文件共享 1) HDFS( GFS) HDFS是 Apache Hadoop项目中的一个分布式文件系统实现,基于 Google于 2020年 10月发表的 Google File System(GFS)论文。  特性 1) 硬件要求低 2) 高容错性 3) 易可扩展 4) 配置简单 5) 超大文件 HDFS采用 master/slave架构。 一个 HDFS集群是由一个 Namenode和一定数目的 Datanodes组成。 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 inotify监控 Linux文件系统事件。 利用开源的 lsync监听某一目录,如果目录内文件发生增、删、改,利用 Rsync协议自动同步到多台服务器。 3. 图片服务器分离 特别是如果程序与图片都放在同一个 APAHCE 的服务器下,每一个图片的请求都有可能导致一个 HTTPD 进程的调用。 使用独立的图片服务器不但可以避免以上这个情况,更可以对不同的使用性质的图片设置不同的过期时间,以便同一个用户在不同页面 访问相同图片时不会再次从服务器(基于是缓存服务器)取数据,不但快速,而且还省了带宽。 还有就是,对于缓存的时间上,亦可以做独 立的调节。 网络问题解决方案 你不可能要求所有的使用人员,都和你的服务器在一个运营商的网络内 ,而不同网络之间访问速度会很慢 , 我们可 以采用镜像网站和 引入 CDN来解决这一问题。 智 能 D N S解 析电 信 机 房服 务 器 1 服 务 器 n动 态 内 容 ( 社 区 、 投 票 、 调查 、 搜 索 、 点 评 、 视 频 )静 态 内 容( 静 态 网 页 、 图 片 )多 线 机 房服 务 器 1 服 务 器 n服 务 器 1 服 务 器 n网 通 机 房其 他用 户网 通用 户用 户C D N电 信用 户 1. 智能 DNS解析 我们可 以在不同的网络运营 商部署 web服务器, 通过 linux上的 rsync工具自动同步到 不同网络接入商的 web服务器 上 ,以作为主站的镜像。 然后通过配置智能 DNS解析来 引导不同网络的访问用户到对应的网络运营商的 web服务器。 2. CDN 如果有足够的投资, 也 可以采用 CDN(内容分发网 ), 把静态内容(静态页面和图片) 进行 CDN缓存,以 减轻服务器压力。 CDN的全称是 Content Delivery Network,即内容分发网络。 它采取了分布式网络缓存结构(即国际上流行的 web cache技术) , 其目的是通过在现有的 Inter中增加一层新的网络架构,将网站的内容发布到最接近用户的网络 边缘 ,使用户可以就近取得所需的内容,解决 Inter网络拥挤的状况,提高用户访问网站的响应速度。 从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。 (也就是一个服务器的内容,平均分部到多个服务器上,服务器智能识别,让用户获取离用户最近的服务器,提高速度。 目前,国内访问量较高的大型网站如新浪、网易等,均使用 CDN网络加速技术,虽然网站的访问巨大,但无论在什么地方访问都会感觉速度很快。 而一般的网站如果服务器在网通,电信用户访问很慢,如果服务器在电信,网通用户访问又很慢。 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, plex object models) 8. 对象模型从不完美 (不需要修改 ) 9. 数据模型从不完美 (不需要修改 ) 10. 你已经知道 SQL,为什么还要学习其他东西 1) MVC架构示意 2) Struts架构 客户端发送一个 HTTP请求,通过 Struts框架最后获得一个 HTTP响应,这一过程非常重要,它是理解 Struts框架的重点。 上图描述了 Struts框架的结构,而下图通过一个活动图更具体描述接受请求直至返回响应的整个过程 : 2. 面向服务的应用架构 面向服务的应用架构是指 构建可 分布式的、去中心化的服务器平台, 以 提供许多不同的应用,数 据库被分成 很多个小部分,围绕每个部分都会创建一个服务接口 (API),并且该接口是访问数据库的唯一途径。 最终数据库演变成一个非常庞大的共享资源。 这种 架构是松散耦合的,并且围绕着服务进行构建。 面向服务的架构提供给他们隔离特性,一个服务可能有很多台数据库服务器,他们之间的数据是相通的,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。