做网站我们更专业,服务我们更用心----厦门优艾网络工作室
建站热线:135~1596~4500

且谈网站的“层次”-

10/28/2005 1:40:29 PM 来源: 作者: 浏览热度( 次) 字号:T|T
分享到:

什么是层次?

史力克:就像洋葱。

当奇:为什么是洋葱,为什么不是泡

史力克:因为洋葱有层次!!

常见的网站层次:

1.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  一层结构:

结构非常简单,只支持服务器端静态页面,网页文件数据直接从服务器硬盘中读出,经过www服务器传输给浏览器。

2.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  两层结构:

支持服务器端动态页面,页面文件经过处理后通过服务器传输给浏览器。最常见的3大页面语言:aspiis php(php+apache) jsp(tomcat).

3.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  最常用的3层结构:

这就比较完善了,数据流程:数据库->脚本解释->www服务器->浏览器。常见的IIS+sql(access) LAMP Tomcat+oracle等等一系列的经典搭配全都是说的这三层结构。

4.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  几种变种:

多数据库结构,多用于数据库端负荷较重的场合,将数据库分开存放,减轻负担。同时可使用数据库同步技术或者负载均衡技术(其实使用负载均衡逻辑上应该只算一台数据库)。

ps: 传说网易采用2个数据库专门负责写数据,4个数据库专门负责读数据,中间采用数据同步技术保持数据同步。

放在这里将有点牵强,其实这不能算作服务器技术,而应该算作页面技术,多见于门户网站的论坛——将页面做成框架,通过cookies同步数据。如果要保持同步,笔者曾经听说过http server技术,但没有采用过。

页面缓存、缓冲技术

1.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  客户端缓存:

似乎没有什么好解释的:设定页面过期时间,客户端的浏览器就会自动缓存的。

2.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  “动转静”缓存:

原理就是将动态的网站转换成静态,从而达到减轻服务器负担和加速优化的目的。其转换出来文件名类似于*****-*****.html或者类似的,有些类似于***,***,***,*.html用“,”隔开的其实是传递的地址变量。具体生成这些文件的软件大多都是商业软件,如果哪位朋友发现有开源的产品,麻烦告诉我,在此感谢!

3.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  逆向代理缓存:

类似于http代理上网的原理,不过将他倒了过来,反向代理,本站也介绍过相应的配置方法,这种方法其实很常用,blogchina.com也用了类似的技术。(原先曾经有人问过我如何看出采用采用了页面缓冲,其实只要看它的http头,类似于“Server: squid/2.5.STABLE<?XML:NAMESPACE PREFIX = ST1 />7的就是了,看,版本号都有!)据我所知现在主要通过squid做缓冲,市面上也有所谓的网站加速器之类的硬件产品,实际上就是一个类似的嵌入产品。

PS:如果是采用了动态生成的页面,还要在脚本中稍加修改,具体方法烦请察看站内相关内容。

4.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  代理+缓存:

这个就比较高级了,结合了以上2者的特点,适合于超大规模的网站,一般用不到。

5.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>  变种:

通过欺骗或者使用ip隧道技术使缓冲服务器代理或者访问内网的www服务器的方式达到访问目的。(主要通过修改本地主机信息)

负载均衡

1.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       基于域名的负载均衡:

原理类似于抽奖——准备多个IP,对应同一个域名。每做一次域名解析就随即返回一个IP,这无形中就等于将网站的访问量分摊给了多个主机,减少了单一节点的局限。具体判断方法是,nslookup命令返回的是多个ip地址的就是了。具体的设置方法就是设置形同的别名,本站也有介绍。

2.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       基于集群的负载均衡:

利用cluster技术做动态的负载均衡。

3.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       4层交换:

原理有点类似于方式1,不过将选择的余地放在了内网,前提要用到四层交换机,这个代价太大了,好像除了头脑发热一般不会用这种方法来做internet服务的。

个人看法

1.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       一般的网站如果访问量太大的话加一个反向代理效果会提升很多,而且方便、容易,不会占用过多的磁盘空间;最重要的是,可以不需要增加额外的服务器。

2.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       如果手头上正好有类似的软件而且磁盘空间不成问题的话可采用“动转静”的方式,毕竟一台P2 400的服务器上跑静态足可以占满百兆带宽,但强烈要求在此基础上再作反向代理,不然内存就成了瓶颈。

3.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       如果数据比较多,可首先优化数据库,或者将数据库单独放在一台服务器上,以便于今后进一步的升级平台。

4.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       如果有个IP地址,而且域名提供商支持服务器别名,可以尝试使用基于域名的负载均衡方式,但建议你是在上面两种方式仍不能解决问题的前提下,因为一旦你采用了这种方式,维护的难度就不是服务器数量的乘积,而是——服务器数量的指数!

5.<SPAN style="FONT-FAMILY: " normal;? font-stretch: none; font-size-adjust: normal; line-height: 7pt; font-size: font-weight: font-variant: font-style: Roman?; New Times>       把所有的方式综合一下——乖乖,如果需要的话,说明你的网站已经至少是接近于门户级的了。

最后,不同方式的数据比较

恕本人术浅,采用了apache自带的ab命令来测试,非常之不精确。采用同一个网站的同一个页面,同样的数据库,测得响应时间。

LAMP台式机(XP2500+ 256M 7200-80G0.7”

服务器 xeon * 4 2.2MP 2M L3 cach , 24G , 15000*5-raid50.2”

优化服务器数据库之后 0.14”

数据库剥离出之后 0.12”

台式机使用Squid做缓冲 0.0(没错!就是这么返回的)

服务器使用squid做缓冲 0.0(没有必要测试了)

,
返回】 【关闭