Tomcat - Tomcat的套娃式架构设计初探
文章目錄
- Tomcat的主要功能
- Tomcat的架構初探
- Connector 組件 -Coyote
- Coyote的組成
- Container 組件 -Catalina
- Catalina 的組成
- server-service-connector/container-engine-host-context-wrapper
- 總體架構預覽
Tomcat的主要功能
核心功能: http服務器和servlet 容器
-
Http服務器功能 : Socket通信(TCP/IP)、解析HTTP報文
-
Servlet容器功能 : 實現了Servlet規范 , 有多個Servlet(自帶Servlet + 自定義Servlet),Servlet處理具體的業務
Tomcat的架構初探
剛才說了tomcat核心功能有兩個 : http服務器和Servlet 容器。 那tomcat為了實現如上兩個核心功能又是怎樣架構的呢?
為了實現上面的功能,tomcat封裝出了很多組件 ,這些組件共同組成了Tomcat的架構。
進一步分析一下
我們既然說了tomcat的兩個核心功能,HTTP和Servlet , 具體在架構中對應的部分是哪些呢?
HTTP------> Connector
Servlet --------> Container
Connector 組件 -Coyote
Connector 組件 在tomcat中,有個專門的名稱,叫 Coyote ,專門處理HTTP服務器功能
Coyote的組成
我們把Connector組件放大來看一下
-
EndPoint 組件進行Socket通信,處理TCP請求
-
Processor 組件解析HTTP報文,處理HTTP請求
這兩個組件被稱為 ProtocolHandler
HTTP請求 都是處理的Request, 而 Catalina 實現了Servlet規范,主要處理的是ServletRequest請求,所以這倆沒法直接交互,因此才有了Adapter 組件,用來轉換Request 和 ServletRequest
順便說一下 AJP,這個是早期tomcat為了繼承Apache的靜態資源服務 的時候使用的協議,(Tomcat更擅長處理動態資源)
Container 組件 -Catalina
Container 組件的主要功能是完成Servlet容器功能, 也有個專門的名稱叫 Catalina
Catalina 的組成
-
Engine&Host: Engine組件(引擎) 是Servlet容器Catalina的核心,它支持在其下定義多個虛擬主機(Host) , 虛擬主機允許Tomcat引擎在將配置在一天主機上的多個域名(比如www.artisan.com , www.art.com) 分割開來互不干擾
-
Context: 每個虛擬主機又可以支持多個web應用部署在它下邊,這就是我們常說的上下文Context對象. 上下文使用由Servlet規范中指定的Web應用程序格式表示,不論是壓縮過的war包還是未壓縮的目錄形式
-
Wrapper: 在上下文中又可以部署多個Servlet ,并且每個Servlet都會被一個包裝組件(Wrapper)所包含 (一個wrapper對應一個Servlet)
server-service-connector/container-engine-host-context-wrapper
除了Connector組件和Container組件,Tomcat其實還定義了很多組件來工作
(server-service-connector/container-engine-host-context-wrapper)
這些組件采用一層一層的設計方式(套娃式) 。 如果一個組件包含了其他組件,那么這個組件也稱之為容器。
瞅一瞅俄羅斯套娃 哈哈
總體架構預覽
說了這多,匯總如下
總結
以上是生活随笔為你收集整理的Tomcat - Tomcat的套娃式架构设计初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java - 死锁 Dead Lock
- 下一篇: Tomcat - Tomcat套娃式架构