溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Netty的線程模型

發布時間:2020-08-02 15:14:48 來源:網絡 閱讀:1096 作者:許大蟲 欄目:開發技術

    當我們討論Netty線程模型的時候,一般首先會想到的是經典的Reactor線程模型,盡管不同的NIO框架對于Reactor模式的實現存在差異,但本質上還是遵循了Reactor的基礎線程模型。下面淺談一下我對Reactor線程模型的認識

    1.Reactor單線程模型,是指所有的I/O操作都在同一個NIO線程上面完成。NIO線程的職責如下

作為NIO服務端,接收客戶端的TCP連接

作為NIO客戶端,向服務端發起TCP連接

讀取通信對端的請求或者應答消息

向通信對端發送消息請求或者應答消息

Netty的線程模型

    對于小容量的應用可以用單線程,但是對于高負載、大并發的應用不適用,因為性能上無法支撐

    2.Rector多線程模型與單線程模型最大的區別就是有一組NIO線程來處理I/O操作,特點如下:

有專門一個NIO線程---Acceptor線程用于監聽服務端,接收客戶端的TCP連接請求

網絡I/O操作--讀、寫等由一個NIO線程池負責,線程池可以采用標準的JDK線程池實現

一個NIO線程可以同時處理N條鏈路,但是一個鏈路只對應一個NIO線程,防止發生并發操作

Netty的線程模型

大多數情況下,用多線程模型就可以滿足性能需求,但是如果一個NIO線程負責監聽和處理大量連接也有可能會存在性能問題。

    3.主從Reactor多線程模型

Netty的線程模型

服務端用于接收客戶端連接的不在是一個單獨的NIO線程,而是一個獨立的NIO線程池。Acceptor接收到客戶端TCP連接請求并處理完成后(可能包含介入認證等),將新創建的SocketChannel注冊到I/O線程池的某個I/O線程上,由它負責SocketChannel的讀寫和編解碼工作,可以解決一個服務端監聽線程性能不足的問題,因此Netty的官方demo中,推薦使用該線程模型


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女