溫立輝
摘? 要:針對(duì)開源中間件Tomcat的企業(yè)級(jí)應(yīng)用問題,討論了多節(jié)點(diǎn)運(yùn)行、遠(yuǎn)程部署等技術(shù),同時(shí)論述了中間件節(jié)點(diǎn)外部署源碼的格式原理、實(shí)現(xiàn)方法及其重要的運(yùn)維管理作用,進(jìn)一步闡述了內(nèi)存調(diào)優(yōu)的應(yīng)用場景與相關(guān)核心技術(shù),最后指出中間件Tomcat在Java開源領(lǐng)域舉足輕重的地位。中間件Tomcat是Apache基金會(huì)下的一個(gè)優(yōu)秀開源產(chǎn)品,其簡單、易用、開源的特性深受中小企業(yè)及程序員的喜愛,因而其在編程市場占有很大的份額,是Java開源領(lǐng)域的一個(gè)重要支柱,隨著Tomcat版本的更新升級(jí),其性能、穩(wěn)定性等方面越來越完善,甚至超出了某些非開源中間件。
關(guān)鍵詞:中間件? 內(nèi)存調(diào)優(yōu)? 多節(jié)點(diǎn)? 部署
中圖分類號(hào):TP311? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào):1672-3791(2019)04(b)-0007-02
1? 企業(yè)級(jí)應(yīng)用技能點(diǎn)
開源中間件Tomcat版本的更新速度非???,這得益于Apache基金會(huì)組織的投入力度及其他開源愛好者的無私奉獻(xiàn)。目前該服務(wù)器中間件的最新版本已經(jīng)到達(dá)Tomcat9,但目前編程市場上主流的版本是Tomcat6、Tomcat7,版本的每一次向前更新迭代都意味著功能及性能更加向前邁進(jìn),不同的版本對(duì)運(yùn)營環(huán)境有一定的不同要求。就目前來說,在Java編程界使用Tomcat以傳統(tǒng)功能及特性為主,新版本的很多特性還欠缺市場中實(shí)踐的檢驗(yàn),在實(shí)際企業(yè)級(jí)的應(yīng)用中除要掌握一般基本操作技能外還要求掌握以下一些深層次應(yīng)用。
1.1 主頁部署
眾所周知,http://127.0.0.1:8080為中間件Tomcat的主頁,但很多時(shí)候,我們需要訪問此統(tǒng)一資源定位符(URL)就要把請(qǐng)求轉(zhuǎn)到自己所部署的應(yīng)用上,這個(gè)時(shí)候就要考慮把項(xiàng)目部署在Tomcat的主頁上。在中間件的要目錄下找到webapps目錄,此目錄為專門用于存放部署在中間件上的應(yīng)用,進(jìn)入此目錄后可以看到如下資源結(jié)構(gòu):docs、examples、host-manager、manager、ROOT,這些資源全部為中間件Tomcat自帶的應(yīng)用資源,在這里要特別注意一個(gè)叫ROOT的資源,這正是訪問官網(wǎng)URL時(shí)對(duì)應(yīng)的應(yīng)用項(xiàng)目,我們自己的應(yīng)用只要代替資源應(yīng)用即可,具體操作是刪除上面原有所有資源目錄,把要部署的應(yīng)用改名為ROOT,重新訪問官網(wǎng)URL即可轉(zhuǎn)跳到我們所部署的應(yīng)用項(xiàng)目。
1.2 多節(jié)點(diǎn)部署
在很多的場景中需要在同一臺(tái)機(jī)器中開啟多個(gè)Tomcat節(jié)點(diǎn),如:單節(jié)點(diǎn)中間件無法滿足并發(fā)訪問的需要,因?yàn)槊總€(gè)節(jié)點(diǎn)所支持的并發(fā)數(shù)量有極限點(diǎn),因而需要同時(shí)開啟多個(gè)中間件節(jié)點(diǎn)。如果直接在同一臺(tái)機(jī)器中同時(shí)開啟,毫無疑問是無法啟動(dòng)的,這是因?yàn)殚_啟第一個(gè)中間件節(jié)點(diǎn)后,相關(guān)端口已經(jīng)被使用,后繼要開啟的時(shí)候已經(jīng)無法重新取得相關(guān)端口的使用權(quán),此時(shí)只能修改相關(guān)業(yè)務(wù)端口才能繼續(xù)開啟新的節(jié)點(diǎn)。需要在中間件要目下找到conf目錄,并進(jìn)入后并找到server.xml文件,此文件為中間件端口配置文件,在其中找到如下幾個(gè)端口:
把以上的3個(gè)端口值修改為其他數(shù)值,再重新開啟,可以看到新節(jié)點(diǎn)可以正常開啟,開啟后訪問該節(jié)點(diǎn)時(shí)應(yīng)用使用新的訪問端口。
1.3 遠(yuǎn)程部署
大家都清楚webapps路徑是Tomcat的應(yīng)用部署目錄,我們需要部署應(yīng)用的時(shí)候只需要把要部署應(yīng)用打好的war包或整個(gè)資源目錄放在該路徑即可,這是最簡單、最初級(jí)的部署方式,如果程序員在編碼過程中需要做單元測試可以按這種方式部署應(yīng)用,但在實(shí)際的運(yùn)維過程中,幾乎不會(huì)使用這樣的方式去部署項(xiàng)目應(yīng)用,因?yàn)檫@種部署方式對(duì)同一臺(tái)服務(wù)上的其他應(yīng)用程序存在嚴(yán)重的安全問題。在中間件的實(shí)際運(yùn)維實(shí)施過程中,一般使用主頁遠(yuǎn)程部署的方式才更加科學(xué)、合理。
在中間件根目錄的conf路徑下找到tomcat-users.xml,此為Tomcat中間件的用戶配置文件,在里面配置好一個(gè)可訪問用戶賬號(hào),配置方式如下:
配置好以上配置后重新啟動(dòng),訪問中間件主頁并進(jìn)入部署應(yīng)用管理頁面,可以看到很多已經(jīng)部署到服務(wù)器上的項(xiàng)目,在此頁面可以管理相關(guān)的應(yīng)用(啟動(dòng)、停止、反部署、是否熱部署、設(shè)定會(huì)話生存時(shí)間),找到“WAR file to deploy”欄,上傳已經(jīng)打好的war文件,即可實(shí)現(xiàn)遠(yuǎn)程部署應(yīng)用項(xiàng)目。
用此種方式部署應(yīng)用項(xiàng)目,可實(shí)現(xiàn)不需要登錄機(jī)房服務(wù)器的狀態(tài)把應(yīng)用部署到遠(yuǎn)程的服務(wù)器上,能夠極大地減少服務(wù)器上其他應(yīng)用程序被管理人員以外的其他人員人為破壞的風(fēng)險(xiǎn),進(jìn)一步提升服務(wù)器運(yùn)維的安全性。
1.4 中間件外部署
webapps路徑作為應(yīng)用項(xiàng)目的部署目錄是一種比較理想狀態(tài)下的通用做法,在實(shí)際服務(wù)器運(yùn)維過程中可能要考慮很多的情況,因此我們更傾向于另一種更成熟的做法,就是把應(yīng)用程序的代碼部署在中間件安裝目錄以外的地方。考慮這樣的一個(gè)場景:當(dāng)同一套應(yīng)用程序需要部署不同的多個(gè)節(jié)點(diǎn)上,以提高應(yīng)用程序的并發(fā)處理能力,如果有n個(gè)節(jié)點(diǎn),按傳統(tǒng)的方式則需要n個(gè)中間件節(jié)點(diǎn)webapps路徑下各部署一套完全一樣的代碼,當(dāng)有一天需要升級(jí)應(yīng)用程序的版本包時(shí),則需要把n個(gè)節(jié)點(diǎn)下的代碼都必須完全更新,不能有任何的遺漏,否則會(huì)出現(xiàn)版本不一致的問題,按這種傳統(tǒng)的方式部署項(xiàng)目就會(huì)給日后服務(wù)器的運(yùn)營管理帶來極大的不便,增加了運(yùn)維風(fēng)險(xiǎn),如果能夠把全部節(jié)點(diǎn)的運(yùn)維的應(yīng)用指向同一套資源代碼,那問題就迎刃而解,日后程序版本升級(jí)就只需要管理這一套大家共同的代碼就可以了,極大地提高服務(wù)器運(yùn)營的效率。
在中間件的安裝根目錄下創(chuàng)建路徑:conf/Catalina/localhost,并在該路徑下創(chuàng)建xml文件,以所部署應(yīng)用程序的URI命名該文件,并按如下的方式配置相關(guān)部署參數(shù):
各參數(shù)的意義如下:path為應(yīng)用訪問路徑,即URI;docBase為部署web應(yīng)用的源碼根目錄;workDir為應(yīng)用程序運(yùn)行時(shí)Jsp文件翻譯生成Java文件后的存儲(chǔ)路徑;reloadable為應(yīng)用項(xiàng)目是否支持熱部署;true表支持,false表示不支持。配置好上面的各項(xiàng)參數(shù)后就可以把源碼部署在中間件安裝目錄以外的地方。
1.5 內(nèi)存調(diào)優(yōu)
中間件內(nèi)存調(diào)優(yōu)是一項(xiàng)相對(duì)深層次且相對(duì)復(fù)雜的應(yīng)用,但經(jīng)常會(huì)在中間件運(yùn)營過程中使用,Tomcat默認(rèn)情況下只能從操作系統(tǒng)中分配到64M的內(nèi)存空間,相對(duì)較少,很多情況下會(huì)不足以支持應(yīng)用程序的運(yùn)行,因而需要優(yōu)化其內(nèi)在配置。
在內(nèi)存配置優(yōu)化前,需要首先認(rèn)識(shí)3個(gè)概念:(1)MaxMemory,是JVM能夠從操作系統(tǒng)中得到的最大內(nèi)存數(shù)。(2)TotalMemory,是JVM已經(jīng)從操作系統(tǒng)得到的內(nèi)存數(shù)。(3)FreeMemory,是JVM已經(jīng)從操盤系統(tǒng)獲得而又暫時(shí)還沒有用上的內(nèi)存數(shù)。
在中間件根目錄的bin路徑下找到startup.bat、startup.sh文件,在兩個(gè)文件的開頭添加如下一條語句:
set JAVA_OPTS=-Xms512m -Xmx1024m-Xms表示能夠從操作系統(tǒng)得到的內(nèi)存數(shù)的初始值(512M);-Xmx表示能夠從操作系統(tǒng)得到的內(nèi)存數(shù)的最大值(1024M)。修改好上面的配置后,在Windown系統(tǒng)中通過startup.bat文件啟動(dòng)Tomcat在Linux系統(tǒng)中通過startup.sh啟動(dòng)Tomcat(通過其他方式啟動(dòng),內(nèi)在配置將失效),則可在Tomcat的主頁上看他到其內(nèi)存就不再是默認(rèn)的64M了,而變成修改后的數(shù)值。
2? 結(jié)語
在Java語言開源領(lǐng)域,中間件Tomcat的地位不言而喻,在編程領(lǐng)域中有眾多的高級(jí)應(yīng)用,作為一個(gè)程序員要重點(diǎn)掌握一些企業(yè)級(jí)的應(yīng)用,隨著時(shí)間的提升還應(yīng)掌握核心的應(yīng)用技術(shù)。隨著Tomcat高版本的發(fā)布,功能會(huì)更加強(qiáng)大與完善,目前市場上Tomcat7單節(jié)點(diǎn)可支持到500左右并發(fā)數(shù),已經(jīng)可以滿足企業(yè)編程市場中70%以上的需求,隨著技術(shù)的成熟,待Tomcat8、Tomcat9經(jīng)過市場實(shí)踐檢驗(yàn)后,能夠達(dá)到更高的水平。
參考文獻(xiàn)
[1] 劉沖,張海玥,張衛(wèi)東,等.配置Tomcat使Apache服務(wù)器支持Java動(dòng)態(tài)網(wǎng)頁編程[J].計(jì)算機(jī)應(yīng)用,2001(S1):109-110.
[2] 孫仁鵬,何淼.Tomcat性能監(jiān)視和調(diào)優(yōu)研究[J].軟件導(dǎo)刊,2012(12):26-28.
[3] 李萍.淺談TOMCAT之性能優(yōu)化[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2011(12):114-116.
[4] 怯肇乾.Tomcat應(yīng)用服務(wù)器高并發(fā)優(yōu)化處理[J].電腦編程技巧與維護(hù),2018(2):129-136.
[5] 朱興亮,李建章.Tomcat安全域的配置及應(yīng)用[J].中國科技信息,2006(23):127-129.
[6] 余煬,曲毅,孫亦樂.基于Apache Tomcat的一站式Java應(yīng)用服務(wù)器解決方案[J].中國金融電腦,2018(1):59-63.
[7] 吳文剛.中間件Tomcat在等保三級(jí)系統(tǒng)中的安全加固[J].山西能源學(xué)院學(xué)報(bào),2017(4):212-214.
[8] 陳玲.基于nginx、tomcat、redis的高性能Java Web開源架構(gòu)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014(22):296,298.