PHP+MySQL網(wǎng)站架構(gòu)方面的一些認(rèn)識(shí)
目前網(wǎng)站架構(gòu)一般分成負(fù)載均衡層、WEB層和數(shù)據(jù)庫(kù)層
負(fù)載均衡層-- LVS,
WEB層--使用了nginxweb服務(wù)器,
數(shù)據(jù)庫(kù)層--我們使用了db集群方案。
網(wǎng)站概況
瀏覽量(PV) | 獨(dú)立訪客(UV) | 訪問次數(shù)(VV) | 獨(dú)立IP | 發(fā)帖量 | 注冊(cè)會(huì)員數(shù) | 跳出率 | 平均在線時(shí)長(zhǎng) | |
---|---|---|---|---|---|---|---|---|
今日 | 80,973 | 37,999 | 42,573 | 27,979 | 624 | 140 | 72.27% | 00:07:56 |
昨日 | 179,250 | 74,584 | 88,986 | 54,021 | 1,400 | 285 | 77.48% | 00:10:00 |
歷史平均 | 154,020 | 60,927 | 71,924 | 47,883 | 1,936 | 201 | 78.24% | 00:10:00 |
歷史*** | 238,993 | 94,647 | 110,552 | 72,692 | 6,602 | 468 | 89.04% | 00:11:02 |
1 代碼提交系統(tǒng)
這是在代碼進(jìn)入生產(chǎn)環(huán)境前的必須要經(jīng)歷的。
在測(cè)試服務(wù)器上開發(fā)OK后,我們提交給SVN服務(wù)器,然后進(jìn)入代碼提交服務(wù)器。
進(jìn)入代碼提交服務(wù)器后,有兩步要走的,我理解為一個(gè)拉,一個(gè)推。
a 我們使用SVN up 將本地文件更新
b 使用rsync推送到生產(chǎn)環(huán)境服務(wù)器
以上兩部分 我分別寫成一個(gè)shell文件
運(yùn)行 bash xxx.sh 即可
2 用戶訪問網(wǎng)站的流程,基本是這樣的:
網(wǎng)站使用了動(dòng)態(tài)CDN,起到加速的作用,我們先把動(dòng)態(tài)CDN放到一邊,說說下面發(fā)生的事情。
在前端我們使用了LVS,關(guān)于LVS我使用百科上的文章,給予解釋下:
LVS是一個(gè)開源的軟件,由畢業(yè)于國(guó)防科技大學(xué)的章文嵩博士于1998年5月創(chuàng)立,可以實(shí)現(xiàn)LINUX平臺(tái)下的簡(jiǎn)單負(fù)載均衡。LVS是Linux Virtual Server的縮寫,意思是Linux虛擬服務(wù)器。
LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,而且無需修改客戶端和服務(wù)器端的程序。為此,在設(shè)計(jì)時(shí)需要考慮系統(tǒng)的透明性、可伸縮性、高可用性和易管理性。
一般來說,LVS集群采用三層結(jié)構(gòu),其主要組成部分為:
A、負(fù)載調(diào)度器(load balancer),它是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來自一個(gè)IP地址(我們可稱之為虛擬IP地址)上的。
B、服務(wù)器池(server pool),是一組真正執(zhí)行客戶請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有WEB、MAIL、FTP和DNS等。
C、共享存儲(chǔ)(shared storage),它為服務(wù)器池提供一個(gè)共享的存儲(chǔ)區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。
A LVS
1 核心是它的負(fù)載調(diào)度器
2 塔負(fù)責(zé)維護(hù)一個(gè)路由表
3 實(shí)時(shí)監(jiān)控真實(shí)server健康狀況
B LVS必須有個(gè)熱備 hot back,萬一LVS壞了,那就完蛋了。這樣,當(dāng)LVS萬一壞了,可以備份LVS接管工作。
C 源站192.168.1.156/157 對(duì)外虛擬一個(gè)VIP 115。DNS解析域名的時(shí)候就解析到這個(gè)VIP上。至于具體用戶訪問是哪臺(tái)服務(wù)器,對(duì)用戶而言是透明的,LVS根據(jù) IP負(fù)載均衡技術(shù) 為用戶分配源站地址。
D 兩臺(tái)源站服務(wù)器,為了可以保證某些地方的數(shù)據(jù)同步,我做了:
1 兩臺(tái)源站服務(wù)器之間的緩存通過NFS掛載,保持同步;
2 crontab中寫入計(jì)劃任務(wù),同步相關(guān)ssi文件;
E 后端DB的連接,我們使用了2主2從DB集群
兩臺(tái)主庫(kù)77、78對(duì)外虛擬成VIP 110,原理,當(dāng)任何一臺(tái)DB掛掉后,另外一臺(tái)立即接管其。兩臺(tái)db互為主從。通過keepalived監(jiān)測(cè)各自生存狀態(tài)。
F 主從庫(kù)之間通過binlog保持同步。所有binlog均通過主庫(kù)發(fā)出。其余三臺(tái)從庫(kù)(其中一臺(tái)為主庫(kù),角色為從庫(kù))接受binlog,維護(hù)各自數(shù)據(jù)成分。
G 另外我們是有了一臺(tái)附件服務(wù)器。減輕WEB壓力。
H 另外,還有圖片服務(wù)器/小圖標(biāo)服務(wù)器,可以放在web自身,通過域名區(qū)分。其實(shí)圖片、附件、css等哪兒并不重要,只要可以通過域名訪問到,是完全可以的。
我們通過博瑞系統(tǒng),對(duì)網(wǎng)站進(jìn)行監(jiān)控。 對(duì)于web站點(diǎn),首屏?xí)r間是考核的重點(diǎn),任何一個(gè)用戶不想等待3s鐘頁面還沒有加載完,用戶體驗(yàn)非常差。
這是在加入CDN后,對(duì)全國(guó)各監(jiān)測(cè)點(diǎn)進(jìn)行相關(guān)的監(jiān)測(cè)和性能的評(píng)測(cè)。
原文連接:http://www.cnblogs.com/wangjiafang/archive/2012/06/12/2546314.html






