到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,“过早优化是万恶之源”),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法。; i9 j' t6 Y- W9 w6 o; X; w4 r
U' q5 p1 P* X
如果站点起步阶段可能就是一台机器(或是一台虚拟机,比如JobsDigg.com),这个时候,去关注什么数据拆分啊,负载均衡啊,都是没影子的事情。很多大站点的经验绝不能照搬,辩证的参考才是硬道理。
# P% h, n+ E' b& V) Z* T) B7 ^
1 V5 K2 F8 l+ O4 ?* M4 _ 拥抱熟知的技术
; x) J& Q1 f( j5 w" B( q - |& c( K+ \1 i h# |1 s6 }
动手构建站点的时候,不要到处去问别人该用什么,什么熟悉用什么,如果用自己不擅长的技术手段来写网站,等你写完,黄花菜可能都凉了。所以,有现成的软件组件可用,就不要自己重新发明轮子。人家说Python牛,但自己只懂PHP,那就PHP好了,如果熟悉.net?,那也不错。用烂技术不是丢人的事情,把好技术用烂才丢人。
, ?" ?* L) R/ J, ~; M" A
4 w$ ]" N/ n; ]8 | 架构层次清晰化5 {0 W9 R( H2 x( R( ^. [; V
7 k7 r2 z8 f3 D' H5 V# e& E2 v 起步的阶段应该清楚的确定下来架构的层次。如果都搅和在一起,业务一旦扩增开来,如果原有的一堆东西拆不开就是非常痛苦的事情。) X+ Y5 @" \; ^0 I( N, |
& f. T& c0 O) Q( a/ a WebServer《--》(AppServer)《--》Cache(eg.Memcached)《--》DB
8 E4 t2 n1 z# J, M" c
; ]2 x+ K. {' G2 p, O7 k; ]) [ 层次清晰化的一个体现是(以LAMP架构为例):即使只有一台机器,也应该起个Memcached的实例,效果的确非常好--一般人儿我不告诉他。。.不要把什么都压到DB上,DB一旦I/O压力走到磁盘上,问题要暴露出来是很快的。没错,DB本身也会利用自己的Cache,但DB的Cache和Memcached设计出发点毕竟不一样。( f# V W; z* d5 k
- H. Y: w* U1 C. n X6 K 数据冗余?有必要
0 {7 L; N7 p- P8 y! ^) ?4 `
) A3 W9 \1 M+ U7 W. r/ @7 K 很多人并不是数据库设计专家,如果应用要自己设计表结构什么的,基本都是临时抱佛脚,但三个范式很多人倒是记得牢,这是大多数小型Web站点遇到的一个头疼事儿,一个小小的应用搞了几十个表。忘掉范式这个玩意儿!记住,尽可能的冗余数据,你在数据层陷入的时间越多,你在产品上投入的就会越少。用户更关心的是产品的设计。; k: X! t/ g: t# h% X
, u- ~( O; U2 d3 l 前端优化很重要2 b$ ~. s; Y2 G" e
0 k8 D8 Z1 s9 J- w+ ]
因为流量低,访客可能也不多,这时候值得注意的是页面不要太大,多数流量低的站点吃亏就在于一个页面动辄几兆(我前两天看到一个Startup的首页有4M之大,可谓惊人),用户看个页面半分钟都打不开,你说咋发展?先把基本的条件满足,再去研究前端优化。
. K9 A5 h& l, ~' ?' M1 B
9 r* `- @) K! `1 W0 v http://www.120gc.cn/编辑
7 }2 C0 ^3 @: C L" \/ c 8 `9 e5 h% C% o: h2 [$ H5 C
|