1. 程式人生 > >自頂向下深入分析Netty(二)--執行緒模型

自頂向下深入分析Netty(二)--執行緒模型

上面這幅圖描述了netty的執行緒模型,其中mainReacotor,subReactor,Thread Pool是三個執行緒池。mainReactor負責處理客戶端的連線請求,並將accept的連線註冊到subReactor的其中一個執行緒上;subReactor負責處理客戶端通道上的資料讀寫;Thread Pool是具體的業務邏輯執行緒池,處理具體業務。

2.1 Reactor

The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronously to the associated request handlers

從wikipedia上面的解釋可以知道Reactor模式是事件驅動的,由service handler處理一個或多個併發輸入源的請求,並將這些請求同步的分發給相應的request handler

2.2 netty預設模式

在預設情況下,netty的執行緒池有下面的兩條規則:
(1).mainReactor和subReator可由使用者指定。
(2).Thread Pool業務邏輯執行緒池使用SubReactor執行緒池。
注意
(1).使用者可以將mainReactor和subReator指定為同一個執行緒池,但不建議這樣做,因為TCP連線的三次握手I/O頻繁,使用一個獨立的mainReactor執行緒池可以提升效能。
(2).如果業務邏輯中有大量耗費時間的操作,比如資料庫讀寫等,這時有必要顯示指定Thread Pool業務邏輯執行緒池,從而讓subReactor執行緒池可以及時處理其他客戶端的請求。