從Jetty、Tomcat和Mina中提煉NIO構架網絡服務器的經典模式(二)

下面再來看看Tomcat是如何使用NIO來構架Connector這塊的。後端

先看看Tomcat Connector這塊的類圖:多線程

其中:線程

NioEndpoint負責組裝各部件隊列

Acceptor負責監聽新鏈接,並把鏈接交給Pollerio

Poller負責監聽所管轄的channel隊列,並把請求交給SocketProcessor處理select

SocketProcessor負責數據處理,並把請求傳遞給後端業務處理模塊sso

在整個服務端處理請求的過程能夠分爲三個階段,時序圖以下所示:請求

階段一:監聽並創建鏈接channel

這一階段主要是Acceptor監聽新鏈接,並輪詢取一個Poller ,把鏈接交付給Pollerim

階段二: 監聽客戶端的請求

這一過程主要是讓每一個Poller監聽所管轄的channel隊列,select到新請求後交付給SocketProcessor處理

階段三:處理請求

這一過程就是從多線程執行SocketProcessor,作數據和業務處理

因而乎咱們發現拋開具體代碼細節,Tomcat和Jetty在NIO的使用方面是很是一致的,採用的模式依然是下圖:

相關文章
相關標籤/搜索