深度剖析應用伺服器Tomcat 架構設計

2021-06-25 23:08:51 字數 3847 閱讀 6207

大名鼎鼎的應用伺服器tomcat相信所有人都知道,今天來扒開tomcat這層神秘的面紗

首先看看tomcat的架構設計

server:指tomcat本身

從上圖看,server是最外層元素,在service中通過不同的connector來連線engine。engine中包括多個host,而host又可以配置多個context。

1.server:該元素是server.xml中最重要的元素,他代表了整個jvm,也代表了tomcat伺服器,啟動後將在埠8005出等待關閉命令,如果收到「shutdown」字串,則關閉伺服器

在server.xml**如下:…

2. service:該元素包含乙個engine元素以及乙個或多個connector元素。tomcat安裝後service預設的名稱為:catalina,此外還可以配置乙個與apache聯合的service

在server.xml**如下:…

… catalina處理所有直接從tomcat伺服器接收的web請求

apache處理所有有apache伺服器**過來的web請求

3.  connector:表示客戶端和service之間的鏈結。connector的主要功能是接受、響應使用者請求。常用的connector有http/1.1 connector和ajp connector,ajp connector主要使用ajp協議和web connector通訊,通常用於集群中。

http/1.1 connector的例項監聽在使用者配置的埠上,當應用伺服器啟動時,http/1.1 connector負責建立若干執行緒,用於處理使用者請求,建立的執行緒數目取決於使用者配置的minthreads值,預設為5,當有更多的使用者請求到來時,http/1.1 connector將會建立更多的執行緒用於處理請求,建立執行緒的最大值由maxthreads定義,預設值為20,當所有的執行緒都在忙於處理使用者請求時,新到來的請求將會放入http/1.1 connector建立的socket佇列中,佇列的長度由

acceptcount

屬性定義,當等待佇列也被占用滿了,新來的使用者請求將會收到connection refused錯誤。

3.1.http/1.1 connector: 會建立處理客戶端請求的執行緒池,下限minprocessors,上限               maxprocessors屬性中配置

3.1.1.non-ssl http connector:非安全的http聯結器,能夠執行servlet和jsp,監聽埠8080

3.1.2.ssl http connector:安全的http聯結器,採用rsa加密,監聽埠8443

3.1.3.prox http connector:**http聯結器,監聽埠8082

3.2.jk 2 connector:和其他web connector通過ajp協議通訊。可以將tomcat和apache整合,使用apache處理靜態檔案,支援均衡負載。

在server.xml**如下:

connector常用屬性 屬性

聯結器解釋

預設值必有

呼叫request.getremotehost()方法時獲取到客戶端的機器

true 是

如果connector的配置是支援非ssl的請求,當乙個ssl請求到來時,伺服器會自動的將請求重定位到redirectport。

8443 是

等待佇列的長度,預設值是10。

100

否maxthreads

用於處理使用者請求的最大執行緒數20

否port

監聽埠…

是debug

輸出日誌,數字越大,日誌越詳細0

3. engine:每個service只能有乙個engine,處理同乙個service的所有connector接收到的客戶請求。

在server.xml**如下:…

engine重要配置屬性:

jvmroute:指定名字是apache認識的唯一表示,使得在集群中他們的的session是共享的

4. host:乙個engine可以包含多個host,每個host代表乙個虛擬主機,他包含乙個或多個web應用。

在server.xml **如下

host常用屬性:

alias:指定虛擬主機別名,可以指定多個別名

**如下

www.mycompany.com

>

www.company.com

>

則可以通過localhost、www.mycompany.com、www.company.com訪問該虛擬主機下的web應用,為了使這個策略生效,所有網域名稱必須在dns伺服器等級,並指向執行catalina例項的同乙個主機

5. context:表示乙個web應用

context常用屬性:

path:指定訪問web的url入口,寫作」/myweb」,這樣的請求url為:http://localhost:8080/myweb/***

,預設為」」,既可以不需要

docbase:應用程式的路徑,可以使絕對路徑,預設「root「

6. (巢狀元件)valve:管道過濾器

a)         訪問日誌valve:accesslogvalve

**如下:

主要屬性:

directory:日誌儲存路徑

prefix:log檔案字首,如access_log.

suffix:log檔案字尾,如.txt

pattern:日誌格式

將發起請求的客戶端的ip位址和乙個或多個正規表示式進行比較,以決定或拒絕這個請求

**如下:

c)         單次登入valve:singlesignonvalve

如果希望使用者可以登入到虛擬主機中的任意乙個web應用,而且登入以後所有其他的web應用都能使用使用者的身份(即不需要重新登入),就可以使用單次登入

8.(巢狀元件)listener

用於建立乙個lifecyclelistener物件,監視所在容器的建立和銷毀。可以出現在server、engine、host、context中

**如下

9.(巢狀元件)cluster

未host配置集群服務,以提高更高的服務效能,他可以出現在host元素中、

小結1.  頂層元素

a)         server

b)         service:包含多個connector和乙個engine

2.  聯結器元素

a)         http connector:tomcat服務聯結器

b)         jk connector:與apache等外部伺服器連線的聯結器

3.  容器元素

a)         engine:包含多個host

b)         host:包含多個context

c)         context:web應用配置容器

4.  巢狀元件

a)         logger:為server、engine、host、context提供日誌功能

b)         valve:為engine、host、context提供過濾功能

c)         listener:為server、engine、host、context提供監聽功能

d)         cluster:為host提供集群功能

應用伺服器安裝

1.安裝sql server 2008 r2 native client,注意區分cpu是32位還是64位的 2.copy xe2的midas到c windows system32 低版本的midas.dll會報錯 invalid package 3.命令列執行 regsvr32 midas.dll...

阿里輕量應用伺服器搭建Tomcat

一 購買伺服器 這裡我糊里糊塗的買了輕量級應用伺服器,然後花費了大量的時間搭建了乙個tomcat,中間也是各種坑,這裡就分享一下,希望能幫助到後來人吧。這裡伺服器的系統為centos7 二 安裝jdk linux centos 7 jdk 1.7 安裝與配置 三 安裝tomcat 2 解壓 tar ...

應用伺服器負載均衡

應用伺服器負載均衡 一.負載均衡演算法 二.資料傳送到真實伺服器方式 找 算 伺服器 負載均衡演算法 1.輪訓 這個沒什麼可說,伺服器列表乙個乙個迴圈過來。3.隨即 本來就乙個均衡。4.最小請求 看伺服器那個請求數最少,應該是最均衡的方式,也可以理解能力大責任大。資料傳送到真實伺服器方式 1.htt...