讓面試官顫抖的Tomcat系統架構系列!

2021-08-28 01:17:40 字數 2412 閱讀 2899

看懂了是一說法,理解又是一說法,能侃侃而談又是一說,好長時間不忘又是一說。---今行健,以自強不息
對於web開發的我們來說,與tomcat打交道,是非常的頻繁的,tomcat就是乙個小型的伺服器,我們可以訪問。目前同類中有jetty,做的比較好,它是採用nio,效能比較好。但是啊,tomcat已經進入市場好多年了,深入人心,所以仍是主流。

我們都用它用了那麼長時間了,但是我們知道它的執行原理嗎?

首先我們思考這麼幾個問題:1.我們知道我們是通過套接字進行通訊的,就是socket,那麼你是否會產生疑問?既然我們底層是用socket通訊的,那麼我們的那些request請求和應答的response和socket什麼關係吶,肯定有一定的轉化機制啊。到底是什麼吶?
我們這裡上一張圖

關於這張圖的描述:

server:

1.server這個是這裡所有元素的父節點,其功能是掌管tomcat的生命週期,它下邊的所有節點的生死大權全由它來掌管。

service:

2.乙個server可以包含多個service,但是至少有乙個,service是具體來提供服務的。

下邊請出tomcat最核心的部分,這兩部分相當於計算機的cpu,其重要性不言而喻,connector和container。

connector:

可以有多個,功能是處理socket與request和response的轉化的,就是socket攜帶資訊來時,把它封裝成request請求。處理完請求時把response轉化為socket。

container:

只能有乙個,真正處理request請求的地方,用於封裝和管理servlet。

這裡說一下,connector會把請求(request)**給container,container處理完請求再把response給connector。

注意一點是:connector像乙個中轉站,只是對請求和響應封裝一下但是它要支援的協議有tcp/ip,http協議,真正處理的地方是container。

這個圖是tomcat8,我把注釋去掉了,這裡的engine就是相當於那個container容器。

這個圖更加直觀一些。好了以上介紹的就是那個大的方面。

總結一下就是

(1)tomcat中只有乙個server,乙個server可以有多個service,乙個service可以有多個connector和乙個container;

(2) server掌管著整個tomcat的生死大權;

(4)service 是對外提供服務的;

(5)connector用於接受請求並將請求封裝成request和response來具體處理;

(6)container用於封裝和管理servlet,以及具體處理request請求;

但是你或許會有疑問,connector和container既然那麼重要,他們是否可以再分吶,很好,是可以再分的。

connector:你或許會提出疑問:

那麼上圖吧,

connector包含protocolhandler

protocolhandler包含三個部分:endpoint 和 processor 和 adapetr

作用:

endpoint :用於處理處理socket和request或者response轉化

endpoint:又可以分成三部分 acceptor 和 handler 和 asynctimout

其中handler 是處理socket和request或者response轉化的內部呼叫processor。

acceptor是用於監聽請求的

asynctimout用於檢查非同步request是否超時的

adapetr:用於將請求交給container的

pipeline的處理流程圖如下:

讓面試官顫抖的 HTTP 2 0 協議面試題

http協議,對於擁有豐富開發經驗的程式設計師來說簡直是信手拈來,家常便飯。雖然天天見,但是對於http協議的問題,可能很多人在沒有積極準備的情況下,不一定能很好的回答出來。今天,我們就來講講http 2.0和之前版本的區別。http協議 hypertexttransferprotocol,超文字傳...

面試你的面試官

大多數面試都是面試官從簡歷,學歷,經歷,技術,為人上對你 乙個求職者 一番拷問,以確定是否是他們想要的人。而這些對找到適合你的工作的確沒什麼用。某公司某職位需要你,而某公司某職位不一定是你想要的!如果你想找到適合你的公司 如果你想找到適合你的職位 記得面試你的面試官,沒錯!做出很重要的職業決定前,面...

面試官的總結

近期2周面試了一些人。有一些感觸。有的人工作幾年,物件導向有幾大特性 各特性之間的差別也不清楚 有的人。問他時,他說,這個簡單,僅僅是我不會,這些理論的東西在平時工作中。用的少。有的人,不清楚過載和重構的差別,然後我說你回去在看看。前幾天,看到一則笑話 一高僧問我 一根魚竿和一筐魚,你選哪個?我說 ...