热门资讯更多>>
- 05-03[网站建设]关于IE6下绝对定位…
- 11-23[网站建设]jquery 做TABS切换…
- 02-13[网站建设]——dopostback缺…
- 07-14[网站优化]如何修改网站标题…
- 11-13[网站建设]SQLSERVER2005 数…
- 09-25[网站建设]屏蔽 Flash 右键的…
- 03-13[网站建设]Windows+ IIS 的手…
- 03-22[网站建设]谈谈如何利用网络…
- 03-04[网站建设]magento整合WORDP…
- 02-07[网站建设]MSSQL备份移植到另…
且谈网站的“层次”-
什么是层次?
史力克:就像洋葱。
当奇:为什么是洋葱,为什么不是泡芙?
史力克:因为洋葱有层次!!
常见的网站层次:
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大页面语言:asp(iis) 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 />
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+ ,
服务器 (xeon * 4 2.2MP
优化服务器数据库之后
数据库剥离出之后
台式机使用Squid做缓冲 0.0(没错!就是这么返回的)
服务器使用squid做缓冲 0.0(没有必要测试了)
,