详解大型网站技术架构:PDF版在线阅读指南及网站架构基础

何为网站架构

网站架构,通常被视为基于客户需求分析成果,精确锁定网站目标受众,确立网站整体布局,策划、设计网站板块及其内容,确立网站开发流程与步骤,以最大程度实现资源高效分配与管理的规划。其涵盖内容包括程序架构、展示架构和信息架构三个方面。其步骤主要分为硬件架构和软件架构两个阶段。网络架构是现代网络学习与发展的必要基础技术。

中文名称

网站架构

通常认为

依据客户需求分析结果

确立

网站开发流程与步骤

内容

程序架构,展示架构

高效

导航

软件架构八种方案

硬件架构

机房选址

在挑选机房时,需考虑网站用户的地理分布,可选择网通或电信机房,但多数情况下,双线机房更为适宜。大城市机房价格较高,从成本角度考虑,可在中小城市托管服务器,例如北京的公司可以考虑将服务器托管在天津、廊坊等地,距离不远,但价格更为低廉。

带宽容量

通常,当老板委托我们构建网站时,会提出一些目标,如网站需承受每天100万PV的访问量等。此时,我们需要估算所需带宽大小,带宽容量计算主要涉及两个指标(峰值流量和页面大小),在计算前,我们先做出以下假设:

第一:假设峰值流量是平均流量的5倍。

第二:假设每次访问的平均页面大小约为100K字节。

若100万PV的访问量在一天内平均分布,则每秒大约有12次访问,按平均每次访问页面大小约为100K字节计算,这12次访问总计约为1200K字节。字节的单位是Byte,带宽的单位是bit,它们之间的关系是1Byte=8bit,因此1200K Byte大致相当于9600K bit,即9Mbps左右。实际情况中,我们的网站必须在峰值流量时保持正常访问,因此按照假设的峰值流量计算,实际带宽需求应在45Mbps左右。

当然,这个结论是基于前面提到的两点假设,若实际情况与这两点假设有差异,结果也可能不同。

服务器配置

首先,我们需要明确所需的服务器类型:图片服务器、页面服务器、数据库服务器、应用服务器、日志服务器等。

对于访问量较大的网站,分离独立的图片服务器和页面服务器非常必要。我们可以使用lighttpd运行图片服务器,使用apache运行页面服务器,当然也可以选择其他选项,甚至可以扩展为多台图片服务器和多台页面服务器,并设置相关域名,如img.domain和www.domain,页面中的图片路径都使用绝对路径,如,然后设置DNS轮询,实现初步的负载均衡。当然,服务器增多时,不可避免地会涉及同步问题,可以使用rsync软件解决。

数据库服务器至关重要,因为网站的瓶颈问题往往出在数据库上。一般中小网站多使用MySQL数据库,但其集群功能似乎尚未达到稳定阶段,因此不做评价。一般来说,使用MySQL数据库时,我们应该采用主从(一主多从)结构,主数据库服务器使用innodb表结构,从数据库服务器使用myisam表结构,充分发挥各自的优势,并且这样的主从结构分离了读写操作,降低了读操作的压力。我们还可以设置一个专门的从服务器作为备份服务器,便于备份。如果没有从数据库服务器,在大数据量情况下,mysqldump基本无法使用,直接复制数据文件时,还需先停止数据库服务再复制,否则备份文件会出错。但对于许多网站而言,即使数据库服务仅停止一秒也是不可接受的。如果有一台从数据库服务器,在备份数据时,可以先停止服务(slave stop)再备份,然后启动服务(slave start)后从服务器会自动从主服务器同步数据,一切不受影响。但是,主从结构也有致命缺陷,那就是它只能降低读操作的压力,而不能降低写操作的压力。

为了适应更大规模,可能只剩下最后这一招:横向/纵向分割数据库。所谓横向分割数据库,就是将不同的表保存到不同的数据库服务器上,例如用户表保存在A数据库服务器上,文章表保存在B数据库服务器上。当然,这样的分割是有代价的,最基本的就是无法进行LEFT JOIN等操作。所谓纵向分割数据库,一般是指按照用户标识(user_id)等来划分数据存储的服务器,例如:我们有5台数据库服务器,那么“user_id% 5+ 1”等于1的保存到1号服务器,等于2的保存到2号服务器,以此类推。纵向分割的原则有很多种,可以根据情况选择。不过,和横向分割数据库一样,纵向分割数据库也有代价,最基本的就是在进行COUNT、SUM等汇总操作时会更加麻烦。综上所述,数据库服务器的解决方案通常是一个混合方案,以发挥各种方案的优势,有时还需要借助memcached等第三方软件,以适应更大访问量的需求。

如果专门使用应用服务器来运行PHP脚本最为理想,这样页面服务器只需保存静态页面即可,可以为应用服务器设置一些如app.domain之类的域名,与页面服务器区分开来。对于应用服务器,我更倾向于使用prefork模式的apache,配合必要的xcache等PHP缓存软件,加载模块越少越好,除了mod_rewrite等必要的模块外,不必要的模块全部舍弃,尽量减少httpd进程的内存消耗。而那些图片服务器、页面服务器等静态内容可以使用lighttpd或tux来处理,充分发挥各种服务器的特点。

若配备专用的应用服务器来执行PHP脚本,那无疑是最佳选择。这样,我们的页面服务器只需保存静态页面即可,我们还可以为应用服务器配置一些如app.domain等域名,以与页面服务器区分开来。对于应用服务器,我更倾向于使用prefork模式的apache,并配备必要的xcache等PHP缓存软件。加载模块应尽量减少,除了mod_rewrite等必要模块外,其他不必要的东西都应舍弃,以尽量减少httpd进程的内存消耗。而那些图片服务器、页面服务器等静态内容,则可以使用lighttpd或tux来处理,充分发挥各种服务器的特性。

若条件允许,独立的日志服务器也是必要的。一般小网站的做法都是将页面服务器和日志服务器合并使用,在凌晨访问量不大时,通过cron运行前一天的日志计算。然而,如果你使用awstats等日志分析软件,对于百万级访问量而言,即使按天归档,也会消耗大量时间和服务器资源进行计算。因此,分离单独的日志服务器还是有好处的,这样不会影响正式服务器的工作状态。

软架构

框架的选择

PHP框架的选择众多,如CakePHP、Symfony、Zend Framework等。至于选择哪一个并没有固定的答案,应根据团队成员对各个框架的了解程度而定。很多时候,即使没有使用框架,也能编写出优秀的程序,例如Flickr据说就是使用Pear+Smarty等类库编写的。因此,是否使用框架,使用哪个框架,通常不是最重要的,重要的是我们的编程思想中要有框架的意识。

逻辑的分层

网站建设需要构建哪些基本结构

一、网站目录结构的确定

网站目录结构的确定不容忽视,主要指建立网站时创建的文件夹。在创建本地站点时,首先要建立本地站点根文件夹和images子文件夹,然后创建多个子文件夹,并将站点的文件分类存储到相应的子文件夹中,而不是将所有文件都存放在根文件夹下。实际上,目录结构的好坏对浏览者影响不大,但对于站点本身的上传和维护、内容的扩充和移植具有重要影响。

目录结构建立的好坏,对企业后期进行网站维护有直接联系,专业与不专业网站建设公司之间也存在差异。你会发现,在不专业的建站公司中,有时从目录中都无法找到想要的文件夹,而专业的建站公司一眼就能找到。

二、网站链接结构的确定

上海雍熙认为,网站链接结构也需要提前确定。我们所说的网站链接结构主要指网站中各个子网页之间的相互链接关系,它映射着网站主题与相关内容以及网站设计者建立此站点的目的。

好的网站链接结构不仅可以让访客在浏览时轻松自如地进行各页面之间的跳转,还能提高搜索引擎爬取速度和网站收录速度。谈到网站链接结构,不得不提面包屑导航。

网站建设一般包含树状链接结构和星状链接结构,而在企业建站中,使用较多的就是树状链接结构。从某种程度上,网站结构的好坏直接影响着搜索引擎对该网站的收录速度。因此,在进行建站时,我们要特别注意。

以上所转载内容均来自于网络,不为其真实性负责,只为传播网络信息为目的,非商业用途,如有异议请及时联系btr2020@163.com,本人将予以删除。
THE END
分享
二维码
< <上一篇
下一篇>>