1. 程式人生 > >一文讀懂tomcat元件--一個web伺服器的架構演化史

一文讀懂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