浅谈大型网站的规划

一个小网站,比如个人网站,可以用最简单的html静态页面来实现,也可以用一些图片来美化。所有页面都存储在一个目录中。这样的网站对系统架构和性能有简单的要求。随着互联网服务的不断丰富,经过多年的发展,网站相关技术已经细分为非常详细的方面,尤其是大型网站。所采用的技术涵盖了广泛的领域,从硬件到软件、编程语言、数据库WebServer、防火墙等等,已经无法与原来简单的html静态网站相比。

大型网站架构,如门户架构。面对大量用户的访问和高并发请求,基本解决方案集中在以下几个环节:使用高性能服务器、高性能数据库、高效率编程语言和高性能网络容器。然而,除了这些方面,不可能从根本上解决大型网站面临的高负载和高并发的问题。

上面提供的解决方案在一定程度上也意味着更多的投资,这些解决方案存在瓶颈,不具备良好的可扩展性。让我从低成本、高性能和高可扩展性的角度谈谈我的一些经验。

1、HTML静态化

事实上,众所周知,效率最高、成本最低的是纯静态的html页面,所以我们尽最大努力让我们网站上的页面使用静态页面。这种最简单的方法实际上是最有效的。然而,对于内容量大、更新频繁的网站,我们无法逐个手工实现,于是我们的通用信息发布系统CMS就应运而生了。对于大型网站来说,新闻频道甚至其他频道都是通过信息发布系统来管理和实现的。信息发布系统可以实现最简单的信息录入和自动生成静态页面,还可以具有渠道管理、权限管理和自动抓取功能。对于一个大型网站来说,它有一套高效率。

同时,html统计化也是一些缓存策略使用的一种手段。对于系统中经常使用数据库查询但内容更新很少的应用,可以通过html统计来实现,比如论坛中论坛的公共设置信息,可以在后台管理,存储在目前主流论坛的数据库中。事实上,这些信息中有大量是由前台程序调用的,但是更新频率非常低,因此可以考虑在后台静态更新这部分内容,从而避免了大量的数据库访问请求。

2,图片服务器分离

众所周知,对于Web服务器来说,无论是Apache、IIS还是其他容器,图片都是最消耗资源的,所以我们有必要把图片和页面分开,这基本上是大型网站采用的策略。他们都有独立的图片服务器,甚至很多图片服务器。这种体系结构可以减轻提供页面访问请求的服务器系统的压力,并且可以确保系统不会由于映像问题而崩溃。可以在应用服务器和图像服务器上进行不同的配置优化。例如,在配置ContentType时,apache可以支持尽可能少的模块,并加载尽可能少的模块以确保更高的系统消耗和执行效率。大型网站有复杂的应用程序,这些应用程序必须使用数据库。当面对大量的访问时,数据库的瓶颈很快就会出现,然后数据库很快就无法满足应用,所以我们需要使用数据库集群或者数据库表的散列。

在数据库集群方面,许多数据库都有自己的解决方案,而甲骨文和赛贝斯有很好的解决方案。MySQL提供的常用主/从也是一个类似的解决方案。您可以参考相应的解决方案来实现您使用的数据库类型。

上述数据库集群在体系结构、成本和可伸缩性方面受到数据库类型的限制,因此我们需要从应用的角度考虑改进系统体系结构。数据库表哈希是一种常见且最有效的解决方案。我们在应用程序中安装业务和应用程序或功能模块来分离数据库。不同的模块对应不同的数据库或表,然后按照一定的策略,比如用户表和根据用户标识的表哈希,用较小的数据库对页面或函数进行哈希处理,从而以较低的成本提高系统的性能,具有良好的可扩展性。搜狐论坛采用这样的架构,将论坛的用户、设置、帖子等信息从数据库中分离出来,然后根据版块和标识对数据库和帖子、用户表进行哈希处理,最后在配置文件中进行简单的配置,这样系统可以随时添加一个低成本的数据库来补充系统性能。单词

、数据库集群和库表散列

cache已经在许多地方使用。缓存在网站架构和网站开发中也非常重要。这里有两个基本的缓存。稍后将介绍高级和分布式缓存。

架构缓存,任何熟悉Apache的人都可以知道Apache提供了自己的缓存模块,或者它可以使用Squid模块来缓存,这两者都可以有效地提高Apache的访问响应能力。