太寬泛了,沒(méi)有具體到點(diǎn),我也只能講的寬一點(diǎn)。
目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、昌邑網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
首先要有錢,高性能高并發(fā),程序并不是最終決定性能的,硬件才是,什么樣的硬件才好,很明顯了,你不會(huì)指望用小霸王學(xué)習(xí)機(jī)來(lái)跑淘寶吧。
良好的異常處理機(jī)制,這里指的并不是程序上的,而是硬件和突發(fā)事件人為處理的反應(yīng)機(jī)制,比如地震把你們的某個(gè)機(jī)房干掉了。
高性能的負(fù)載均衡方案,如nginx,LVS等。
良好的架構(gòu)解決方案,比如消息總線的搭建,共享緩存的搭建,共享session的搭建,共享計(jì)時(shí)器的搭建等。
優(yōu)秀的單體運(yùn)行效率,這個(gè)才是程序的,要求程序運(yùn)行效率高,漏洞少。
1、提供HTML靜態(tài)訪問(wèn)
web界面上最快的訪問(wèn)速度是什么?當(dāng)然是最原始的HTML文件訪問(wèn),對(duì)于其他語(yǔ)言 比如 jsp ,asp,php等等,他們首先要通過(guò)服務(wù)器解析成html之后在返回給訪問(wèn)者,如果我們能提供全部是htm來(lái)的頁(yè)面,那么就能大大的降低服務(wù)器和數(shù)據(jù)庫(kù)資源的利用和提高網(wǎng)站的并發(fā),所以我們盡可能使我們的網(wǎng)站上的頁(yè)面采用靜態(tài)頁(yè)面來(lái)實(shí)現(xiàn),這個(gè)最簡(jiǎn)單的方法其實(shí)也是最有效的方法。當(dāng)然實(shí)現(xiàn)這種方式大家比較了解的就是信息發(fā)布系統(tǒng)CMS,信息發(fā)布系統(tǒng)可以實(shí)現(xiàn)最簡(jiǎn)單的信息錄入自動(dòng)生成靜態(tài)頁(yè)面,還能具備頻道管理、權(quán)限管理、自動(dòng)抓取等功能,對(duì)于一個(gè)大型網(wǎng)站來(lái)說(shuō),擁有一套高效、可管理的CMS是必不可少的。
在后續(xù)的文章中我們會(huì)單獨(dú)的使用jsp + servlet實(shí)現(xiàn)一個(gè)簡(jiǎn)單的信息發(fā)布系統(tǒng).
2、使用獨(dú)立的圖片服務(wù)器
為什么要把圖片單獨(dú)設(shè)置一個(gè)服務(wù)器?對(duì)于Web服務(wù)器來(lái)說(shuō),圖片消耗的服務(wù)器資源是最多的,如果能把所有的圖片資源放到一個(gè)單獨(dú)的圖片服務(wù)器中進(jìn)行處理的話,可以降低提供頁(yè)面訪問(wèn)請(qǐng)求的服務(wù)器系統(tǒng)壓力,從而能進(jìn)一步的提高web程序的并發(fā).所以在有條件的情況下最好能把圖片放置到一個(gè)單獨(dú)的服務(wù)器中.
3、配置多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,多個(gè)數(shù)據(jù)庫(kù)集群
集群(Cluster)技術(shù)是使用特定的連接方式,將價(jià)格相對(duì)較低的硬件設(shè)備結(jié)合起來(lái),同時(shí)也能提供高性能相當(dāng)?shù)娜蝿?wù)處理能力。
越是大型高并發(fā)的應(yīng)用,數(shù)據(jù)庫(kù)的壓力就會(huì)越大,如果數(shù)據(jù)庫(kù)操作很頻繁,數(shù)據(jù)庫(kù)的瓶頸很快就能顯現(xiàn)出來(lái),這時(shí)一臺(tái)數(shù)據(jù)庫(kù)將很快無(wú)法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫(kù)集群。
數(shù)據(jù)庫(kù)集群就是使用多個(gè)數(shù)據(jù)庫(kù)服務(wù)器分擔(dān)請(qǐng)求的壓力,達(dá)到快速響應(yīng)的目的.
4、使用緩存
所謂的緩存就是把數(shù)據(jù)咱是放置到內(nèi)存中,前臺(tái)在請(qǐng)求的時(shí)候直接從內(nèi)存中讀取數(shù)據(jù),而不需要去查詢數(shù)據(jù)庫(kù)或者讀取文件等,這樣就能做到最快的響應(yīng)。網(wǎng)站架構(gòu)和網(wǎng)站開(kāi)發(fā)中的緩存是非常重要的。
目前有很多開(kāi)源的緩沖實(shí)現(xiàn)方案,APC,F(xiàn)ile,SQLite,Memcache等等各種類庫(kù)實(shí)現(xiàn)著不同的緩存方式,只有通過(guò)了解他們的實(shí)現(xiàn)方式,根據(jù)具體應(yīng)用具體選擇,才會(huì)使緩存系統(tǒng)發(fā)揮出最大的性能。
對(duì)于java開(kāi)發(fā)來(lái)說(shuō),大名頂頂?shù)?分布式緩存系統(tǒng)Memcache 可能是最好的選擇,他提供一個(gè)基于Socket的訪問(wèn)方式,使得該緩存系統(tǒng)支持遠(yuǎn)程讀寫訪問(wèn)。盡管這個(gè)緩存的內(nèi)容可能是存在內(nèi)存中,也可能是存在文件內(nèi)。
先緩存的話,優(yōu)點(diǎn)就是查詢快,缺點(diǎn)就是兩方面:
1,確保數(shù)據(jù)的實(shí)時(shí)性、可靠性很困難,可能需要額外編碼來(lái)維護(hù)緩存中的數(shù)據(jù)更新。
2,如果是大規(guī)模并發(fā)訪問(wèn)的話,你的內(nèi)存是撐不住的(程序能夠緩存的數(shù)據(jù)是有限的)。
查詢的時(shí)候多表查詢,優(yōu)點(diǎn)就是中規(guī)中矩,缺點(diǎn)體現(xiàn)在兩方面:
1,耗費(fèi)大量的物理連接,可能在多人訪問(wèn)的時(shí)候給數(shù)據(jù)庫(kù)引擎極大的壓力
2,建立這些連接查詢是需要耗時(shí)(資源)的
在實(shí)際應(yīng)用中,沒(méi)有絕對(duì)的做法,要自己找一個(gè)平衡點(diǎn);
如果是用戶數(shù)很大,而且查詢很頻繁的話,就緩存,但是要設(shè)計(jì)好更新緩存的時(shí)間,不要因?yàn)榕K讀的數(shù)據(jù)影響到自己的業(yè)務(wù)。
如果用戶數(shù)量不大,那中規(guī)中矩的多表連接查詢就ok了。