一文理解Tomcat!為你的春招做好準備!

Hi丶ImViper發表於2020-12-06

Table of Contents generated with DocToc

Tomcat是什麼?

Tomcat 伺服器Apache軟體基金會專案中的一個核心專案,是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。

Tomcat 有哪幾種Connector 執行模式(優化)?

BIO:同步並阻塞

一個執行緒處理一個請求。缺點:併發量高時,執行緒數較多,浪費資源。Tomcat7或以下,在Linux系統中預設使用這種方式。

NIO:同步非阻塞IO

利用Java的非同步IO處理,可以通過少量的執行緒處理大量的請求,可以複用同一個執行緒處理多個connection(多路複用)。Tomcat8在Linux系統中預設使用這種方式。

APR:即Apache Portable Runtime

從作業系統層面解決io阻塞問題。

Tomcat有幾種部署方式?
Tomcat容器是如何建立servlet類例項?用到了什麼原理?

  1. 當容器啟動時,會讀取在webapps目錄下所有的web應用中的web.xml檔案,然後對 xml檔案進行解析,並讀取servlet註冊資訊。然後,將每個應用中註冊的servlet類都進行載入,並通過 反射的方式例項化。(有時候也是在第一次請求時例項化)
  2. 在servlet註冊時加上1如果為正數,則在一開始就例項化,如果不寫或為負數,則第一次請求例項化。

Tomcat頂層架構

Tomcat中最頂層的容器是Server,代表著整個伺服器,從上圖中可以看出,一個Server可以包含至少一個Service,即可以包含多個Service,用於具體提供服務。

Service主要包含兩個部分:Connector和Container。從上圖中可以看出 Tomcat 的心臟就是這兩個元件,他們的作用如下:

  • Connector用於處理連線相關的事情,並提供Socket與Request請求和Response響應相關的轉化;
  • Container用於封裝和管理Servlet,以及具體處理Request請求;

一個Tomcat中只有一個Server,一個Server可以包含多個Service,一個Service只有一個Container,但是可以有多個Connectors,這是因為一個服務可以有多個連線,如同時提供Http和Https連結,也可以提供向相同協議不同埠的連線

多個 Connector 和一個 Container 就形成了一個 Service,有了 Service 就可以對外提供服務了,但是 Service 還要一個生存的環境,必須要有人能夠給她生命、掌握其生死大權,那就非 Server 莫屬了!所以整個 Tomcat 的生命週期由 Server 控制。

相關文章