您好,登錄后才能下訂單哦!
【正文】netty源碼? 死磕3:?
傳說中神一樣的Reactor反應器模式
1. 為什么是Reactor模式
2. Reactor模式簡介
3. 多線程IO的致命缺陷
4. 單線程Reactor模型
4.1. 什么是單線程Reactor呢?
4.2. 單線程Reactor的參考代碼
4.3. 單線程模式的缺點:
5. 多線程的Reactor
5.1. 基于線程池的改進
5.2. 改進后的完整示意圖
5.3. 多線程Reactor的參考代碼
6. Reactor持續(xù)改進
7. Reactor編程的優(yōu)點和缺點
7.1. 優(yōu)點
7.2. 缺點
寫多了代碼的兄弟們都知道,JAVA代碼由于到處面向接口及高度抽象,用到繼承多態(tài)和設計模式,程序的組織不是按照正常的理解順序來的,對代碼跟蹤很是個問題。所以,在閱讀別人的源碼時,如果不了解代碼的組織方式,往往是暈頭轉(zhuǎn)向,不知在何處。尤其是閱讀經(jīng)典代碼的時候,更是如此。
反過來,如果先了解代碼的設計模式,再來去代碼,就會閱讀的很輕松,不會那么難懂。
像netty這樣的精品中的極品,肯定也是需要先從設計模式入手的。netty的整體架構,基于了一個著名的模式——Reactor模式。Reactor模式,是高性能網(wǎng)絡編程的必知必會模式。
首先熟悉Reactor模式,一定是磨刀不誤砍柴工。
Netty是典型的Reactor模型結(jié)構,關于Reactor的詳盡闡釋,本文站在巨人的肩膀上,借助 Doug Lea(就是那位讓人無限景仰的大爺)的“Scalable IO in Java”中講述的Reactor模式。
“Scalable IO in Java”的地址是:http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
Reactor模式也叫反應器模式,大多數(shù)IO相關組件如Netty、Redis在使用的IO模式,為什么需要這種模式,它是如何設計來解決高性能并發(fā)的呢?
最最原始的網(wǎng)絡編程思路就是服務器用一個while循環(huán),不斷監(jiān)聽端口是否有新的套接字連接,如果有,那么就調(diào)用一個處理函數(shù)處理,類似:
while(true){ socket = accept(); handle(socket) }
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。