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.瀏覽器對伺服器發起請求
3.將ServletRequest轉交給容器處理
4.容器通過這個ServletRequest來定位Servlet,如果Servlet沒有被載入,就需要載入這個Servlet
5.執行Servlet中的方法
6.響應給連接器一個ServletResponse對象
7.連接器解析ServletResponse對象
8.將解析後的對象響應給前端。