在網站架構設計中,大家一定對 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 來通路。
隻從性能角度對比幾種語言:
( http://www.timestretch.com/FractalBenchmark.html )
不難看出,python 是此次測試中,性能最好的腳本語言。
動态處理方面有絕對優勢。對比 php , 前者,可以更快的渲染輸出内容,并由經lighty, 高速flush緩存到浏覽器。
值得一提的是, douban.com 也是使用 python 作為應用伺服器。