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