目前網站架構一般分成負載均衡層、WEB層和資料庫層,我其實一般還會多加一層,即檔案伺服器層,這樣我們在後面的讨論過程中,我們可以依次對這四層進行讨論;這裡為了更具有說服力,我将用三個并發較大的生産環境來說明下,一個是我現在維護的電子商務網站(并發最大值2000,日PV500萬左右,此并發并不是總這麼高的,隻是最高峰是有2900,下面的網站類似)、我的一拍網網站(并發最大值500,日PV50萬左右)、以前維護的大型CDN廣告網站(并發最大值5000,日PV5000萬左右)。
首先說下負載均衡層,我們熟悉的硬體/軟體技術有F5/LVS、HAProxy,還有Nginx,它們的性能都是非常優異的,且不說F5的抗并發能力,LVS現在在全世界範圍内的應用,而且淘寶現在更新架構,也将LVS取代了F5,HAProxy可能大家不是特别熟悉,但它确實在生産環境下表現優異,強大的吞吐能力,穩定性比之硬體過尤不及,再說下Nginx,我是将Nginx/HAProxy+Keepalived架構用于了各種生産環境中的,經過長時間的線上觀察,發現Nginx/HAProxy作為負載均衡器/反向代理也很穩定,就算并發壓力過大,我們前面可以用F5/LVS來頂,而将Nginx作為中層代理,這樣的效果其實也不差,是以負載均衡層的壓力不能算是特别大。
WEB層這塊壓力比較大的網站現在都換成了Nginx作為WEB應用伺服器,事實上,它的抗并發能力确實超過了預期;我朋友維護的一家門戶網站,高峰期時某台Nginx應用伺服器的并發達到了一萬以上,但Nginx也很負責和穩定的提供服務,在實際的生産環境中,如果我們考慮到後端的資料庫服務時,一萬并發應該也算是一個比較大的數值了;另外,Linux叢集有一個優勢,就是它的高擴充性,就算我們的網站的并發有一萬以上,我們後端的WEB服務是Apache,我們多加幾台Apache伺服器即可,在實際的線上維護時,我們發現,高峰期間,實際上每台WEB的并發并不算是特别大,是以網站的壓力在這一層我們也能通過技術手段加以克服。