大话网站---从Hello World到高并发网站
偶得一空閑時(shí),開始整理一些東西來(lái)與大家共享,為這個(gè)世界上IT苦旅的人節(jié)省一些時(shí)間。因?yàn)樯婕拜^多內(nèi)容,我會(huì)漸漸補(bǔ)充內(nèi)容
一,選擇:
???? 首先選擇網(wǎng)站技術(shù)架構(gòu),如果我們不是做面向服務(wù)型,電子商務(wù)型網(wǎng)站或管理網(wǎng)站,我們一般不用考慮J2EE,SSH等方案,一般選擇前端部分主要為PHP框架,后端采用多種語(yǔ)言及組件的混合結(jié)構(gòu)來(lái)提供服務(wù)。
二,基本結(jié)構(gòu):
??? 1. Web服務(wù):
???????? 網(wǎng)上有很多關(guān)于Web服務(wù)器的選擇,如果為將來(lái)的擴(kuò)展及高并發(fā)做準(zhǔn)備,最好是前端用Nginx,Nginx在反向代理,高并發(fā)的資源消耗上是很少的,而且文檔雖沒(méi)有Apache完善,但也至少比Lighttpd的文檔多些,當(dāng)然,Lighttpd性能在靜態(tài)文件方面占優(yōu)勢(shì),這里就不說(shuō)太多這方面的分析了,容易讓一般人產(chǎn)生困惑,這里就選擇Nginx做Web服務(wù),(隨站網(wǎng)站流量增加,它會(huì)改變職能為前端代理及部分緩存工作,如果你采用AS式服務(wù)集群,它還會(huì)被當(dāng)成主控服務(wù)器.進(jìn)行一些負(fù)載策略的工作)
??? 2. 數(shù)據(jù)服務(wù):
??????? 如果我們不想花銀子,用不起Oracle那些昂貴的方案(如Data Guard, Real Application Clusters, MAA(Maximum Availablity Architecture),但我們又想要較復(fù)雜的商務(wù)數(shù)據(jù)功能,那MySQL當(dāng)然是首選了,不過(guò)不知道被oracle收購(gòu)后,這樣的日子還能過(guò)多久,不用擔(dān)心,我們還有ProgreSQL,至于如今炒得火熱的NoSQL數(shù)據(jù)庫(kù),大家不必報(bào)太高期望,我用過(guò)一些,這些數(shù)據(jù)庫(kù)一般都是無(wú)事務(wù)機(jī)制,關(guān)系Join等功能都較弱,一般處理一些海量的非事務(wù)性數(shù)據(jù)還行.一般適合高 發(fā)網(wǎng)站里混合數(shù)據(jù)中心的一個(gè)存貯方式.
??? 3.數(shù)據(jù)備份
?????? 不同的數(shù)據(jù)有不同的備份方式,一般要用腳本開發(fā)一些自動(dòng)備份工具.定期備份,因?yàn)橐婚_始還沒(méi)有用到分布式的數(shù)據(jù)庫(kù)系統(tǒng),簡(jiǎn)單的周期性備份是必須的.一般數(shù)據(jù)庫(kù)都有冷備份,熱備份的命令,但還是要工具化它們,因?yàn)殡S著系統(tǒng)增長(zhǎng),維護(hù)工作越來(lái)越多,等到專門的維護(hù)小組成立時(shí),可能一切都晚太多了.
?? 經(jīng)過(guò)以上的方案分析與構(gòu)建,一般會(huì)形成一個(gè)簡(jiǎn)單可運(yùn)維的網(wǎng)站了.
三,第一次優(yōu)化:
?? 1.代理:
???????隨著網(wǎng)站訪問(wèn)量上升,隨之而來(lái)有很多問(wèn)題出現(xiàn):比如安全問(wèn)題?,有惡意攻擊,垃圾式的訪問(wèn), 還有網(wǎng)站主動(dòng)安全策略SSL給服務(wù)器帶來(lái)性能消耗過(guò)大問(wèn)題.為了解決這些問(wèn)題,同時(shí)我們還在靈活處理對(duì)高并發(fā)訪問(wèn)的分發(fā),或者訪問(wèn)跳轉(zhuǎn),也就是常說(shuō)的負(fù)載均衡策略的靈活實(shí)施,我們要在網(wǎng)站服務(wù)器上加上反向代理服務(wù)器,一般反向代理服務(wù)器能處理高并發(fā)的連接,性能優(yōu)越,Nginx是較優(yōu)選擇.Nginx同時(shí)也支持高效的緩存機(jī)制.
?? 2.緩存:
????? 網(wǎng)站的訪問(wèn)一般資源可以分為靜態(tài)化資源,動(dòng)態(tài)化資源.靜態(tài)化資源不是指靜態(tài)網(wǎng)頁(yè),而提指最終響應(yīng)數(shù)據(jù)變化周期長(zhǎng)的資源.比如靜態(tài)網(wǎng)頁(yè),比如一些索引目錄性數(shù)據(jù),比如通過(guò)動(dòng)態(tài)網(wǎng)頁(yè)訪問(wèn)的一些不常變化的資源,比如圖片,音視頻等素材性數(shù)據(jù),舊的報(bào)表,字典性數(shù)據(jù)等,都可以看成靜態(tài)化數(shù)據(jù),這些數(shù)據(jù)完全不必每次都經(jīng)過(guò)網(wǎng)站服務(wù)器去數(shù)據(jù)庫(kù)里查找,再經(jīng)過(guò)IO讀取(當(dāng)然,操作系統(tǒng)會(huì)對(duì)數(shù)據(jù)文件,及普通文件有OS級(jí)是的緩存,這個(gè)要等到后面分析),所以需要對(duì)這些數(shù)據(jù)進(jìn)行緩存,緩存分為服務(wù)器式緩存及應(yīng)用邏輯中的緩存兩類,
??? 服務(wù)器式緩存就是代理的方式把靜態(tài)資源生成后放到緩存服務(wù)器上,客戶端直接從這些緩存服務(wù)器上取得數(shù)據(jù),緩存服務(wù)器有很多開源實(shí)現(xiàn),有老牌的Squid,Nginx也支持不錯(cuò)的緩存.緩存服務(wù)器一般都是在網(wǎng)站前端進(jìn)行.這是緩存策略的一部分
??? 應(yīng)用邏輯的緩存是在網(wǎng)站服務(wù)器的應(yīng)用邏輯中.對(duì)一些數(shù)據(jù)進(jìn)行緩存,以方便在邏輯處理中重復(fù)從數(shù)據(jù)庫(kù)或存貯中去取得這些數(shù)據(jù).這個(gè)層次緩存一般利用 memcached,Ncache,ehCache,OSCache等等.
?? 3.靜態(tài)化:
??
四,第二次優(yōu)化:
? 1.分布式服務(wù)器集群
? 2.分布式存貯
??a. 分布式文件
? b.分布式多媒體
? c.分布式數(shù)據(jù)庫(kù)(Sharding,Cluster或集群)
五,第三次優(yōu)化
? 1.優(yōu)化緩存及分布方式
? 2.混合其它方案。
六,第四次
? 1.日志分析。
? 2.數(shù)據(jù)倉(cāng)庫(kù)
? 3.搜索引擎,SEO
七,多層次運(yùn)維:
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/windwithlife/archive/2013/02/15/2912950.html
總結(jié)
以上是生活随笔為你收集整理的大话网站---从Hello World到高并发网站的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Sqlite c/c++ api 学习
- 下一篇: AsyncQueryHandler了解