在生活中,很多人都不知道tomcat虛擬主機(jī)(tomcat虛擬主機(jī)有什么用)是什么意思,其實(shí)他的意思是非常簡(jiǎn)單的,下面就是小編搜索到的tomcat虛擬主機(jī)(tomcat虛擬主機(jī)有什么用)相關(guān)的一些知識(shí),我們一起來(lái)學(xué)習(xí)下吧!
tomcat虛擬主機(jī)(tomcat虛擬主機(jī)有什么用)
(相關(guān)資料圖)
Tomcat組件
Server和ServiceTomcat中Server是最頂級(jí)的組件,它代表Tomcat的運(yùn)行實(shí)例,一個(gè)JVM中只會(huì)包含一個(gè)Server。為了方便擴(kuò)展,Server中引入了監(jiān)聽(tīng)器Listener組件;為了方便集成JNDI,引入了GlobalNamingResources組件。Server中最重要的組件還是Service。
一個(gè)Server包括多個(gè)Service
在Tomcat中,Service組件是服務(wù)的抽象,一個(gè)Server中可以包含多個(gè)Service。Service組件負(fù)責(zé)從接收客戶(hù)端請(qǐng)求到處理請(qǐng)求的整個(gè)過(guò)程,內(nèi)部包含了若干接收客戶(hù)端消息的 Connector 組件和一個(gè)處理請(qǐng)求的 Engine 組件。
此外,Service組件還包含了Executor組件,每一個(gè)Executor都是一個(gè)線程池,它可以為Service內(nèi)其他組件提供執(zhí)行任務(wù)的線程資源。
ConnectorTomcat的核心可以認(rèn)為主要由連接器(Connector)組件和容器(Container)組件組成,其中Connector負(fù)責(zé)處理客戶(hù)端連接,而Container則負(fù)責(zé)對(duì)請(qǐng)求進(jìn)行邏輯處理,并把結(jié)果返回給客戶(hù)端。
不同Connect對(duì)應(yīng)不同的通信協(xié)議
Connector主要的職責(zé)就是接收客戶(hù)端連接并接收消息報(bào)文,消息報(bào)文經(jīng)由它解析后送往容器中處理。因?yàn)門(mén)omcat支持不同的通信協(xié)議,例如HTTP協(xié)議、AJP(Apache JServ Protocol)協(xié)議等,所以需要不同的Connector組件,每種協(xié)議對(duì)應(yīng)一個(gè)Connector組件。
另外不同類(lèi)型的網(wǎng)絡(luò)I/O,Connector組件的內(nèi)部實(shí)現(xiàn)也不相同,可分為阻塞I/O和非阻塞I/O。以HTTP協(xié)議為例,看看阻塞I/O和非阻塞I/O的Connector內(nèi)部實(shí)現(xiàn)有何不同。
BIO Connector
BIO Connector組件
阻塞I/O的Connector主要由三個(gè)組件組成:
Http11Protocol組件,是HTTP協(xié)議1.1版本的抽象,主要包含JIoEndpoint組件和Http11Processor組件。Tomcat啟動(dòng)時(shí),JIoEndpoint內(nèi)部的Acceptor開(kāi)始監(jiān)聽(tīng)某個(gè)端口,一個(gè)請(qǐng)求到來(lái)后將被扔進(jìn)線程池Executor,由線程池進(jìn)行任務(wù)處理。處理過(guò)程主要是通過(guò)Http11Processor組件對(duì)HTTP協(xié)議解析并傳遞到Engine容器。
Mapper組件,負(fù)責(zé)對(duì)客戶(hù)端請(qǐng)求進(jìn)行路由,即通過(guò)請(qǐng)求地址找到對(duì)應(yīng)的Servlet。
CoyoteAdaptor組件,將Connector和Container適配起來(lái)的適配器。
NIO Connector
非阻塞I/O的Connector的結(jié)構(gòu)類(lèi)似BIO Connector,主要區(qū)別在于:
Http11Protocol組件改成Http11NioProtocol組件;JIoEndpoint組件改成NioEndpoint;Http11Processor組件改成Http11NioProcessor組件,功能基本類(lèi)似。
增加了一個(gè)Poller組件,負(fù)責(zé)輪詢(xún)多個(gè)客戶(hù)端連接,不斷檢測(cè)各個(gè)連接是否有可讀數(shù)據(jù),如果有客戶(hù)端可讀,則嘗試進(jìn)行讀取并解析消息報(bào)文。
ContainerTomcat內(nèi)部有4個(gè)級(jí)別的容器,分別是Engine、Host、Context和Wrapper。Engine代表全局Servlet引擎,每個(gè)Service組件只能包含一個(gè)Engine容器組件,但Engine組件可以包含若干Host 容器組件。
Tomcat容器
Engine
除了Host以外,Engine容器還包括了Engine容器級(jí)別的Listener組件(監(jiān)聽(tīng)器)、AccessLog組件(日志)、Cluster組件(集群功能)、Pipeline組件(請(qǐng)求處理管道)、Realm組件(用戶(hù)權(quán)限)。
Host
Host組件代表虛擬主機(jī)的抽象,一個(gè)虛擬主機(jī)中可以存放若干Web應(yīng)用的抽象,即一個(gè)Host可以包含多個(gè)Context容器。
和Engine類(lèi)似,Host容器中也包含了Listener、AccessLog、Cluster、Pipeline、Realm這些組件,不過(guò)這些組件都是Host容器級(jí)別的。
Context
Context組件是Web應(yīng)用的抽象,我們開(kāi)發(fā)的Web應(yīng)用部署到Tomcat后運(yùn)行時(shí)就會(huì)生成一個(gè)Context對(duì)象。
Context包含了應(yīng)用級(jí)別的Listener、AccessLog、Pipeline、Realm組件,還包括了Loader組件(加載web應(yīng)用資源)、Manager組件(會(huì)話(huà)管理)、NamingResource住院(命名資源)、Mapper組件(Servlet映射器)和Wrapper容器。
Wrapper
Wrapper容器是Tomcat中4個(gè)級(jí)別的容器中最小的,與之相對(duì)應(yīng)的是Servlet,一個(gè)Wrapper對(duì)應(yīng)一個(gè)Servlet。
Wrapper中包含的組件有Servlet、ServletPool(Servlet對(duì)象池)和Pipeline組件(處理管道)。
Tomcat的請(qǐng)求處理過(guò)程一個(gè)客戶(hù)端請(qǐng)求到達(dá)Tomcat之后的處理流程如上圖所示:
當(dāng)Tomcat啟動(dòng)后,Connector的接收器Acceptor會(huì)監(jiān)聽(tīng)是否有客戶(hù)端連接。
一旦監(jiān)聽(tīng)到客戶(hù)端連接,則將連接交給線程池Executor,開(kāi)始執(zhí)行請(qǐng)求響應(yīng)任務(wù)。
Http11Processor負(fù)責(zé)從客戶(hù)端連接中讀取Http報(bào)文并進(jìn)行解析,解析后的報(bào)文封裝成Request對(duì)象。
Maper根據(jù)Http協(xié)議請(qǐng)求的URL值和Host屬性匹配由哪個(gè)Host、哪個(gè)Context和哪個(gè)Wrapper容器來(lái)處理請(qǐng)求。
CoyoteAdaptor負(fù)責(zé)將Connector組件和Engine容器連接起來(lái),將Request對(duì)象和Response對(duì)象傳遞到Engine容器中。
Engine容器的請(qǐng)求處理管道開(kāi)始工作,管道里包括若干Valve,每個(gè)Valve都負(fù)責(zé)一些處理邏輯。
Engine容器的請(qǐng)求處理管道工作完成后,再依次交給Host容器的處理管道、Context容器的處理管道和Wrapper容器的處理管道。最后將結(jié)果輸出到客戶(hù)端。
參考資料:《Tomcat內(nèi)核設(shè)計(jì)剖析》
我會(huì)持續(xù)更新關(guān)于物聯(lián)網(wǎng)、云原生、數(shù)字化技術(shù)方面的文章,用簡(jiǎn)單的語(yǔ)言描述復(fù)雜的技術(shù),也會(huì)偶爾發(fā)表一下對(duì)IT產(chǎn)業(yè)的看法,請(qǐng)大家多多關(guān)注,歡迎留言和轉(zhuǎn)發(fā),希望與大家互動(dòng)交流,謝謝。
關(guān)鍵詞: tomcat虛擬主機(jī) tomcat虛擬主機(jī)有什么用
凡注有"環(huán)球傳媒網(wǎng)"或電頭為"環(huán)球傳媒網(wǎng)"的稿件,均為環(huán)球傳媒網(wǎng)獨(dú)家版權(quán)所有,未經(jīng)許可不得轉(zhuǎn)載或鏡像;授權(quán)轉(zhuǎn)載必須注明來(lái)源為"環(huán)球傳媒網(wǎng)",并保留"環(huán)球傳媒網(wǎng)"的電頭。
- 西海子公園門(mén)票? 西海子公園停車(chē)攻略?
- 油價(jià)調(diào)整最新消息 油價(jià)什么時(shí)候能降下來(lái)?
- 車(chē)聯(lián)網(wǎng)概念股龍頭 車(chē)聯(lián)網(wǎng)概念股龍頭之一是誰(shuí)
- 土豪金Arc A750顯卡上市 首款桌面卡Arc A首發(fā)就是大陸?yīng)氂?/a>
- NVIDIA很現(xiàn)實(shí):RTX 4080下周開(kāi)賣(mài) 首發(fā)備貨少!
- RTX 4080 16GB真實(shí)性能跑分揭曉:對(duì)比4090/3090 Ti!
- 6.2寸小屏+直角邊 小米13高清渲染圖首曝!
- 聯(lián)發(fā)科天璣9200明天見(jiàn):安卓最強(qiáng)處理器穩(wěn)了
- 抖音新專(zhuān)利可任意視角看全景視頻 沉浸式刷視頻來(lái)了!
- 高通自研架構(gòu)的PC處理器來(lái)了:砸了100億
資訊
- 環(huán)球熱點(diǎn)!tomcat虛擬主機(jī)有什么用?Tomcat的請(qǐng)求處理過(guò)程是怎樣的?
- 六爻算卦為何要用銅錢(qián)起卦?原理是什么?
- 當(dāng)前快播:28寸等于多少厘米?寸和厘米之間怎么換算?
- socket()套接字有哪些?為什么網(wǎng)頁(yè)打開(kāi)很慢?-全球觀點(diǎn)
- 世界今熱點(diǎn):渡海是什么意思?黃君璧資料簡(jiǎn)介?
- 天天要聞:白靜老公是誰(shuí)?白靜資料簡(jiǎn)介?
- 服裝利潤(rùn)一般是多少?開(kāi)一個(gè)服裝店需要多少成本?
- 寶島眼鏡怎么樣?眼鏡店運(yùn)營(yíng)模式是怎樣的?
- 王寶強(qiáng)演的喜劇電影有哪些?推薦幾部王寶強(qiáng)主演的電影?|焦點(diǎn)報(bào)道
- 世界消息!云南麗江木府有哪些特色?云南麗江木府簡(jiǎn)介?
焦點(diǎn)
- 首次超過(guò)美國(guó) 全球最佳大學(xué)排行榜:338所中國(guó)大學(xué)上榜
- Meta市值縮水至2017年水平 扎克伯格身價(jià)排名跌出全球前十
- “雙11”成立自營(yíng)物流公司 菜鳥(niǎo)回應(yīng):消息不實(shí)
- 瑞信(CS.US)CEO發(fā)表備忘錄 試圖讓市場(chǎng)相信其財(cái)務(wù)穩(wěn)定性
- 財(cái)務(wù)大臣重申捍衛(wèi)日元立場(chǎng) 日本央行9月政策會(huì)議摘要提及政策轉(zhuǎn)向
- 英國(guó)迎來(lái)黃金搶購(gòu)潮 新政府“迷你預(yù)算”刮起恐慌風(fēng)暴
- 高盛:美國(guó)家庭和外國(guó)投資者將分別凈拋售1000億美元股票
- 違約概率飆升至至少10年來(lái)最高水平 百年銀行巨頭瑞信被傳“爆雷”!
- 美聯(lián)儲(chǔ)在加息速度問(wèn)題上已現(xiàn)分歧 市場(chǎng)Q4能否扭轉(zhuǎn)頹勢(shì)?
- 進(jìn)一步加碼全球黃油市場(chǎng) 威士蘭乳業(yè)收購(gòu)新西蘭乳企Canary Foods