天天看點

設計高性能網站架構-LLMP

在網站架構設計中,大家一定對 LAMP (Linux Apache MySQL PHP) 不陌生。

LAMP确實是一個非常優秀的架構,秉承着自由,開放,高效,易用的設計理念。

但是,本文不打算探讨LAMP,網上有很多介紹LAMP的資料。

這裡,想給大家介紹另一個在LAMP上衍生出來的,以提升性能為主要目的的開源網站架構。

1, 選擇高性能 OS

首先,不難了解,任何一個server最底層的支撐還是OS,而OS的選擇,主要包括 Unix, Windows server, Linux, BSD等等。

其中,開源的OS,有Linux, BSD及部分unix。從目前使用情況來看,linux還是網站首選OS之一。

但是,Linux由于其自由的特點,也給選擇産生了一些不便 – 發行版太多。

現有的主流版本包括 red hat(RHEL), ubuntu, 紅旗, opensuse, debian等。

其中,每一個發行版都有自己的特色,比如RHEL的穩定,ubuntu的易用,紅旗的中文支援很棒等。

但要以性能為主,又兼顧穩定,易用性,以上都不是最佳選擇。

這裡推薦一個發行版,它是一個極限性能,加高度可定制,優化的 Linux – gentoo。

gentoo的性能優化是從kernel源碼編譯就開始入手了,通過選擇不同的源碼包,可以适應于不同的應用場景。

(不同核心介紹: http://imkenwu.javaeye.com/blog/168906 )

舉個經典的例子:國内,douban.com 在定制優化過的 gentoo 上跑的web伺服器最高一天支撐了 2500 萬pv。

http://www.dbanotes.NET/arch/douban_web_server.html

這種流量,哪怕是提供純靜态的内容,也是很恐怖的。

而支援這種大流量的,除了server本身,最關鍵的就是高度精簡的OS了。

是以,綜上所述,高性能網站推薦使用可優化,定制的 gentoo 作為載體。

2, 選擇高性能 web server

Apache是 LAMP 架構最核心的 web server, 開源,子產品豐富,功能強大,穩定是它的絕對優勢。

在美國前100個網站中,有49%的使用apache。可見其影響力。

但是,有利有弊,apache的緻命缺陷,就是多于臃腫,強大的功能,一定會帶來性能上的損耗。

面對這種情形,在市場上,有一支異軍突起,那就是更輕量級的 web server – lighty(lighttpd)。

官方為它定義的口号是 fly light。

它具有非常低的記憶體開銷,cpu占用率低,效能好,以及豐富的子產品支援等特點。

這讓他在短時間内占據了14%以上的市場佔有率。并且有越來越多的人開始選擇使用lighty作為前端 web server。

到這裡為之,其實高性能 web server 非 lighty 莫屬。但更棒的是,依靠 gentoo 的高度定制化,我們還可以

進一步提升 lighty 的性能潛力-那就是定制 lighty。

3,選擇高性能 database

資料庫是任何網站走動态化内容展現及業務資料存儲的保障。

市面上的開源資料庫主要有 mysql , postgresql , berkeley db, sqlite 等。

其中,對比一下,

mysql : 多線程,多處理器,高性能,5.0以上支援事務,豐富資料類型和sql文法,跨平台。

postgresql : 面向對象,內建web,支援事務,使用程序,速度略慢于mysql.

berkeley db : 嵌入式,資料操作通過接口完成,跨語言。

sqlite : 與php內建,支援ACID特性,支援大并發量,庫鎖。

從上面的對比中,不難看出,mysql 應該是性能,穩定性與功能性的綜合之選。

4,選擇高性能 script language

能與 lighty 結合的腳本語言,主要有 ruby, php, Python, perl。方式主要是通過 fast-cgi 來通路。

隻從性能角度對比幾種語言:

設計高性能網站架構-LLMP

( http://www.timestretch.com/FractalBenchmark.html )

不難看出,python 是此次測試中,性能最好的腳本語言。

動态處理方面有絕對優勢。對比 php , 前者,可以更快的渲染輸出内容,并由經lighty, 高速flush緩存到浏覽器。

值得一提的是, douban.com 也是使用 python 作為應用伺服器。