一文讀懂tomcat元件--一個web伺服器的架構演化史
1. tomcat是誰?
2. tomcat可以做什麼?
tomcat是一個web容器,可以將web應用部署到tomcat,由它提供web服務,一個web容器中可以部署多個web應用,這些web應用可以是同一個域名,也可以是多個域名的服務。
3. tomcat有哪些元件
4.怎麼快速理解這些元件呢?
我們可以假設我們來設計一個web容器,我們該什麼設計?
第一代:接收請求,處理請求,返回結果集中到整個web容器中,如下圖所示:
第二代 :連線管理和處理邏輯分開
使用過程中發現,每次都要開啟socket的連線,呼叫處理邏輯,然後關閉socket連線比較煩,乾脆將socket的連線關閉交給Connector來處理,請求的業務邏輯交給Container來處理好了,就變成這樣了。
第三代:支援多種網路協議
最初的目標是設計一個web伺服器或者容器,那麼如果想要支援更多的協議就需要新建不同的Connector和Container,此時就變成這樣子了,其中service包裝了Connector和Container
第四代:支援多個web應用
既然是容器,就要支援多個應用,每個應用是有一個Context,且相互隔離,支援多個Context的架構如下:
第五代:支援多域名
Context上下文不僅僅需要物理上的隔離,也需要邏輯上的隔離,如app1.example.com訪問context1,app1.test.com訪問context2.
此時的架構應該是這樣的,host可以支援多個context。
5.總結:
web伺服器的元件由server-->滿足功能
server+connector+Container-->職責分離
server+service+connector+Container-->支援多種協議
server+service+connector+Container+context-->支援多個應用
server+service+connector+Container+host+context -->支援多個域名的多個應用
其實就是一個分工元件細化的過程,類似於社會分工的細化,注意,Container在tomcat裡也稱作engine。
&n