最便宜的高負載網(wǎng)站架構
1, LVS做前端四層軟件均衡負載
LVS是基于IP虛擬分發(fā)的規(guī)則, 不同于apache,squid這些7層基于http協(xié)議的反向代理軟件, 前者在性能上能得到更好的保證!
另外, 后者在處理http header信息時, 會顯得很被動.
開源, 高性能, 這不就是我們所需要的嗎?
另外, 針對大訪問量, 還可以使用DNS輪詢+LVS集群.
當然, 比起硬件均衡負載, 單點故障的風險會更大.
2,squid 做前端靜態(tài)頁面緩存, 包括 css, javascript
squid 是業(yè)內(nèi)公認的優(yōu)秀代理服務器,其緩存能力更讓許多高負載網(wǎng)站青睞!(比如新浪,網(wǎng)易等)
使用他, 通過本機內(nèi)存+ 磁盤的集群存儲方案, 能夠起到很好的加速作用!
使用squid, 也是大部分網(wǎng)站的節(jié)約成本之道.
3, lighttpd 提供圖片, css, javascript 服務. 做到靜態(tài)與動態(tài)分離.
采用lighttpd, 而不使用apache, 是因為它對靜態(tài)內(nèi)容的響應速度高于apache一到三倍.
這對于高負載網(wǎng)站是夢寐以求的.
加上, 在其前端部署了squid, 真正做到了, 超高命中率, 超快響應速度.
3,apache 用來處理php, url重定向, url過濾, 防洪水攻擊等等.
apache是業(yè)內(nèi)主流http服務器,比較看重它的穩(wěn)定性, 擴展性.
使用它, 制作一些推廣頁面, 一些需要快速開發(fā)的頁面, 最好不過了.
最重要的是, 它可以使用mod_jk或mod_proxy對復雜業(yè)務請求的進行代理.
比如, 將用戶注冊, 代理給jboss, 用java開發(fā).
需要提一下的是, apache的module開發(fā).
一句話 - 非常實用.
你可以只用apache提供的類庫, 就能很方便的開發(fā)一個http的日志處理模塊.
另外, 它也可以與squid 集成, 從而, 形成一條很完美的加速鏈.
4,JBOSS 用來處理含復雜的業(yè)務邏輯與充當JAVAEE容器的角色
JBOSS是red hat旗下的優(yōu)秀中間件產(chǎn)品,在java開源領域小有名氣,并且完全支持j2ee規(guī)范的,功能非常強大
使用他,既能保證業(yè)務流程的規(guī)范性,又可以節(jié)省開支(免費的)
java的優(yōu)勢, 就不多說了.
5,mysql數(shù)據(jù)庫
使用mysql數(shù)據(jù)庫,單機達到百萬級別的數(shù)據(jù)存儲,及快速響應,應該是沒問題的.
如果網(wǎng)站本身訪問增長很快, 可以考慮mysql 集群.
從而獲得高伸縮性, 高訪問性能.
不管是通過 master+slaver的主從結構.還是根據(jù)業(yè)務進行分表.
mysql的集群特性, 都是網(wǎng)站首選的.
6,memcache作為分布式緩存
基于中央存放的緩存載體, 一般都需要集群.
基于c寫的memcache, 可以很自豪的頂起高性能緩存的帽子.
它幾乎可以緩存任何數(shù)據(jù). 包括 html, java對象, 文件等等.
重要的是, 它給jboss, apache等服務器實現(xiàn)高效的緩存方案, 提供了有力的保證.
LVS
======================================
.....
apache mod_jk / mod_proxy+ jboss
apache mod_jk / mod_proxy+ jboss
.....
squid + lighttpd
squid + lighttpd
....
=================================
....
mysql + memcache
mysql + memcache
......
================================