真香!終於有人把Tomcat這隻貓的架構原理給講透徹了

2020-10-23 16:01:24

Toncat是全世界最著名的基於Java語言的輕量級應用伺服器,是一款完 全開源免費的Servlet容器實現。同時,它支援HTML、JS等靜態資源的處理,因此又可以作為輕量級Web伺服器使用。作為本書的開篇,本章將簡單介紹Tomcat的發展歷程以及基本的安裝使用,以便讀者對Tomcat有個初步的印象。主要包括以下幾個方面的內容。

Tomeat介紹

Tomeat總體架構

Catalina

Coyote

Jasper

Tomeat設定管理

Web伺服器整合

Tomeat叢集

Tomeat安全

Tomeat性 能調優

Tomeat附加功能

Tomeat總體架構

作為一款知名的輕量級應用伺服器,Tomcat的架 構設計(如生命週期管理、可延伸的容器元件設計、類載入方式)可以為我們的伺服器中介軟體設計,甚至是應用系統元件設計提供非常好的借鑑意義。本章概要地介紹了Tomcat的總體架構,通過本章的學習,你可以瞭解Tomcat各元件的基本概念,併為進一-步 瞭解後續章節講述的各元件打下良好的基礎。

Catalina

本章主要介紹Tomcat的Servlet容器實現一- Catalina。 對於Tomcat來說,Servlet容 器是其核心元件。所有基於JSP/Servlet的Java Web應用均需要依託Servlet容器執行並對外提供服務。通過Catalina,我們可以熟悉Tomcat的工作機制,包括它對各種應用形式.部署場景以及Servlet規範的綜合考慮。

Coyote

通過上一章的講解我們知道, Catalina是Tomcat提供的Servlet容器實現,它負責處理來自使用者端的請求並輸出響應。但是僅有Servlet容器伺服器是無法對外提供服務的,還需要由連結器接收來自使用者端的請求,並按照既定協定(如HTTP)進行解析,然後交由Servlet容器處理。可以說,Servlet容器和連結器是Tomcat最核心的兩個元件,它們是構成一-款Java應用服 務器的基礎。

本章主要介紹了Tomcat提供的連結器實現,包括其支援的協定以及IO方式。

Jasper

為了提升處理效能,應用伺服器會對JSP類和範例進行快取,並定時檢測JSP頁面的更新情況,如發生變更,將會重新編譯。由於ISP頁面採用單獨的類載入器,因此重新編譯不會導致整個應用重新載入,這也是我們可以在執行狀態更新JSP頁面的原因。

接下來我們就來了解- -下Tomcat的JSP引擎一Jasper。

Jasper簡介

JSP編譯方式

JSP編譯原理

Tomeat設定管理

在使用Tomcat的過程中,不可避免地要對它的設定進行客製化,使其符合我們的要求。這些設定可能是JVM相關的,如記憶體、系統屬性;也可能是伺服器相關的,如埠、虛擬主機、IO、也可能是Web應用相關的,如URL對映、過濾器等。這些設定會涉及多個方面,如開發約束、部署架構、效能、安全、監控管理等。因此無論專案處於開發階段還是已經執行於生產環境,無論是一名開發人員還是一名架構師,都有必要了解Toncat的各項設定,這可以使我們充分利用Tomcat的各種特性來完成相關工作。

Web伺服器整合

儘管諸如Tomcat等應用伺服器都支援HTML、JavaScript. 圖片等靜態資源的處理,可以用作Web伺服器。但是隨著系統並行量的上升以及應用部署複雜度的增加,傳統的基於Java的應用伺服器很難承擔起Web伺服器的作用。這主要是因為應用伺服器對於靜態資源的處理普遍效能相對較差,而Web伺服器則可以充分利用作業系統本地IO的優勢。同時,對於靜態資源,Web伺服器可以通過快取等各種方式來提高其存取效能。除此之外,Web服 務器普遍支援作為前置的請求排程器以支援負載均衡。所有這些都是基於Java的應用伺服器所欠缺的。

Tomcat叢集

叢集是應用伺服器不可或缺的一項重要特性。無論是高並行的網際網路應用,還是重業務的企業級應用系統,其部署架構均需要不同程度地考慮對叢集的支援。叢集不僅要求應用伺服器提供相關的管理、同步等功能,還要求應用系統具備與之相應的可伸縮性,這就對應用系統架構提出了更高的要求。

Tomcat安全

安全是系統架構中最重要的關注點之一, 通常情況下,我們所說的安全涵蓋網路安全、資料安全、作業系統安全、伺服器安全以及應用系統安全等諸多方面。

Tomea作為一款應用服務 器,儘管預設情況下可以滿足多數場景的安全需求,但是在安全要求相對較高的環境下,我們仍需要從多個方面對其進行設定。本章主要從以下幾個方面介紹Tomcat中安全相關的一.些設定及功能實現。

Tomeat效能調優

效能一直很重要,但是正如Donald Knuth所說:「過早的優化是- -切邪惡的根源」。我們可以在專案的關鍵節點(如上線前)安排相關的效能壓力測試,可以在開發中避免常見的導致效能的問題(如N+1次查詢等),但是對於如何優化系統、達到何種效能指標,我們要結合專案情況綜合考慮(如專案對並行使用者數和存取響應時間的要求以及未來業務發展的合理預估等),儘量避免過度優化。開發人員花費數個小時來調整一個不經常使用的小元件的效能,最後往往會發現真正的效能問題另有出處。

Tomeat附加功能

最後,我們將集中對Tomcat提供的幾個功能進行簡要介紹。這些功能並不複雜,但是它們卻在一些應用場景中被廣泛使用。

感謝您的閱讀,但是由於文案限制關於Tomcat架構解析以圖片形式展現給大家,對這本Tomcat架構解析感興趣的朋友們請幫忙點贊此文

書籍獲取新增VX:MXW5308 即可免費領取