本發(fā)明涉及smartrack服務(wù)器技術(shù)領(lǐng)域,具體地說是一種smartrack服務(wù)器高并發(fā)優(yōu)化的方法。
背景技術(shù):
互聯(lián)網(wǎng)時代信息呈現(xiàn)爆炸式增長,而且多高并發(fā)事件發(fā)生,例如,鐵道部推出12306網(wǎng)站,實(shí)行網(wǎng)絡(luò)實(shí)名購票,春節(jié)7天內(nèi),12306網(wǎng)站訪問用戶已占全球互聯(lián)網(wǎng)用戶的0.902%,每天點(diǎn)擊量高達(dá)10億人次,系統(tǒng)一度支撐不住如此龐大的訪問量而陷入崩潰。微信春節(jié)紅包除夕到初五總收發(fā)次數(shù)達(dá)321億次,相較于羊年春節(jié)6天收發(fā)32.7億次,增長近10倍,龐大的訪問量造成系統(tǒng)大量延遲,導(dǎo)致用戶無法正常收發(fā)紅包。
smartrack是一類專為互聯(lián)網(wǎng)及通信運(yùn)營商開發(fā)的定制化解決方案,整機(jī)柜服務(wù)器打破了傳統(tǒng)服務(wù)器固有設(shè)計架構(gòu),摒棄傳統(tǒng)服務(wù)器單機(jī)電源、風(fēng)扇、管理獨(dú)享的設(shè)計思想,將供電、散熱和管理單元統(tǒng)一集中。該產(chǎn)品整體生產(chǎn)、整體部署,使得部署對象從單臺服務(wù)器變成集成的數(shù)據(jù)中心模塊,并且還具有自動化的到貨一致性與狀態(tài)檢驗(yàn)系統(tǒng),整體特點(diǎn)如下:
1.功能模塊和支撐模塊徹底分離,更加可靠高效,結(jié)合電源負(fù)載動態(tài)調(diào)整技術(shù),電源轉(zhuǎn)換效率高達(dá)94%以上;
2.機(jī)柜采用風(fēng)扇墻集中散熱,通過供電、散熱的整合,smartrack運(yùn)行功耗降低10%以上;
3.采用n+n冗余的電源模組的設(shè)計,系統(tǒng)可靠性大大增加,充分保證系統(tǒng)的高可靠運(yùn)行。
4.靈活支持半寬計算節(jié)點(diǎn)、全寬存儲節(jié)點(diǎn)等各類節(jié)點(diǎn),兼容標(biāo)準(zhǔn)機(jī)架式網(wǎng)絡(luò)交換機(jī),將網(wǎng)絡(luò)、計算、存儲功能整合在一臺設(shè)施中來滿足不同用戶的配置需求。
5.整機(jī)柜系統(tǒng)簡易維護(hù),無需繁瑣拆裝,獨(dú)有節(jié)點(diǎn)前維護(hù)設(shè)計、各模組免工具熱插拔設(shè)計、優(yōu)化的線纜走線設(shè)計,使得系統(tǒng)運(yùn)維難度大大降低。
6.輕松實(shí)現(xiàn)統(tǒng)一門戶集中管理和業(yè)務(wù)自動部署,實(shí)現(xiàn)管理中心對整機(jī)柜的功能模塊和支撐模塊統(tǒng)籌管理。依據(jù)狀態(tài)信息,動態(tài)調(diào)節(jié)運(yùn)行參數(shù),保證業(yè)務(wù)更加穩(wěn)定運(yùn)行。
但是,現(xiàn)實(shí)中諸如淘寶雙11及12306購票網(wǎng)站的大規(guī)模高并發(fā)時,造成系統(tǒng)無法支撐如此龐大的訪問量而陷入延時和崩潰的情況時有發(fā)生。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種smartrack服務(wù)器高并發(fā)優(yōu)化的方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種smartrack服務(wù)器高并發(fā)優(yōu)化的方法,具體方法如下:
s1、根據(jù)應(yīng)用服務(wù)器的性能和并發(fā)訪問量的大小來規(guī)劃應(yīng)用服務(wù)器的數(shù)量;
s2、使用負(fù)載均衡技術(shù),大大減輕單臺服務(wù)器處理高并發(fā)請求,確保整個網(wǎng)站系統(tǒng)面臨高負(fù)載時的可靠性;
s3、優(yōu)化設(shè)計數(shù)據(jù)庫的結(jié)構(gòu)并建立高效的索引;
s4、通過緩存技術(shù)進(jìn)行管理,從而減輕服務(wù)器重新請求的壓力,提高訪問速度。
進(jìn)一步的,優(yōu)選的方法,所述的s1中,具體實(shí)施方式為,在高并發(fā)訪問峰期間,增加關(guān)鍵應(yīng)用的服務(wù)器數(shù)量。
進(jìn)一步的,優(yōu)選的方法,通過所述的負(fù)載均衡技術(shù),實(shí)現(xiàn)根據(jù)不同服務(wù)器的繁忙和資源情況,自動分配處理性能最優(yōu)的服務(wù)器上,從而將大規(guī)模用戶產(chǎn)生的高并發(fā)訪問均衡地分流到各個服務(wù)器上。
進(jìn)一步的,優(yōu)選的方法,所述的優(yōu)化設(shè)計數(shù)據(jù)庫結(jié)構(gòu)的具體方法如下:
s1、數(shù)據(jù)行的長度不超過8020字節(jié);s2、優(yōu)先使用數(shù)字類型的字段;
s3、合理使用不可變字符類型char和可變字符類型varchar;
s4、字段長度的設(shè)定最短化,以提高查詢的效率。
進(jìn)一步的,優(yōu)選的方法,所述的建立高效索引的具體方法如下:
s1、通過搜索參數(shù),盡量減少對表的訪問行數(shù),最小化結(jié)果集,從而減輕網(wǎng)絡(luò)負(fù)擔(dān);
s2、分開處理,提高每次的響應(yīng)速度;
s3、在數(shù)據(jù)窗口使用sql時,把使用的索引放在選擇的首列;
s4、簡化算法的結(jié)構(gòu)。
進(jìn)一步的,優(yōu)選的方法,所述的建立高效索引的注意事項(xiàng)如下:
s1、盡量避免where子句中對字段進(jìn)行null值判斷的;
s2、盡量避免在where子句中使用!=或<>操作符;
s3、盡量避免在where子句中使用or來連接條件;
s4、慎用in和notin;
s5、盡量避免在索引過的字符數(shù)據(jù)中,使用非打頭字母搜索。
進(jìn)一步的,優(yōu)選的方法,
所述的緩存技術(shù)分為數(shù)據(jù)緩存和頁面緩存;
所述的數(shù)據(jù)緩存,將數(shù)據(jù)調(diào)用到內(nèi)存,然后在內(nèi)存中讀取數(shù)據(jù),從而可以大大提高讀取速度;
所述的頁面緩存,將用戶經(jīng)常訪問的頁面在服務(wù)器的相應(yīng)目錄下生成靜態(tài)頁面,當(dāng)用戶再次訪問時,不需要對服務(wù)器進(jìn)行動態(tài)請求,只需要對緩存下來的html頁面直接讀取,以提高訪問效率。
本發(fā)明的一種smartrack服務(wù)器高并發(fā)優(yōu)化的方法和現(xiàn)有技術(shù)相比,有益效果如下:
1、通過負(fù)載均衡技術(shù),將大規(guī)模用戶產(chǎn)生的高并發(fā)訪問均衡地分流到各個服務(wù)器上;
2、設(shè)計人員在設(shè)計階段應(yīng)根據(jù)系統(tǒng)操作的類型、頻度均衡考慮數(shù)據(jù)冗余和表間關(guān)聯(lián),以獲得最優(yōu)的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計;
3、優(yōu)化設(shè)計數(shù)據(jù)庫結(jié)構(gòu)及建立高效索引,提高查詢效率,減少資源消耗;
4、通過緩存技術(shù)進(jìn)行管理,從而減輕服務(wù)器重新請求的壓力,提高網(wǎng)站的訪問速度;
5、通過smartrack服務(wù)器高并發(fā)優(yōu)化,可以解決現(xiàn)實(shí)中諸如淘寶雙11及12306購票網(wǎng)站的大規(guī)模高并發(fā)時造成的系統(tǒng)無法支撐如此龐大的訪問量而陷入延時和崩潰的問題。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例對本發(fā)明作進(jìn)一步說明。
實(shí)施例1:
本發(fā)明為一種smartrack服務(wù)器高并發(fā)優(yōu)化的方法,首先,服務(wù)器配置優(yōu)化,根據(jù)應(yīng)用服務(wù)器的性能和并發(fā)訪問量的大小來規(guī)劃應(yīng)用服務(wù)器的數(shù)量。在高并發(fā)訪問峰期間,適當(dāng)增加某些關(guān)鍵應(yīng)用的服務(wù)器數(shù)量。其次,使用負(fù)載均衡技術(shù),負(fù)載均衡技術(shù)是解決集中并發(fā)訪問的核心技術(shù),也是一種較為有效的解決網(wǎng)站大規(guī)模并發(fā)訪問的方法。再次,數(shù)據(jù)庫優(yōu)化,包括設(shè)計優(yōu)化和索引優(yōu)化,整個系統(tǒng)的流程的時候,為了保證數(shù)據(jù)庫的一致性和完整性,在邏輯設(shè)計的時候往往會設(shè)計過多的表間關(guān)聯(lián),盡可能的降低數(shù)據(jù)的冗余。建立高效的索引,盡量減少對數(shù)據(jù)庫的訪問次數(shù);通過搜索參數(shù),盡量減少對表的訪問行數(shù),最小化結(jié)果集,從而減輕網(wǎng)絡(luò)負(fù)擔(dān)。最后,數(shù)據(jù)緩存技術(shù)的使用,現(xiàn)在大多數(shù)大型網(wǎng)站都有使用緩存技術(shù),把用戶經(jīng)常使用到的數(shù)據(jù)通過緩存技術(shù)進(jìn)行管理,從而減輕服務(wù)器重新請求的壓力,提高網(wǎng)站的訪問速度。
其中,服務(wù)器配置優(yōu)化中,根據(jù)應(yīng)用服務(wù)器的性能和并發(fā)訪問量的大小來規(guī)劃應(yīng)用服務(wù)器的數(shù)量。有一個使用原則是:單臺應(yīng)用服務(wù)器的性能不一定要求最好,但是數(shù)量一定要足夠,最好能有一定的冗余來保障服務(wù)器故障。特別是,在高并發(fā)訪問峰期間,適當(dāng)增加某些關(guān)鍵應(yīng)用的服務(wù)器數(shù)量。比如在某些高峰查詢業(yè)務(wù)上,可以使用多臺服務(wù)器,以滿足用戶每小時上百萬次的點(diǎn)擊量。
負(fù)載均衡技術(shù)是解決集中并發(fā)訪問的核心技術(shù),也是一種較為有效的解決網(wǎng)站大規(guī)模并發(fā)訪問的方法。實(shí)現(xiàn)負(fù)載均衡技術(shù)的主要設(shè)備是負(fù)載均衡器服務(wù)器。例如,我們把網(wǎng)站部署到在兩臺不同的服務(wù)器之上(前提是要保證這2臺或者多臺服務(wù)器都可以正常運(yùn)行網(wǎng)站程序),這幾臺服務(wù)器之間通過安裝特定的軟件實(shí)現(xiàn)負(fù)載均衡。那么,某個時刻,當(dāng)網(wǎng)站面臨大規(guī)模訪問時,用戶的請求會通過負(fù)載均衡程序,根據(jù)不同服務(wù)器的繁忙和資源情況,自動分配到處理性能最優(yōu)的服務(wù)器上,從而將大規(guī)模用戶產(chǎn)生的高并發(fā)訪問均衡地分流到各個服務(wù)器上。這樣就能大大減輕單臺服務(wù)器處理高并發(fā)請求,確保整個網(wǎng)站系統(tǒng)面臨高負(fù)載時的可靠性。
優(yōu)化設(shè)計數(shù)據(jù)庫。整個系統(tǒng)設(shè)計的時候,必須要考慮在高并發(fā)大數(shù)據(jù)量的訪問情況下,數(shù)據(jù)庫的模型確定下來之后,做一個系統(tǒng)內(nèi)數(shù)據(jù)流向圖,分析可能出現(xiàn)的瓶頸。為了保證數(shù)據(jù)庫的一致性和完整性,在邏輯設(shè)計的時候往往會設(shè)計過多的表間關(guān)聯(lián),盡可能的降低數(shù)據(jù)的冗余。根據(jù)業(yè)務(wù)規(guī)則,確定對關(guān)聯(lián)表的數(shù)據(jù)量大小、數(shù)據(jù)項(xiàng)的訪問頻度,對此類數(shù)據(jù)表頻繁的關(guān)聯(lián)查詢應(yīng)適當(dāng)提高數(shù)據(jù)冗余設(shè)計但增加了表間連接查詢的操作,也使得程序的變得復(fù)雜,為了提高系統(tǒng)的響應(yīng)時間,合理的數(shù)據(jù)冗余也是必要的。設(shè)計人員在設(shè)計階段應(yīng)根據(jù)系統(tǒng)操作的類型、頻度加以均衡考慮。
1.數(shù)據(jù)行的長度不要超過8020字節(jié),如果超過這個長度的話在物理頁中這條數(shù)據(jù)會占用兩行從而造成存儲碎片,降低查詢效率。2.能夠用數(shù)字類型的字段盡量選擇數(shù)字類型而不用字符串類型的(電話號碼),這會降低查詢和連接的性能,并會增加存儲開銷。
3.對于不可變字符類型char和可變字符類型varchar都是8000字節(jié),char查詢快,但是耗存儲空間,varchar查詢相對慢一些但是節(jié)省存儲空間。在設(shè)計字段的時候可以靈活選擇。
4.字段的長度在最大限度的滿足可能的需要的前提下,應(yīng)該盡可能的設(shè)得短一些,這樣可以提高查詢的效率,而且在建立索引的時候也可以減少資源的消耗。
建立高效的索引,保證在實(shí)現(xiàn)功能的基礎(chǔ)上,盡量減少對數(shù)據(jù)庫的訪問次數(shù);通過搜索參數(shù),盡量減少對表的訪問行數(shù),最小化結(jié)果集,從而減輕網(wǎng)絡(luò)負(fù)擔(dān);能夠分開的操作盡量分開處理,提高每次的響應(yīng)速度;在數(shù)據(jù)窗口使用sql時,盡量把使用的索引放在選擇的首列;算法的結(jié)構(gòu)盡量簡單;具體要注意的:
1.應(yīng)盡量避免在where子句中對字段進(jìn)行null值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。
2.應(yīng)盡量避免在where子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描。優(yōu)化器將無法通過索引來確定將要命中的行數(shù),因此需要搜索該表的所有行。
3.應(yīng)盡量避免在where子句中使用or來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。
4.in和notin也要慎用,因?yàn)閕n會使系統(tǒng)無法使用索引,而只能直接搜索表中的數(shù)據(jù)。
5.盡量避免在索引過的字符數(shù)據(jù)中,使用非打頭字母搜索。這也使得引擎無法利用索引。
通過緩存(cache)技術(shù)進(jìn)行管理,從而減輕服務(wù)器重新請求的壓力,提高網(wǎng)站的訪問速度。包含數(shù)據(jù)緩存和頁面緩存兩種。
1.數(shù)據(jù)緩存,指的是數(shù)據(jù)庫的數(shù)據(jù)不是直接傳輸,而是將數(shù)據(jù)調(diào)用到內(nèi)存,然后從內(nèi)存中讀取,從而可以大大提高讀取速度。數(shù)據(jù)緩存技術(shù)有很多的方案,這里由于開源、高性能等特點(diǎn),使用memcache來設(shè)置數(shù)據(jù)緩存技術(shù)來加速動態(tài)web應(yīng)用程序,減輕數(shù)據(jù)庫負(fù)載。
2.頁面緩存一定程度上是針對公共頁面,靜態(tài)化也是頁面緩存的一種,將用戶經(jīng)常訪問的頁面在服務(wù)器的相應(yīng)目錄下生成靜態(tài)頁面,當(dāng)用戶再次訪問時,不需要對服務(wù)器進(jìn)行動態(tài)請求,而只需要對緩存下來的html頁面直接讀取,這樣訪問的效率就可以得到有效的提高。
本發(fā)明一種smartrack服務(wù)器高并發(fā)優(yōu)化的方法,主要通過4個方面進(jìn)行,服務(wù)器配置優(yōu)化,使用負(fù)載均衡技術(shù),數(shù)據(jù)庫優(yōu)化和數(shù)據(jù)緩存技術(shù)的使用;通過smartrack服務(wù)器高并發(fā)優(yōu)化,可以解決現(xiàn)實(shí)中諸如淘寶雙11及12306購票網(wǎng)站的大規(guī)模高并發(fā)時造成的系統(tǒng)無法支撐如此龐大的訪問量而陷入延時和崩潰的問題。
通過上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的幾種具體實(shí)施方式。在公開的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。