php支持高并發(fā)的網(wǎng)站的處理

1,Webserver(nginx):這一層可以輕松分布式部署的,結(jié)合智能DNS解析可以簡易的防止單點故障、實現(xiàn)區(qū)域訪問加速,結(jié)合lvs很容易實現(xiàn)負載均衡。這一層主要負責(zé)處理靜態(tài)請求和轉(zhuǎn)發(fā)php請求至第二層的php處理節(jié)點,至于靜態(tài)資源地址(http://misc.xxxx.com)可以單獨拿出來部署,或者直接使用商用的云存儲服務(wù)(國內(nèi)七牛不錯,國外有AmazonS3)

2,php處理節(jié)點:一個節(jié)點其實就是一個監(jiān)聽端口的系統(tǒng)進程,webserver的請求通過負載均衡器進行分發(fā),很好實現(xiàn)分布式和負載均衡。類似于php自帶的php-fpm,其實facebook出的hhvm性能非常好,但是還不是很穩(wěn)定。

3,高速緩存:用的memcached,這一層的作用主要減輕數(shù)據(jù)庫io和加快熱數(shù)據(jù)訪問。主要有兩種方式,一種在程序的全局層面加一個緩存處理,這種方法代碼耦合度低,但是有效命中率不高,有些項目不一定適應(yīng),另一種是具體的數(shù)據(jù)存取加緩存處理,這種辦法耦合度較高,但是緩存命中率非常高,幾乎沒有無效緩存存在。

4,數(shù)據(jù)庫 :我現(xiàn)在的項目數(shù)據(jù)規(guī)模不大,暫時只用了單臺數(shù)據(jù)庫,但是程序邏輯上已做好了數(shù)據(jù)庫線性擴展的準備。其實數(shù)據(jù)庫層的擴展是老生常談了,常用手段是分庫分表,這一塊需要在前期的代碼就打下基礎(chǔ),另外更平滑地手段是使用中間件,比如360的Atlas,阿里巴巴的cobar,淘寶的TDDL,中間件可以在不大范圍變更代碼的情況下擴展,但是具體的使用場景還是有限的,具體項目還需單獨考察。

5,其他:根據(jù)不同的項目,架構(gòu)還可以選擇性的使用隊列,我現(xiàn)在用的beantalkd,redis也是一個很好的選擇。隊列常用的使用環(huán)境是郵件發(fā)送和站內(nèi)消息推送上面,在某些場景下也可以作為核心數(shù)據(jù)庫的緩沖,對應(yīng)對大并發(fā)或者突發(fā)性流量也是不錯的選擇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容