1.HTML静态化。
实际上,大家都知道,效率最高.所耗费的就是纯静态的html页面,所以我们尽量让我们的站点用静态页面来实现,这种最简单的方法其实也是最有效的。但是对于内容庞大且频繁更新的网站,我们无法全手工实现,于是出现了我们常用的信息发布系统CMS,例如我们常访问的各类门户的新闻频道、即使是其他渠道,也是由信息发布系统来管理和实现的,信息发布系统可以使信息输入最简单,自动生成静态页面,并且拥有频道管理.权限管理.自动抓取等功能,为大型网站提供一套高效、易于管理的CMS十分重要。
除了门户网站和信息发布网站之外,对于交互性要求较高的社区类型网站,尽可能静态化也是一种提高性能的必要手段。实时静态化社区网站,还有更新时重静态,这也是一种被广泛应用的策略,像Mop的大杂烩就是在利用这个策略,新浪娱乐讯。
同时,html静态化也是一种缓存策略,适用于系统中频繁使用数据库查询但内容更新很少的应用,可以考虑用html来静态实现,比如论坛公开的论坛信息,目前主流论坛可以在后台管理和存储再数据库,事实上,这些信息被前台程序大量调用,但是更新频繁,因此当您在后台更新这些内容时,可以静态地考虑这些信息,从而避免了大量数据库访问请求。
2.独立网站设计图片服务器。
对于Web服务器,无论是Apache.IIS还是其他容器,图片都是最消耗资源的,因此我们必须把图片与页面分开。基本上,大的网站设计都会采用这一策略,它们都有独立的图片服务器,甚至还有许多图片服务器。这种架构可以减轻提供页面访问请求的服务器系统压力,并确保系统不会因为应用服务器和图片服务器上的图片问题而崩溃。还有各种配置优化,比如apache,如果配置ContentType,对LoadModule的支持就越少越好,并且提高了系统消耗和执行效率。
3.设计网站的数据库和数据库。
大型站点都有复杂的应用程序,这些应用必须使用数据库,面对大量访问,数据库的瓶颈很快就会出现,此时某个数据库很快无法满足应用的需求,因此需要使用数据库集群或库表散列。
在数据库集群网站设计方面,很多数据库都有自己的解决方案,比如Oracle.Sybase等等,MySQL提供的Master/Slave模式也很类似,所使用的DB类型,请参考相应的解决方案来实现。
上面提到的数据库集群由于其DB类型的限制,在架构.成本.扩展方面都受到DB类型的限制,所以我们需要从应用程序的角度来考虑改进系统体系结构。在应用程序中安装业务、应用模块、功能模块、数据库分离、不同模块对应不同的数据库或表,然后按某种策略对页面或特性进行小型数据库散列。举例来说,根据用户ID执行表散列,这会降低系统的性能,并且有很好的可扩展性。sohu论坛采用这样的结构,将论坛的用户.设置.帖子等信息从数据库中分离出来,然后根据布局和ID将数据库和表格分散开来。最终,在配置文件中进行简单的配置,使系统能够随时添加一个低成本的数据库,以补充系统的性能。
4.网站设计缓存。
cache一词,技术上已有接触,许多地方使用它来缓存。与此同时,网站架构的建立和网站的发展也很重要。以下介绍两种最基本的缓存类型。后面介绍了这些高级缓存技术。
网站设计架构缓存,Apache比较熟悉的人都知道,Apache提供了自己的缓存模块,或使用一个附加的Squid模块进行缓存,两者都可以有效地提高Apache的访问响应能力。
网站程序开发缓存,Linux上提供的MemoryCache是一个常用的可供Web开发使用的缓存接口。举例来说,在Java开发过程中,MemoryCache可被调用,以缓存部分数据,并进行通信共享,这为一些大型社区所使用。另外,当使用web进行开发时,很多语言都有自己的缓存模块和方法,PHP拥有Pear的Cache模块,Java比较多,对.net不太熟悉,相信肯定有。
5.反映网站设计。
对大型网站而言,镜像是一种普遍采用的提高性能和数据安全性的方法,而镜像技术则能解决由于不同网络接入商和地区而导致的用户访问速度差异;举例来说,ChinaNet和EduNet的不同,使得很多网站在教育网络上建立了镜像网站,数据将定时或实时更新。在这里不再详细介绍镜像的细节技术,有很多专业的现成的解决架构和产品可供选择。在Linux上也有廉价的软件实现方式,比如rsync等工具。
6.网站负载均衡。
负载均衡是大型网站解决大负载和多并发请求问题的最终解决方案。
负载均衡技术已经发展了很多年,目前有很多专业服务商和产品可供选择,我个人谈到了一些解决方案,其中有两种模式可以供大家参考。
四层硬件交换。
四层交换利用第三层、四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到相应的应用服务器中进行处理。第4层交换功能与指向物理服务器的虚拟IP相似。它通过HTTP.FTP.NFS.Telnet等协议传输各种商业协议。这些服务都是基于物理服务器的,需要复杂的负载平衡算法。对于IP域,业务类型由终端TCP或UDP端口地址决定,而在第四层交换中,应用范围由源端与终端IP地址.TCP和UDP端口共同决定。
目前已有几种知名的硬件四层交换机产品,如Alteon.F5等,虽然价格昂贵,但是物有所值,可以提供出色的性能和灵活的管理能力。Yahoo中国最早使用了3-4个Alteon的近2000台服务器。
Web四层交换软件设计。
通过对硬件四层交换机原理的理解,提出了一种基于OSI模型的四层交换软件,其实现原理一致,性能略有下降。但是满足某种压力还是顺理成章,有人说软件实现方式其实更灵活,处理能力完全取决于您熟悉的配置。
利用Linux上常用的LVS技术,LinuxVirtualServer,解决了软件四层交换问题。以心跳线heartbeat为基础,提供实时灾难响应解决方案,提高了系统的鲁棒性,同时也具有虚拟VIP的灵活配置和管理功能。它能同时满足多种应用需求,是分布式系统的重要组成部分。
一个典型的使用负载平衡的策略是构建squid集群,即一个基于软件或者硬件四层交换的squid集群,很多大型站点都采用了这种方法,此架构成本较低.高性能具有很强的扩展性,可以随时在架构内增加或减少节点。这类框架我准备空了,专门整理与大家详细讨论。