在网站架构设计中,巨匠必然对 LAMP (Linux Apache Mysql Php) 不目生。6 D: O; B$ l+ N: j+ v! O# e
LAMP确实是一个很是优异的架构,秉承着自由,开放,高效,易用的设计理念。
5 H( Q- c, B2 Q2 q 可是,本文不筹算切磋LAMP,网上有良多介绍LAMP的资料。
7 Q/ m& J+ ?2 ?) i# l4 V* Z 这里,想给巨匠介绍另一个在LAMP上衍生出来的,以晋升机能为首要目的的开源网站架构。
. y- D" ^3 C; i5 M* |1 K 1, 选择高机能 OS, G2 S- \/ q) o( {0 I: x
首先,不难理解,任何一个server最底层的支撑仍是OS,而OS的选择,首要搜罗 Unix, Windows server, Linux, BSD等等。5 \2 b' @3 l- ]2 z
此鱿脯开源的OS,有Linux, BSD及部门unix。年夜今朝使用情形来看,Linux仍是网站首选OS之一。
8 C5 b% J# o' p 可是,Linux因为其自由的特点,也给选择发生了一些未便 - 刊行版太多。" ]. v4 H& R/ S
现有的主流版本搜罗 red hat(RHEL), Ubuntu, 红旗, openSuSE, debian等。
/ O3 Q' h3 f" j 此鱿脯每一个刊行版都有自己的特色,好比RHEL的不变,Ubuntu的易用,红旗的中文撑持很棒等。
# S; R/ R8 \! D2 _ 但要以机能为主,又兼顾不变,易用性,以上都不是最佳选择。9 C' b5 E+ b" P7 i8 b% n5 F: L
这里举荐一个刊行版,它是一个极限机能,加高度可定制,优化的 Linux - gentoo。4 j/ j/ ?1 l# O. I: ^! m
gentoo的机能优化是年夜kernel源码编译就瞥绶入手了,经由过程选择分歧的源码包,可以顺应于分歧的应用场景。
7 X0 g% X% x% B2 L$ Q6 h) V (分歧内核介绍: http://imkenwu.javaeye.com/blog/168906 )( J" {) I2 Z# a' w" I; A W2 Z
举个经典的例子:国内,douban.com 在定制优化过的 gentoo 上跑的web处事器最高一天支撑了 2500 万pv。
! G6 s d n& }8 a http://www.dbanotes.net/arch/douban_web_server.html3 I ^5 x1 [& L
这种流量,哪怕是供给纯静态的内容,也是很恐怖的。7 ?8 X3 J6 t$ ~" T3 D
而撑持这种年夜流量的,除了server自己,最关头的就是高度精简的OS了。2 W% j! Z6 d5 e) j2 H/ V8 O- x' t" O
所以,综上所述,高机能网站举荐使用可优化,定制的 gentoo 作为载体。
/ ~ }2 Y( F6 R7 O# J3 ~ 2, 选择高机能 web server5 z. q; t8 ?! v% P* c% t- y% j
Apache是 LAMP 架构最焦点的 web server, 开源,模块丰硕,功能强年夜,不变是它的绝对优势。, | W9 R" p7 f* t6 c/ s
在美国前100个网站中,有49%的使用apache。可见其影响力。
% W5 k M1 \( q! o 可是,有利有弊,apache的致命缺陷,就是多于臃肿,强年夜的功能,必然会带来机能上的损耗。
0 B5 `+ m6 I) z" x 面临这种气象,在市场上,有一支异军突起,那就是更轻量级的 web server - lighty(lighttpd)。% g& F" B. Y, w0 c
官方为它界说的口号是 fly light。
5 @& M# ^# Q( ~8 s& v 它具有很是低的内存开销,cpu占用率低,效能好,以及丰硕的模块撑持等特点。6 G* l- a5 Q5 B7 K! j
这让他在短时刻内占有了14%以上的市场份额。而且有越来越多的人起头选择使用lighty作为前端 web server。
" C7 g! \6 S t' j% U 到这里为之,其实高机能 web server 非 lighty 莫属。但更棒的是,依靠 gentoo 的高度定制化,我们还可以, S0 H6 g. p: w' }
进一步晋升 lighty 的机能潜力-那就是定制 lighty。: B0 r- c0 w/ C% t1 a/ D) E
3,选择高机能 database
1 H4 j, m% O$ W! C 数据库是任何网站走动态化内容揭示及营业数据存储的保障。
$ h: F/ F( y) V! B u8 e) |. u4 j4 u 市道上的开源数据库首要有 mysql , postgresql , berkeley db, sqlite 等。
! b; I2 l/ ]% B0 j" G1 |2 | 此鱿脯对比一下,
2 A. X! m* d2 H5 ?. C! Z mysql : 多线程,多措置器,高机能,5.0以上撑持事务,丰硕数据类型和sql语法,跨平台。6 q: a1 r/ _9 C& U: t. c* ?- E
postgresql : 面向对象,集成web,撑持事务,使用历程,速度略慢于mysql.7 B& o w5 w* y
berkeley db : 嵌入式,数据操作经由过程接口完成,跨说话。
' T9 v) M% x6 u( T: U; H5 H! t4 @$ ? sqlite : 与php集成,撑持ACID特征,撑持年夜并发量,库锁。
9 U8 [; R% w/ M& V( s( \ 年夜膳缦沔的对比中,不难看出,mysql 应该是机能,不变性与功能性的综合之选。
' R9 W' w& z: Y5 X 4,选择高机能 script language
: h1 e, R6 h v3 e/ q1 F 能与 lighty 连系的剧本说话,首要有 ruby, php, python, perl。体例主若是经由过程 fast-cgi 来访谒。
* Y: w4 O; Y8 r: N& q0 p. z/ b) K 只年夜机能角度对比几种说话:; X# h/ V8 f# e: z6 [1 V# U$ a
处事器:设计高机能网站架构-LLMP src="" twffan="done">
& ]% K7 a3 I( L; y- e8 ` ( http://www.timestretch.com/FractalBenchmark.html )
" U# q7 o) S3 c& X 不难看出,python 是此次测试中,机能最好的剧本说话。
) P2 D. p: L B" B/ \ 动态措置方面有绝对优势。对比 php , 前者,可以更快的衬着输出内容,并由经lighty, 高速flush缓存到浏览器。
. ]# w# d5 Y8 Q$ X X 值得一提的是, douban.com 也是使用 python 作为应用处事器。8 A. X$ R/ G; l$ q3 G0 O( M
总结一下,什么是 LLMP?8 z) ]- P8 l( r0 `* @* y% e
LLMP 是 Linux Lighty Mysql Python 的组合,作为一种高机能的网站架构设计存在。
0 _: l; G/ G, q1 r4 [ 什么是高机能的LLMP?3 M. m0 F) ^4 j+ V0 r- K
LLMP并不意味着高机能,只是比其他架构,更有机能的晋升潜力。高机能的LLMP,需要年夜系统,轨范,硬件各个层面上协同进行的 |