当前位置:首页> 自助建站新闻> 重庆市大型网站建设系统架构

重庆市大型网站建设系统架构

发布时间:2021-03-01 14:00:00

一个小网站,比如个人网站,可以用最简单的HTML静态页面来实现,用一些图片来达到美化效果,所有的页面都存储在一个目录中,这样的网站对系统架构、性能要求都非常简单,随着互联网业务的不断丰富,网站相关技术经过这些年的发展,已经细分为三个部分非常详细的方面,特别是对于大型网站来说,使用的技术非常广泛,从软件到硬件,数据库、编程语言、防火墙、webserver等领域都有很高的要求,不再是原来简单的HTML静态网站可以匹配。

大型网站,如门户网站。面对大量的用户访问、高并发请求,基本的解决方案集中在以下几个方面:使用高效的编程语言、高性能的web容器、高性能的服务器、高性能的数据库。但除了这些方面,还没有办法从根本上解决大型网站面临的高并发、高负载问题。

上述解决方案在一定程度上也意味着更多的投资,而且此类解决方案存在瓶颈,扩展性不是很好。现在,我将从低成本、高性能和高可扩展性的角度谈谈我的一些经验。

1图像服务器分离众所周知,对于web服务器来说,无论是Apache、IIS还是其他容器,图像都是最消耗资源的,因此有必要对图像和页面进行分离。这基本上是大型网站采用的策略。它们都有独立的图像服务器,甚至有许多图像服务器。这种体系结构可以降低提供页面访问请求的服务器系统的压力,并且可以确保系统不会因为图像问题而崩溃。可以在应用服务器和映像服务器上执行不同的配置优化。例如,当Apache配置内容类型时,它可以尽可能少地支持并使用尽可能少的loadmodules,以确保更高的系统消耗和执行效率。

2其实我们都知道效率消耗最少的是纯静态的HTML页面,所以我们尽量让我们网站上的页面用静态页面来实现,最简单的方法其实是最有效的方法。但是对于内容量大、更新频繁的网站,我们不能全部手工操作,所以有我们共同的信息发布系统CMS,比如我们经常访问的各种门户网站的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,其中可以实现最简单的信息录入和自动访问生成静态页面,还具有自动抓取、频道管理、权限管理等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

除了门户网站和信息发布型网站外,对于互动性要求高的社区型网站来说,尽可能多的静态也是提高性能的必要手段。它也是一种广泛使用的策略,用于实时静态化社区中的帖子和文章,并在更新时重新静态化它们。比如mop的大杂烩就用这个策略,比如网易社区也是如此。

同时,HTML静态化也是一些缓存策略的一种手段。对于系统中频繁使用数据库查询但内容更新较少的应用,可以考虑使用HTML静态化,如论坛中论坛的公共设置信息。目前,主论坛可以在后台进行管理,存储在数据库中。事实上,大量的信息存储在数据库中,前台程序被调用,但更新频率很低。我们可以考虑在更新后台时将此部分设置为静态,以避免大量的数据库访问请求。

3镜像是提高大型网站性能和数据安全性的常用方法。镜像技术可以解决不同的网络接入提供商和接入区域所带来的用户接入速度的差异。例如,中国网和教育网的差异促使许多网站在教育网建立镜像网站,数据可以定期或实时更新。关于图像的细节和技术,我在这里不做太多的阐述。有许多专业现成的解决方案和产品可供选择。还有一些廉价的软件实现思想,比如Linux上的Rsync和其他工具。

4负载均衡负载均衡将是解决大型网站高负载访问和大量并发请求的最终解决方案。负载均衡技术已经发展多年,有很多专业的服务提供商和产品可供选择。我个人遇到了一些解决方案,有两种体系结构供您参考。硬件第四层交换机利用第三层和第四层数据包的报头信息,根据应用间隔标识业务流,并将整个间隔的业务流分配给相应的应用服务器进行处理。第4层交换功能类似于虚拟IP,指向物理服务器。协议种类繁多,如HTTP、FTP、NFS、telnet等。这些服务基于物理服务器,需要复杂的负载平衡算法。在IP世界中,服务类型由终端TCP或UDP端口地址决定,第四层交换中的应用范围由源和终端IP地址、TCP和UDP端口决定。在硬件第四层交换产品领域,有一些知名的产品可供选择,如Alteon、F5等,这些产品价格非常昂贵,但物超所值,并能提供优异的性能和灵活的管理能力。雅虎中国拥有近2000台服务器,使用了三四台Alteon。

5术语“缓存”已经被从事技术的人使用,缓存在许多地方都有使用。缓存在网站架构和网站开发中也非常重要。这里有两种基本类型的缓存。分布式缓存将在后面介绍。熟悉Apache的人都知道Apache提供了自己的缓存模块,您还可以使用额外的squid模块进行缓存。这两种方法可以有效地提高Apache的访问响应能力。对于网站程序开发的缓存,Linux提供的memorycache是一个通用的缓存接口,可以在web开发中使用。例如,在使用Java开发时,可以调用memorycache来缓存和共享一些数据。一些大型社区使用这种架构。另外,在使用web语言开发时,各种语言都有自己的缓存模块和方法。PHP有pear的缓存模块,所以Java更适合。对网不是很熟悉,相信一定有。

6数据库集群和数据库表哈希在大型网站中有着复杂的应用。这些应用程序必须使用数据库。面对大量的访问,数据库的瓶颈很快就会出现。这时,一个数据库很快就无法满足应用的要求,所以需要使用数据库集群或数据库表哈希。