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