3dwoo大學簡體電腦書店
Netty源碼剖析與應用
( 簡體 字)
作者:劉耀林類別:1. -> 程式設計 -> 綜合
出版社:電子工業出版社Netty源碼剖析與應用 3dWoo書號: 53677
詢問書籍請說出此書號!
有庫存
NT售價: 445
出版日:11/1/2020
頁數:280
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121398537 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 Netty基礎篇 1
1.1 Netty概述 1
1.2 Netty服務端構建 2
1.3 Netty客戶端的運用 6
1.3.1 Java多線程交互 6
1.3.2 Netty客戶端與服務端短連接 12
1.3.3 Netty客戶端與服務端長連接 18
1.4 小結 22

第2章 原理部分 23
2.1 多路復用器 23
2.1.1 NIO與BIO的區別 24
2.1.2 epoll模型與select模型的區別 25
2.2 Netty線程模型 27
2.3 編碼和解碼 28
2.4 序列化 30
2.4.1 Protobuf序列化 30
2.4.2 Kryo序列化 31
2.5 零拷貝 33
2.6 背壓 34
2.6.1 TCP窗口 34
2.6.2 Flink實時計算引擎的背壓原理 36
2.7 小結 39

第3章 分布式RPC 40
3.1 Netty整合Spring 41
3.2 采用Netty實現一套RPC框架 43
3.3 分布式RPC的構建 52
3.3.1 服務注冊與發現 53
3.3.2 動態代理 68

第4章 Netty核心組件源碼剖析 81
4.1 NioEventLoopGroup源碼剖析 82
4.2 NioEventLoop源碼剖析 86
4.2.1 NioEventLoop開啟Selector 87
4.2.2 NioEventLoop的run()方法解讀 89
4.2.3 NioEventLoop 重新構建Selector和Channel的注冊 98
4.3 Channel源碼剖析 100
4.3.1 AbstractChannel源碼剖析 101
4.3.2 AbstractNioChannel源碼剖析 102
4.3.3 AbstractNioByteChannel源碼剖析 107
4.3.4 AbstractNioMessageChannel源碼剖析 112
4.3.5 NioSocketChannel源碼剖析 116
4.3.6 NioServerSocketChannel源碼剖析 119
4.4 Netty緩沖區ByteBuf源碼剖析 120
4.4.1 AbstractByteBuf源碼剖析 122
4.4.2 AbstractReferenceCountedByteBuf源碼剖析 127
4.4.3 ReferenceCountUpdater源碼剖析 129
4.4.4 CompositeByteBuf源碼剖析 134
4.4.5 PooledByteBuf源碼剖析 145
4.5 Netty內存泄漏檢測機制源碼剖析 151
4.5.1 內存泄漏檢測原理 152
4.5.2 內存泄漏器ResourceLeakDetector源碼剖析 153
4.6 小結 164

第5章 Netty讀/寫請求源碼剖析 165
5.1 ServerBootstrap啟動過程剖析 165
5.2 Netty對I/O就緒事件的處理 172
5.2.1 NioEventLoop就緒處理之OP_ACCEPT 172
5.2.2 NioEventLoop就緒處理之OP_READ(一) 175
5.2.3 NioEventLoop就緒處理之OP_READ(二) 182

第6章 Netty內存管理 195
6.1 Netty內存管理策略介紹 195
6.2 PoolChunk內存分配 197
6.2.1 PoolChunk分配大于或等于8KB的內存 197
6.2.2 PoolChunk分配小于8KB的內存 201
6.3 PoolSubpage內存分配與釋放 205
6.4 PoolArena內存管理 214
6.5 RecvByteBufAllocator內存分配計算 223
6.6 小結 227

第7章 Netty時間輪高級應用 228
7.1 Netty時間輪的解讀 229
7.1.1 時間輪源碼剖析之初始化構建 230
7.1.2 時間輪源碼剖析之Worker啟動線程 236
7.2 Netty時間輪改造方案制訂 239
7.3 時間輪高級應用之架構設計 241
7.4 時間輪高級應用之實戰10億級任務 243
7.5 小結 245

第8章 問題分析與性能調優 246
8.1 Netty服務在Linux服務器上的部署 246
8.2 Netty服務模擬秒殺壓測 255
8.3 常見生產問題分析 264
8.4 性能調優 267
8.5 小結 270
Netty涉及多線程技術、復雜數據結構與內存管理模型,它運用了各種設計模式及一些TCP的底層技術。本書對這些難點一一進行攻破,讓讀者快速掌握相關知識。本書包含大量的分布式底層架構的編寫,涉及多線程、負載均衡算法、性能調優、線上問題緊急處理等內容。本書通過非常簡易的代碼來講解Netty在企業中的實際用法,通過對實例進行調試的方式對Netty源碼進行了詳細的剖析,力圖使讀者通過實際操作快速入門,并深入了解Netty底層的各個組件。本書適合有一定Java基礎的架構師、設計師、開發工程師、測試工程師,以及對Java NIO框架、Netty感興趣的相關人士閱讀。
Netty是一款基于NIO(非阻塞I/O)開發的網絡框架,與傳統BIO相比,它的并發性能得到了很大的提高,而且更加節省資源。Netty不僅封裝了NIO操作的很多細節;在設計上還基于靈活、可擴展的事件驅動模型與高度可定制的線程模型,讓Netty的應用更加靈活。作為一個被廣泛使用的Java網絡編程框架,Netty在互聯網領域、大數據分布式計算領域、游戲行業、物聯網行業等都得到了廣泛的應用。很多流行的大數據框架的核心通信模塊也都使用的是Netty,如Elasticsearch、HBase、Flink等。
為什么編寫本書
如今,大數據已是互聯網應用的大趨勢,很多Java程序員都想轉向大數據方向,而Netty不僅是大數據框架的核心,還是Java高并發中最火的框架之一。因此,學好Netty更有利于深入了解大數據框架底層源碼。學習Netty,不僅要學會如何運用它,還要對其底層原理、底層代碼的編程技巧有深度的了解。目前,國內Netty方面的圖書較少,尤其是既有深度,又比較簡潔,并有企業級通用案例的圖書更是鳳毛麟角,這加大了很多Java程序員向大數據方向轉變的難度,本書試圖彌補這一空白。
本書主要基于Netty的穩定版本Netty v4.1.38.Final(對以后的新版本也具有普適性)編寫。本書的主要目的是幫助軟件工程師讀懂Netty v4.1.38.Final版本源碼,并能開發一款類似Dubbo的分布式RPC(Remote Procedure Call,遠程過程調用),以及Netty的特性在Flink分布式流式計算框架中的實際應用。在本書中,作者對平常在編程中遇到的重點、難點進行了分析,并給予了充分的論述。對于一名軟件工程師來說,本書可以使他們少走彎路,并更快地掌握Netty v4.1.38.Final版本源碼及編程技巧。
關于本書作者
作者從2012年到2017年一直從事Java后臺服務開發工作,在此期間曾創辦大象在線分享網,網名夜行俠老師,錄制Netty源碼剖析教學視頻,同時在多家互聯網公司擔任系統架構師,有豐富的Java工作實戰經驗。2018年轉型從事大數據研發工作,對Flink、HBase、Kafka、Elasticsearch等大數據組件進行了深入的研究。
本書主要內容
本書以實戰為導向,深入解讀Netty底層核心源碼及架構設計。通過閱讀本書,讀者可以靈活運用Netty的特性、加深多線程實戰應用、熟悉Netty的底層核心源碼。全書共包含2個高級應用項目,分別為分布式RPC與10億級任務調度和監控引擎。讀者可以在實戰過程中找到學習Netty的成就感,在學完Netty內存管理及Netty核心組件的源碼剖析后,能夠比較徹底地掌握Netty。
如何閱讀本書
在閱讀本書前,讀者應學過Java語言、網絡通信等課程,并具備并發編程的能力。本書的章節安排是依據讀者循序漸進地學習Netty的順序設立的,建議初學者從前至后閱讀。由于Netty源碼復雜難懂,建議讀者分以下幾部分閱讀本書。
·第一部分:以實戰為主,學會Netty客戶端與服務端的長連接通信,靈活運用Netty的Future機制,同時對照第3章,嘗試編寫一套完整的分布式RPC。
·第二部分:仔細、反復地閱讀Netty核心源碼解讀知識,主要包括NioEventLoop線程處理邏輯、Netty的Channel功能設計、ByteBuf緩沖區內存、內存泄漏檢測機制。熟練掌握這部分內容有利于理解框架的整體實現原理。
·第三部分:內存管理源碼解讀。這部分是Netty源碼中最難掌握的,需要有一定的耐心。先了解jemalloc內存分配思想,再從底層PoolChunk的內存分配到上層的PoolArena對內存的整體管理。在深入學習具體的分配算法時,可把部分代碼單獨拿出來進行單元測試,以加深理解。
·第四部分:Netty的高級應用、線上問題分析和性能調優。這部分主要是作者的一些實戰經驗。通過前面對Netty的運用和源碼解讀,讀者對Netty有了一定的了解,但還缺乏線上部署經驗,以及高并發大數據的實際應用經驗。這部分內容采用Netty時間輪實時監控10億級任務,運用Jmeter長連接壓測分布式RPC,讓讀者在實際項目中更加全面和自信地使用Netty。
源碼閱讀非常需要耐心,通過閱讀Netty源碼,讀者會明顯感覺到自身編程能力及源碼閱讀能力的提升,尤其是多線程編程能力。建議讀者反復閱讀至少3遍以上,直至對Netty的Channel、Handler、NioEventLoop、ByteBuf的各個方法都了如指掌。
致謝
我首先要特別感謝我的妻子譚小蘭,寫書需要大量的時間,我起初只是以視頻在線教學的方式來總結自己的經驗和收獲,并分享給部分學員,是她在背后默默地支持我,我才能全身心投入書稿的寫作中去,從而與更多想深入學習Netty的讀者分享本書。
同時感謝電子工業出版社博文視點的宋亞東先生對本書的重視和他們為本書所做的一切。
由于作者水平有限,書中難免存在不足及疏漏,敬請專家和讀者批評指正。

劉耀林
2020年11月
pagetop