网站架构需要考虑的几个问题

HTML静态化

众所周知,效率最高、消耗最小的就是纯静态化的HTML页面,所以我们尽可能使网站架构上的页面采用静态页面来实现,最简单的方法往往也是最有效的。但是对于内容大量并且频繁更新的网站,我们无法全部手动去逐一实现,于是出现了常见的信息发布系统(CMS),像各个门户站点的新闻频道等,都是通过信息发布系统来管理和实现的。信息发布系统可以实现最简单的信息录入并自动生成静态页面,还具备频道管理、权限管理、自动抓取等功能。对于一个大型网站来说,一套高效、可管理的CMS是必不可少的。

除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能地静态化也是提高性能的必要手段。将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化都是大量使用的策略,像MOP的大杂烩、网易社区等就是如此。

同时,HTML静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但内容更新很小的应用,可以考虑使用HTML静态化来实现,比如论坛的公用设置信息。目前,主流论坛都可以对这些信息进行后台管理并将其存储在数据库中,这些信息其实大量被前台程序调用,但是更新频率很小。可以考虑将这部分内容在后台更新时进行静态化,这样就避免了大量的数据库访问请求。

图片服务器分离

对于Web服务器来说,不管是Apache、IIS还是其他Web服务器,图片是最消耗资源的,所以有必要将图片与页面进行分离,这是大型网站都会采用的策略,他们都有独立的一台或图片服务器。这样的架构可以降低提供页面访问请求的服务器系统的压力,并且可以保证系统不会因为图片问题而崩溃。在应用服务器和图片服务器上,可以进行不同的优化配置,比如Apache在配置ContentType的时候可以只支持必要的类型,配置LoadModule的时候只加载必要的模块,保证更高的系统消耗和执行效率。

数据库集群和库表散列

大型网站都有很多复杂的应用程序,这些应用程序必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就显现出来,这时一台数据库无法满足应用要求,所以需要使用数据库集群或者库表散列。在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL数据库提供的Master/Slave也是类似的方案,业务上使用了什么样的DB,就参考使用相应的解决方案。

由于数据库集群在架构、成本、扩张性方面都受到所采用D B类型的限制,于是需要从应用程序的角度来考虑改善系统架构。库表散列是常用并且最有效的解决方案。在应用程序中,安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如按照用户ID 进行对用户表散列,这样不仅能够低成本地提升系统的性能而且使系统具有很好的扩展性。一些大型论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行数据库和表散列,最终只需在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

缓存

相信程序开发人员都了解,很多地方要用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存,高级和分布式的缓存将在后面进行讲述。架构方面的缓存:对Apache比较熟悉的人都知道,Apache拥有自己的缓存模块,也可以使用外加的Squid进行缓存,这两种方式均可以有效提高Apache对访问的响应能力。

网站程序开发方面的缓存:Linux上提供的MemoryCache是常用的缓存接口,可以在Web开发中使用,比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通信共享,一些大型社区便使用了这样的架构。另外,在进行WEB开发的时候,各种语言基本都有自己的缓存模块和方法,如PHP有Pear的Cache模块。

镜像

镜像是大型网站常采用的提高性能和数据安全性的方式。镜像技术可以解决不同网络接入商和地域带来的角户访问速度差异,比如ChinaNet和 EduNet之间的差异促使很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的、现成的解决架构和产品可供选择,也有廉价的通过软件实现的方案,比如Rsync等工具。

负载均衡

负载均衡是大型网站解决高负载和大量并发请求而采用的终极解决办法。

四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。

四层交换功能就像是虚拟IP,指向物理服务器。其传输业务服从多种协议,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。

使用负载均衡的一个典型策略是,在软件或者硬件四层交换的基础上搭建缓存集群。这种思路被很多大型网站(包括搜索引擎)所采用。这样的架构成本低、性能高还有很强的扩展性,可随时向架构中增减节点,操作非常容易。

打赏
吐槽 (4)
×
加载中,请稍候…

您需要 登录 后才能发表评论。

avatar

- 评论

  • 加载中,请稍候…
我要吐槽