摘要:默認(rèn)情況下,不同的組件會(huì)自己創(chuàng)建線程池來使用。目前支持兩種,支持協(xié)議與協(xié)議的,組件的不同體現(xiàn)在其協(xié)議及模式的不同。組件維護(hù)會(huì)話的生成更新銷毀。是中最小級(jí)別的容器。超過會(huì)阻塞等待,直到有可用對(duì)象為止。
Tomcat整體結(jié)構(gòu)及組件如下圖所示
Server
a.提供監(jiān)聽機(jī)制,用于在Tomcat整個(gè)生命周期中對(duì)不同事件進(jìn)行處理。
b.提供Tomcat容器全局的命名資源實(shí)現(xiàn)
Tomcat的運(yùn)行實(shí)例的抽象,包含若干個(gè)Listener組件、GlobalNamingResource組件及若干個(gè)Service組件。
Service
Service組件由若干個(gè)Connector組件和Executor組件組合而成。
Connector組件負(fù)責(zé)監(jiān)聽某端口的客戶端請(qǐng)求,不同端口對(duì)應(yīng)不同的Connector。
Executor組件在Service抽象層提供了線程池,讓Service下的組件可以共用線程池。
默認(rèn)情況下,不同的Connector組件會(huì)自己創(chuàng)建線程池來使用。其他組件也可以共享Service線程池。
Connector
Connector是Tomcat最核心的兩個(gè)組件之一,主要負(fù)責(zé)接收客戶端連接和客戶端請(qǐng)求的處理加工。
每個(gè)Connector都指定一個(gè)端口進(jìn)行監(jiān)聽,分別對(duì)請(qǐng)求報(bào)文解析和對(duì)響應(yīng)報(bào)文組裝,解析生成Request對(duì)象,組裝生成Response對(duì)象,可以有多個(gè)Connector。
Protocol組件:是協(xié)議的抽象,將不同的協(xié)議進(jìn)行了封裝,如:HTTP協(xié)議和AJP協(xié)議。
EndPoint組件:是接收端的抽象,BIO模式有JioEndpoint,NIO模式有NioEndpoint和本地I/O模式的AprEndpoint。
Acceptor組件:用于接收客戶端連接的接收器。
Executor組件:Connector自己的私有線程池。
Processor組件:處理客戶端請(qǐng)求的處理器,不同的協(xié)議和不同的I/O模式有不同的處理方式。
Mapper組件:路由器,對(duì)客戶端請(qǐng)求URL的映射,通過它可以將不同的請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的Host組件、Context組件、Wrapper組件進(jìn)行處理并響應(yīng)給客戶端。即將請(qǐng)求發(fā)送到某虛擬主機(jī)上的某個(gè)web應(yīng)用的某個(gè)servlet。
CoyoteAdapter組件:適配器,將Connector組件和Engine容器適配連接起來。把接收到的客戶端的請(qǐng)求報(bào)文解析成請(qǐng)求對(duì)象和響應(yīng)對(duì)象傳遞到Engine容器,交由容器處理。
目前Tomcat支持兩種Connector,支持HTTP協(xié)議與AJP協(xié)議的Connector,Connector組件的不同體現(xiàn)在其協(xié)議及I/O模式的不同。HTTP Connector所支持的協(xié)議版本為HTTP/1.1和HTTP/1.0。每個(gè)Connector實(shí)例對(duì)應(yīng)一個(gè)端口,在同一個(gè)Service中可以設(shè)置若干個(gè)Connector實(shí)例,端口必須不同,協(xié)議可以相同。如Http11Protocol(BIO模式)、Http11NioProtocol(NIO模式)。
Engine
全局引擎容器,標(biāo)準(zhǔn)實(shí)現(xiàn)是StandardEngine。
Host組件:是Engine容器的子容器,表示一個(gè)虛擬主機(jī),不同的域名被抽象成一個(gè)Host。
AccessLog組件:負(fù)責(zé)記錄客戶端請(qǐng)求訪問日志,Engine容器是一個(gè)全局的Servlet容器,記錄的日志為所有客戶端的請(qǐng)求,無論訪問哪個(gè)虛擬主機(jī)。
Pipeline組件:Pipeline屬于一種設(shè)計(jì)模式,將不同級(jí)別的容器串聯(lián)起來的通道,請(qǐng)求進(jìn)來的時(shí)候就可以通過管道進(jìn)行流轉(zhuǎn)處理。
Cluster組件:有Engine和Host兩個(gè)級(jí)別的集群
Realm組件:存儲(chǔ)了用戶、密碼及權(quán)限等數(shù)據(jù),主要是配合Tomcat實(shí)現(xiàn)資源認(rèn)證模塊
Host
表示虛擬主機(jī),一個(gè)Engine可以包含若干個(gè)Host容器,一個(gè)Host容器可以包含若干個(gè)Context容器。
Context
Context容器包含若干個(gè)Wrapper組件、Realm組件、AccessLog組件、Manager組件等。
Manager組件:維護(hù)會(huì)話的生成、更新、銷毀。每個(gè)Context都有自己的會(huì)話管理器。
Wrapper是Tomcat中最小級(jí)別的容器。其他組件不再贅述。
Wrapper
包含servlet和servlet對(duì)象池
servlet對(duì)象池是為了支持一個(gè)Servlet對(duì)象對(duì)應(yīng)一個(gè)線程的SingleThreadModel接口而使用的策略,Wrapper會(huì)有一個(gè)Servlet堆,負(fù)責(zé)保存若干個(gè)Servlet對(duì)象,當(dāng)需要Servlet對(duì)象時(shí)從堆中pop出一個(gè)對(duì)象,當(dāng)用完之后push回堆中。Wrapper容器中最多可以有20個(gè)某servlet類對(duì)象。超過會(huì)阻塞等待,直到有可用對(duì)象為止。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68889.html
摘要:指標(biāo)虛擬內(nèi)存已使用的大小,如果大于,表示你的機(jī)器物理內(nèi)存不足了每秒從磁盤讀入虛擬內(nèi)存的大小,如果這個(gè)值大于,表示物理內(nèi)存不夠用或者內(nèi)存泄露了,要查找耗內(nèi)存進(jìn)程解決掉。每秒虛擬內(nèi)存寫入磁盤的大小,如果這個(gè)值大于,同上,單位為。 原理剖析(第 013 篇)應(yīng)用系統(tǒng)性能調(diào)優(yōu) - 一、大致介紹 1. 本人接手的一個(gè)打車系統(tǒng),因?yàn)槌霈F(xiàn)了一次響應(yīng)十分緩慢的情況,因此才有了應(yīng)用調(diào)優(yōu)的篇章; 2、由于...
摘要:實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)推薦豆瓣評(píng)分書的質(zhì)量沒的說,推薦大家好好看一下。推薦,豆瓣評(píng)分,人評(píng)價(jià)本書介紹了在編程中條極具實(shí)用價(jià)值的經(jīng)驗(yàn)規(guī)則,這些經(jīng)驗(yàn)規(guī)則涵蓋了大多數(shù)開發(fā)人員每天所面臨的問題的解決方案。 很早就想把JavaGuide的書單更新一下了,昨晚加今天早上花了幾個(gè)時(shí)間對(duì)之前的書單進(jìn)行了分類和補(bǔ)充完善。雖是終極版,但一定還有很多不錯(cuò)的 Java 書籍我沒有添加進(jìn)去,會(huì)繼續(xù)完善下去。希望這篇...
摘要:相關(guān)推薦,豆瓣評(píng)分,人評(píng)價(jià)本書介紹了在編程中條極具實(shí)用價(jià)值的經(jīng)驗(yàn)規(guī)則,這些經(jīng)驗(yàn)規(guī)則涵蓋了大多數(shù)開發(fā)人員每天所面臨的問題的解決方案。實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)推薦豆瓣評(píng)分,書的質(zhì)量沒的說,推薦大家好好看一下。 該文已加入開源文檔:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí))。地址:https://github.com/Snailclimb... 【強(qiáng)烈推薦!非廣告!】...
閱讀 2355·2021-11-10 11:35
閱讀 1061·2021-09-26 09:55
閱讀 2486·2021-09-22 15:22
閱讀 2377·2021-09-22 15:17
閱讀 3799·2021-09-09 09:33
閱讀 1882·2019-08-30 11:22
閱讀 1044·2019-08-30 10:57
閱讀 714·2019-08-29 16:10