併發大型網站架構設計

一個大型的網站網站應該由以下6個子系統組成html

 

負載均衡系統nginx

反向代理系統數據庫

Web服務器系統服務器

分佈式存儲系統網絡

底層服務系統架構

數據庫集羣系統併發

 

爲何要作高併發系統設計?負載均衡

事實上,針對於任何單一的網絡服務器程序,其可承受的同時鏈接數目是有理論峯值的,經過C++中對TSocket的定義類型:word,咱們能夠斷定這個鏈接理論峯值是65535,也就是說,你的單個服務器程序,最多能夠承受6萬多的用戶同時鏈接。可是,在實際應用中,能達到一萬人的同時鏈接並能保證正常的數據交換已是很不容易了,一般這個值都在2000到5000之間,能達到上萬已經很不錯了。目前的門戶網站動輒幾千萬的訪問量,因此,高併發的系統架構在所不免。分佈式

 

總體架構高併發

真實中的網站架構也許並不如此也能夠實現高性能。可是高性能的網站莫不過如此。以下圖所示。


第一  負載均衡系統

負載均衡系統分爲硬件和軟件兩種。

硬件負載均衡效率高,可是價格貴,好比F5等。

軟件負載均衡系統價格較低或者免費,效率較硬件負載均衡系統低,不過對於流量通常或稍大些網站來說也足夠使用,好比lvs。

 

 

第二  反向代理系統

目前廣泛使用Squid或者nginx,或者Lighttpd,Varish。

這四者又各自有很大的差別。

Squid:主要用來作反向代理,使用內存+硬盤

Nginx:能夠反向代理+負載均衡+WWW解析

Lighttpd:反向代理能力通常,處理FastCGI比較好,消耗內存很小

Varish:主要作內存的反向代理,性能最優

 

第三  Web服務器系統

由Apache負責解析PHP內容,也能夠用Nginx,或者Lighttpd,相對來講Apache比較穩定。

 

第四  分佈式存儲系統

存儲量很大,常常會達到單臺服務器沒法提供的規模,好比相冊、視頻等應用。所以須要專業的大規模存儲系統。

 

第五  底層服務系統

根據各自須要由C/C++開發設計供上層CGI調用。

 

第六  數據庫系統

1)使用MySQL數據庫,考慮到Web應用的數據庫讀多寫少的特色,咱們主要對讀數據庫作了優化,提供專用的讀數據庫和寫數據庫,在應用程序中實現讀操做和寫操做分別訪問不一樣的數據庫。

2)使用同步機制實現快速將主庫(寫庫)的數據庫複製到從庫(讀庫)。一個主庫對應多個從庫,主庫數據實時同步到從庫。

3)寫數據庫有多臺,每臺均可以提供多個應用共同使用,這樣能夠解決寫庫的性能瓶頸問題和單點故障問題。


其它:http://wenku.baidu.com/view/281da442b307e87101f69646.html

相關文章
相關標籤/搜索