Tomcat的整體架構

 

  Tomcat通過連接器和容器這兩個核心組件完成整體工作,連接器負責處理socket連接和網路位元組流與Request和Response對象的轉化;容器負責載入和管理Servlet,以及具體處理Request請求。

在學習Tomcat整體架構前需要知道,Tomcat 支援的多種 I/O 模型和應用層協議。

Tomcat 支援的多種 I/O 模型和應用層協議

 Tomcat 支援的 I/O 模型有:

  • NIO:非阻塞 I/O,採用 Java NIO 類庫實現。
  • NIO.2:非同步 I/O,採用 JDK 7 最新的 NIO.2 類庫實現。
  • APR:採用 Apache 可移植運行庫實現,是 C/C++ 編寫的本地庫。

  Tomcat 支援的應用層協議有:

  • HTTP/1.1:這是大部分 Web 應用採用的訪問協議。
  • AJP:用於和 Web 伺服器集成(如 Apache)。
  • HTTP/2:HTTP 2.0 大幅度的提升了 Web 性能。

  Tomcat 為了實現支援多種 I/O 模型和應用層協議,一個容器可能對接多個連接器。

  在一個Tomcat中由多個Service,每個Service裡面包含多個連接器和一個容器。通過在 Tomcat 中配置多個 Service,可以實現通過不同的埠號來訪問同一台機器上部署的不同應用。連接器與容器之間通過標準的 ServletRequest 和 ServletResponse 通訊。

 

 

Tomcat整體工作流程

  1.瀏覽器對伺服器發起請求

  2.連接器接收到請求並處理,將其轉化成ServletRequest

  3.將ServletRequest轉交給容器處理

  4.容器通過這個ServletRequest來定位Servlet,如果Servlet沒有被載入,就需要載入這個Servlet

  5.執行Servlet中的方法

  6.響應給連接器一個ServletResponse對象

  7.連接器解析ServletResponse對象

  8.將解析後的對象響應給前端。