《Netty權(quán)威指南》是全球第二本、中國(guó)第一本Netty教材,它由華為平臺(tái)中間件資深架構(gòu)設(shè)計(jì)師李林鋒撰寫(xiě),作者有6年多的NIO設(shè)計(jì)和開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn),多次受邀進(jìn)行Netty和NIO編程培訓(xùn)!禢etty權(quán)威指南》適合架構(gòu)師、設(shè)計(jì)師、軟件開(kāi)發(fā)工程師、測(cè)試人員和其他對(duì)JavaNIO框架、Java通信感興趣的相關(guān)人士閱讀,相信通過(guò)學(xué)習(xí)《Netty權(quán)威指南》,能夠熟悉和掌握Netty這一優(yōu)秀的異步通信框架,實(shí)現(xiàn)高可用分布式系統(tǒng)的構(gòu)建。書(shū)的結(jié)構(gòu)與netty in action極為類似,內(nèi)容也極為類似。先把網(wǎng)絡(luò)編程模型講一遍,舉個(gè)例子,然后開(kāi)始講netty中各個(gè)功能怎么用。
netty權(quán)威指南目錄
基礎(chǔ)篇 走進(jìn)Java NIO
第1章 Java的I/O演進(jìn)之路
1.1 I/O基礎(chǔ)入門(mén)
1.1.1 Linux網(wǎng)絡(luò)I/O模型簡(jiǎn)介
1.1.2 I/O多路復(fù)用技術(shù)
1.2 Java的I/O演進(jìn)
1.3 總結(jié)
第2章 NIO入門(mén)
2.1 傳統(tǒng)的BIO編程
2.1.1 BIO通信模型圖
2.1.2 同步阻塞式I/O創(chuàng)建的TimeServer源碼分析
2.1.3 同步阻塞式I/O創(chuàng)建的TimeClient源碼分析
2.2 偽異步I/O編程
2.2.1 偽異步I/O模型圖
2.2.2 偽異步式I/O創(chuàng)建的TimeServer源碼分析
2.2.3 偽異步I/O弊端分析
2.3 NIO編程
2.3.1 NIO類庫(kù)簡(jiǎn)介
2.3.2 NIO服務(wù)端序列圖
2.3.3 NIO創(chuàng)建的TimeServer源碼分析
2.3.4 NIO客戶端序列圖
2.3.5 NIO創(chuàng)建的TimeClient源碼分析
2.4 AIO編程
2.4.1 AIO創(chuàng)建的TimeServer源碼分析
2.4.2 AIO創(chuàng)建的TimeClient源碼分析
2.4.3 AIO版本時(shí)間服務(wù)器運(yùn)行結(jié)果
2.5 4種I/O的對(duì)比
2.5.1 概念澄清
2.5.2 不同I/O模型對(duì)比
2.6 選擇Netty的理由
2.6.1 不選擇Java原生NIO編程的原因
2.6.2 為什么選擇Netty
2.7 總結(jié)
入門(mén)篇 Netty NIO開(kāi)發(fā)指南
第3章 Netty入門(mén)應(yīng)用
3.1 Netty開(kāi)發(fā)環(huán)境的搭建
3.1.1 下載Netty的軟件包
3.1.2 搭建Netty應(yīng)用工程
3.2 Netty服務(wù)端開(kāi)發(fā)
3.3 Netty客戶端開(kāi)發(fā)
3.4 運(yùn)行和調(diào)試
3.4.1 服務(wù)端和客戶端的運(yùn)行
3.4.2 打包和部署
3.5 總結(jié)
第4章 TCP粘包/拆包問(wèn)題的解決之道
4.1 TCP粘包/拆包
4.1.1 TCP粘包/拆包問(wèn)題說(shuō)明
4.1.2 TCP粘包/拆包發(fā)生的原因
4.1.3 粘包問(wèn)題的解決策略
4.2 未考慮TCP粘包導(dǎo)致功能異常案例
4.2.1 TimeServer的改造
4.2.2 TimeClient的改造
4.2.3 運(yùn)行結(jié)果
4.3 利用LineBasedFrameDecoder解決TCP粘包問(wèn)題
4.3.1 支持TCP粘包的TimeServer
4.3.2 支持TCP粘包的TimeClient
4.3.3 運(yùn)行支持TCP粘包的時(shí)間服務(wù)器程序
4.3.4 LineBasedFrameDecoder和StringDecoder的原理分析
4.4 總結(jié)
第5章 分隔符和定長(zhǎng)解碼器的應(yīng)用
5.1 DelimiterBasedFrameDecoder應(yīng)用開(kāi)發(fā)
5.1.1 DelimiterBasedFrameDecoder服務(wù)端開(kāi)發(fā)
5.1.2 DelimiterBasedFrameDecoder客戶端開(kāi)發(fā)
5.1.3 運(yùn)行DelimiterBasedFrameDecoder服務(wù)端和客戶端
5.2 FixedLengthFrameDecoder應(yīng)用開(kāi)發(fā)
5.2.1 FixedLengthFrameDecoder服務(wù)端開(kāi)發(fā)
5.2.2 利用telnet命令行測(cè)試EchoServer服務(wù)端
5.3 總結(jié)
中級(jí)篇 Netty編解碼開(kāi)發(fā)指南
第6章 編解碼技術(shù)
6.1 Java序列化的缺點(diǎn)
6.1.1 無(wú)法跨語(yǔ)言
6.1.2 序列化后的碼流太大
6.1.3 序列化性能太低
6.2 業(yè)界主流的編解碼框架
6.2.1 Google的Protobuf介紹
6.2.2 Facebook的Thrift介紹
6.2.3 JBoss Marshalling介紹
6.3 總結(jié)
第7章 Java序列化
7.1 Netty Java序列化服務(wù)端開(kāi)發(fā)
7.2 Java序列化Netty客戶端開(kāi)發(fā)
7.3 運(yùn)行結(jié)果
7.4 總結(jié)
第8章 Google Protobuf編解碼
8.1 Protobuf的入門(mén)
8.1.1 Protobuf開(kāi)發(fā)環(huán)境搭建
8.1.2 Protobuf編解碼開(kāi)發(fā)
8.1.3 運(yùn)行Protobuf例程
8.2 Netty的Protobuf服務(wù)端開(kāi)發(fā)
8.2.1 Protobuf版本的圖書(shū)訂購(gòu)服務(wù)端開(kāi)發(fā)
8.2.2 Protobuf版本的圖書(shū)訂購(gòu)客戶端開(kāi)發(fā)
8.2.3 Protobuf版本的圖書(shū)訂購(gòu)程序功能測(cè)試
8.3 Protobuf的使用注意事項(xiàng)
8.4 總結(jié)
第9章 JBoss Marshalling編解碼
9.1 Marshalling開(kāi)發(fā)環(huán)境準(zhǔn)備
9.2 Netty的Marshalling服務(wù)端開(kāi)發(fā)
9.3 Netty的Marshalling客戶端開(kāi)發(fā)
9.4 運(yùn)行Marshalling客戶端和服務(wù)端例程
9.5 總結(jié)
高級(jí)篇 Netty多協(xié)議開(kāi)發(fā)和應(yīng)用
第10章 HTTP協(xié)議開(kāi)發(fā)應(yīng)用
10.1 HTTP協(xié)議介紹
10.1.1 HTTP協(xié)議的URL
10.1.2 HTTP請(qǐng)求消息(HttpRequest)
10.1.3 HTTP響應(yīng)消息(HttpResponse)
10.2 Netty HTTP服務(wù)端入門(mén)開(kāi)發(fā)
10.2.1 HTTP服務(wù)端例程場(chǎng)景描述
10.2.2 HTTP服務(wù)端開(kāi)發(fā)
10.2.3 Netty HTTP文件服務(wù)器例程運(yùn)行結(jié)果
10.3 Netty HTTP+XML協(xié)議棧開(kāi)發(fā)
10.3.1 開(kāi)發(fā)場(chǎng)景介紹
10.3.2 HTTP+XML協(xié)議棧設(shè)計(jì)
10.3.3 高效的XML綁定框架JiBx
10.3.4 HTTP+XML編解碼框架開(kāi)發(fā)
10.3.5 HTTP+XML協(xié)議棧測(cè)試
10.3.6 小結(jié)
10.4 總結(jié)
第11章 WebSocket協(xié)議開(kāi)發(fā)
11.1 HTTP協(xié)議的弊端
11.2 WebSocket入門(mén)
11.2.1 WebSocket背景
11.2.2 WebSocket連接建立
11.2.3 WebSocket生命周期
11.2.4 WebSocket連接關(guān)閉
11.3 Netty WebSocket協(xié)議開(kāi)發(fā)
11.3.1 WebSocket服務(wù)端功能介紹
11.3.2 WebSocket服務(wù)端開(kāi)發(fā)
11.3.3 運(yùn)行WebSocket服務(wù)端
11.4 總結(jié)
第12章 UDP協(xié)議開(kāi)發(fā)
12.1 UDP協(xié)議簡(jiǎn)介
12.2 UDP服務(wù)端開(kāi)發(fā)
12.3 UDP客戶端開(kāi)發(fā)
12.4 運(yùn)行UDP例程
12.5 總結(jié)
第13章 文件傳輸
13.1 文件的基礎(chǔ)知識(shí)
13.1.1 文件的概念
13.1.2 文件路徑
13.1.3 文件名稱
13.1.4 FileChannel簡(jiǎn)介
13.2 Netty文件傳輸開(kāi)發(fā)
13.3 運(yùn)行Netty文件傳輸服務(wù)例程
13.4 總結(jié)
第14章 私有協(xié)議棧開(kāi)發(fā)
14.1 私有協(xié)議介紹
14.2 Netty協(xié)議棧功能設(shè)計(jì)
14.2.1 網(wǎng)絡(luò)拓?fù)鋱D
14.2.2 協(xié)議棧功能描述
14.2.3 通信模型
14.2.4 消息定義
14.2.5 Netty協(xié)議支持的字段類型
14.2.6 Netty協(xié)議的編解碼規(guī)范
14.2.7 鏈路的建立
14.2.8 鏈路的關(guān)閉
14.2.9 可靠性設(shè)計(jì)
14.2.10 安全性設(shè)計(jì)
14.2.11 可擴(kuò)展性設(shè)計(jì)
14.3 Netty協(xié)議棧開(kāi)發(fā)
14.3.1 數(shù)據(jù)結(jié)構(gòu)定義
14.3.2 消息編解碼
14.3.3 握手和安全認(rèn)證
14.3.4 心跳檢測(cè)機(jī)制
14.3.5 斷連重連
14.3.6 客戶端代碼
14.3.7 服務(wù)端代碼
14.4 運(yùn)行協(xié)議棧
14.4.1 正常場(chǎng)景
14.4.2 異常場(chǎng)景:服務(wù)端宕機(jī)重啟
14.4.3 異常場(chǎng)景:客戶端宕機(jī)重啟
14.5 總結(jié)
源碼分析篇 Netty功能介紹和源碼分析
第15章 ByteBuf和相關(guān)輔助類
15.1 ByteBuf功能說(shuō)明
15.1.1 ByteBuf的工作原理
15.1.2 ByteBuf的功能介紹
15.2 ByteBuf源碼分析
15.2.1 ByteBuf的主要類繼承關(guān)系
15.2.2 AbstractByteBuf源碼分析
15.2.3 AbstractReferenceCountedByteBuf源碼分析
15.2.4 UnpooledHeapByteBuf源碼分析
15.2.5 PooledByteBuf內(nèi)存池原理分析
15.2.6 PooledDirectByteBuf源碼分析
15.3 ByteBuf相關(guān)的輔助類功能介紹
15.3.1 ByteBufHolder
15.3.2 ByteBufAllocator
15.3.3 CompositeByteBuf
15.3.4 ByteBufUtil
15.4 總結(jié)
第16章 Channel和Unsafe
16.1 Channel 功能說(shuō)明
16.1.1 Channel的工作原理
16.1.2 Channel的功能介紹
16.2 Channel源碼分析
16.2.1 Channel的主要繼承關(guān)系類圖
16.2.2 AbstractChannel源碼分析
16.2.3 AbstractNioChannel源碼分析
16.2.4 AbstractNioByteChannel源碼分析
16.2.5 AbstractNioMessageChannel源碼分析
16.2.6 AbstractNioMessageServerChannel源碼分析
16.2.7 NioServerSocketChannel源碼分析
16.2.8 NioSocketChannel源碼分析
16.3 Unsafe功能說(shuō)明
16.4 Unsafe源碼分析
16.4.1 Unsafe繼承關(guān)系類圖
16.4.2 AbstractUnsafe源碼分析
16.4.3 AbstractNioUnsafe源碼分析
16.4.4 NioByteUnsafe源碼分析
16.5 總結(jié)
第17章 ChannelPipeline和ChannelHandler
17.1 ChannelPipeline功能說(shuō)明
17.1.1 ChannelPipeline的事件處理
17.1.2 自定義攔截器
17.1.3 構(gòu)建pipeline
17.1.4 ChannelPipeline的主要特性
17.2 ChannelPipeline源碼分析
17.2.1 ChannelPipeline的類繼承關(guān)系圖
17.2.2 ChannelPipeline對(duì)ChannelHandler的管理
17.2.3 ChannelPipeline的inbound事件
17.2.4 ChannelPipeline的outbound事件
17.3 ChannelHandler功能說(shuō)明
17.3.1 ChannelHandlerAdapter功能說(shuō)明
17.3.2 ByteToMessageDecoder功能說(shuō)明
17.3.3 MessageToMessageDecoder功能說(shuō)明
17.3.4 LengthFieldBasedFrameDecoder功能說(shuō)明
17.3.5 MessageToByteEncoder功能說(shuō)明
17.3.6 MessageToMessageEncoder功能說(shuō)明
17.3.7 LengthFieldPrepender功能說(shuō)明
17.4 ChannelHandler源碼分析
17.4.1 ChannelHandler的類繼承關(guān)系圖
17.4.2 ByteToMessageDecoder源碼分析
17.4.3 MessageToMessageDecoder源碼分析
17.4.4 LengthFieldBasedFrameDecoder源碼分析
17.4.5 MessageToByteEncoder源碼分析
17.4.6 MessageToMessageEncoder源碼分析
17.4.7 LengthFieldPrepender源碼分析
17.5 總結(jié)
第18章 EventLoop和EventLoopGroup
18.1 Netty的線程模型
18.1.1 Reactor單線程模型
18.1.2 Reactor多線程模型
18.1.3 主從Reactor多線程模型
18.1.4 Netty的線程模型
18.1.5 最佳實(shí)踐
18.2 NioEventLoop源碼分析
18.2.1 NioEventLoop設(shè)計(jì)原理
18.2.2 NioEventLoop繼承關(guān)系類圖
18.2.3 NioEventLoop
18.3 總結(jié)
第19章 Future和Promise
19.1 Future功能
19.2 ChannelFuture源碼分析
19.3 Promise功能介紹
19.4 Promise源碼分析
19.4.1 Promise繼承關(guān)系圖
19.4.2 DefaultPromise
19.5 總結(jié)
架構(gòu)和行業(yè)應(yīng)用篇 Netty高級(jí)特性
第20章 Java多線程編程在Netty中的應(yīng)用
20.1 Java內(nèi)存模型與多線程編程
20.1.1 硬件的發(fā)展和多任務(wù)處理
20.1.2 Java內(nèi)存模型
20.2 Netty的并發(fā)編程實(shí)踐
20.2.1 對(duì)共享的可變數(shù)據(jù)進(jìn)行正確的同步
20.2.2 正確的使用鎖
20.2.3 volatile的正確使用
20.2.4 CAS指令和原子類
20.2.5 線程安全類的應(yīng)用
20.2.6 讀寫(xiě)鎖的應(yīng)用
20.2.7 線程安全性文檔說(shuō)明
20.2.8 不要依賴線程優(yōu)先級(jí)
20.3 總結(jié)
第21章 Netty架構(gòu)剖析
21.1 Netty邏輯架構(gòu)
21.1.1 Reactor通信調(diào)度層
21.1.2 職責(zé)鏈ChannelPipeline
21.1.3 業(yè)務(wù)邏輯編排層(Service ChannelHandler)
21.2 關(guān)鍵架構(gòu)質(zhì)量屬性
21.2.1 高性能
21.2.2 可靠性
21.2.3 可定制性
21.2.4 可擴(kuò)展性
21.3 總結(jié)
第22章 Netty行業(yè)應(yīng)用
22.1 Netty在互聯(lián)網(wǎng)行業(yè)的應(yīng)用
22.1.1 傳統(tǒng)垂直架構(gòu)面臨的問(wèn)題
22.1.2 阿里分布式服務(wù)框架Dubbo
22.1.3 Dubbo的架構(gòu)介紹
22.1.4 Netty在Dubbo中的應(yīng)用
22.1.5 Dubbo框架集成Netty源碼分析
22.2 Netty在大數(shù)據(jù)領(lǐng)域的應(yīng)用
22.3 Netty在游戲行業(yè)的應(yīng)用
22.3.1 游戲服務(wù)端架構(gòu)介紹
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版