netty權(quán)威指南 第二版是一本Netty架構(gòu)學(xué)習(xí)指南,由李林鋒編著。本書深入剖析了Netty,更全面系統(tǒng)講解底層架構(gòu)、實踐與源碼,能夠讓讀者更清晰地理解Netty 架構(gòu)設(shè)計理念,第2版增加了MessagePack 編解碼、服務(wù)端創(chuàng)建、客戶端創(chuàng)建、高性能之道、可靠性、安全性等內(nèi)容,內(nèi)容更精彩,非常適合架構(gòu)師、設(shè)計師、軟件開發(fā)工程師、測試人員以及其他對Java NIO 框架、Netty 感興趣的相關(guān)人士閱讀。通過閱讀netty權(quán)威指南 第二版,讀者不僅能夠掌握Netty基礎(chǔ)功能的使用和開發(fā),更能夠掌握Netty核心類庫的原理和使用約束,從而在實際工作中更好地使用Netty。
內(nèi)容介紹
《netty權(quán)威指南 第二版》是異步非阻塞通信領(lǐng)域的經(jīng)典之作,基于全新版本的Netty 5.0 編寫,是國內(nèi)首本深入介紹Netty 原理和架構(gòu)的書籍,也是作者多年實戰(zhàn)經(jīng)驗的總結(jié)和濃縮。內(nèi)容不僅包含Java NIO入門知識、Netty 的基礎(chǔ)功能開發(fā)指導(dǎo)、編解碼框架定制等,還包括私有協(xié)議棧定制和開發(fā)、Netty 核心類庫源碼分析,以及Netty 的架構(gòu)剖析。
第2 版的主要變更如下,刪除第1 版中的如下章節(jié):
第7 章:Java 序列化;
第12 章:UDP 協(xié)議開發(fā);
第13 章:文件傳輸;
第22 章:Netty 行業(yè)應(yīng)用。
新增本書中的如下章節(jié):
第7 章:MessagePack 編解碼;
第13 章:服務(wù)端創(chuàng)建;
第14 章:客戶端創(chuàng)建;
第22 章:高性能之道;
第23 章:可靠性;
第24 章:安全性。
章節(jié)目錄
基礎(chǔ)篇 走進Java NIO 第1 章 Java 的I/O 演進之路......2 1.1 I/O 基礎(chǔ)入門......3 1.1.1 Linux 網(wǎng)絡(luò)I/O 模型簡介......3 1.1.2 I/O 多路復(fù)用技術(shù)......6 1.2 Java 的I/O 演進......8 1.3 總結(jié)...... 10 第2 章 NIO 入門...... 11 2.1 傳統(tǒng)的BIO 編程...... 11 2.1.1 BIO 通信模型圖...... 12 2.1.2 同步阻塞式I/O 創(chuàng)建的TimeServer 源碼分析...... 13 2.1.3 同步阻塞式I/O 創(chuàng)建的TimeClient 源碼分析...... 16 2.2 偽異步I/O 編程...... 18 2.2.1 偽異步I/O 模型圖...... 19 2.2.2 偽異步I/O 創(chuàng)建的TimeServer 源碼分析...... 19 2.2.3 偽異步I/O 弊端分析...... 21 2.3 NIO 編程...... 24 2.3.1 NIO 類庫簡介...... 24 2.3.2 NIO 服務(wù)端序列圖...... 28 2.3.3 NIO 創(chuàng)建的TimeServer 源碼分析...... 30 2.3.4 NIO 客戶端序列圖...... 36 2.3.5 NIO 創(chuàng)建的TimeClient 源碼分析...... 39 2.4 AIO 編程...... 45 2.4.1 AIO 創(chuàng)建的TimeServer 源碼分析...... 46 2.4.2 AIO 創(chuàng)建的TimeClient 源碼分析...... 51 2.4.3 AIO 版本時間服務(wù)器運行結(jié)果...... 56 2.5 4 種I/O 的對比...... 58 2.5.1 概念澄清...... 58 2.5.2 不同I/O 模型對比...... 59 2.6 選擇Netty 的理由...... 60 2.6.1 不選擇Java 原生NIO 編程的原因...... 61 2.6.2 為什么選擇Netty ...... 62 2.7 總結(jié)...... 63 入門篇 Netty NIO 開發(fā)指南 第3 章 Netty 入門應(yīng)用...... 66 3.1 Netty 開發(fā)環(huán)境的搭建...... 66 3.1.1 下載Netty 的軟件包...... 67 3.1.2 搭建Netty 應(yīng)用工程...... 67 3.2 Netty 服務(wù)端開發(fā)...... 68 3.3 Netty 客戶端開發(fā)...... 73 3.4 運行和調(diào)試...... 76 3.4.1 服務(wù)端和客戶端的運行...... 76 3.4.2 打包和部署...... 77 3.5 總結(jié)...... 77 第4 章 TCP 粘包/拆包問題的解決之道...... 79 4.1 TCP 粘包/拆包...... 79 4.1.1 TCP 粘包/拆包問題說明...... 80 4.1.2 TCP 粘包/拆包發(fā)生的原因...... 80 4.1.3 粘包問題的解決策略...... 81 4.2 未考慮TCP 粘包導(dǎo)致功能異常案例...... 82 4.2.1 TimeServer 的改造...... 82 4.2.2 TimeClient 的改造...... 83 4.2.3 運行結(jié)果...... 84 4.3 利用LineBasedFrameDecoder 解決TCP 粘包問題...... 85 4.3.1 支持TCP 粘包的TimeServer ...... 86 4.3.2 支持TCP 粘包的TimeClient...... 88 4.3.3 運行支持TCP 粘包的時間服務(wù)器程序...... 90 4.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析...... 91 4.4 總結(jié)...... 92 第5 章 分隔符和定長解碼器的應(yīng)用...... 93 5.1 DelimiterBasedFrameDecoder 應(yīng)用開發(fā)...... 94 5.1.1 DelimiterBasedFrameDecoder 服務(wù)端開發(fā)...... 94 5.1.2 DelimiterBasedFrameDecoder 客戶端開發(fā)...... 97 5.1.3 運行DelimiterBasedFrameDecoder 服務(wù)端和客戶端...... 99 5.2 FixedLengthFrameDecoder 應(yīng)用開發(fā)...... 101 5.2.1 FixedLengthFrameDecoder 服務(wù)端開發(fā)...... 101 5.2.2 利用telnet 命令行測試EchoServer 服務(wù)端...... 103 5.3 總結(jié)...... 104 中級篇 Netty 編解碼開發(fā)指南 第6 章 編解碼技術(shù)...... 106 6.1 Java 序列化的缺點...... 107 6.1.1 法跨語言...... 107 6.1.2 序列化后的碼流太大...... 107 6.1.3 序列化性能太低...... 110 6.2 業(yè)界主流的編解碼框架...... 113 6.2.1 Google 的Protobuf 介紹...... 113 6.2.2 Thrift 介紹...... 115 6.2.3 JBoss Marshalling 介紹...... 116 6.3 總結(jié)...... 117 第7 章 MessagePack 編解碼...... 118 7.1 MessagePack 介紹...... 118 7.1.1 MessagePack 多語言支持...... 119 7.1.2 MessagePack Java API 介紹...... 119 7.1.3 MessagePack 開發(fā)包下載...... 120 7.2 MessagePack 編碼器和解碼器開發(fā)...... 120 7.2.1 MessagePack 編碼器開發(fā)...... 120 7.2.2 MessagePack 解碼器開發(fā)...... 121 7.2.3 功能測試...... 121 7.3 粘包/半包支持...... 124 7.4 總結(jié)...... 127 第8 章 Google Protobuf 編解碼...... 128 8.1 Protobuf 的入門...... 129 8.1.1 Protobuf 開發(fā)環(huán)境搭建...... 129 8.1.2 Protobuf 編解碼開發(fā)...... 131 8.1.3 運行Protobuf 例程...... 133 8.2 Netty 的Protobuf 服務(wù)端開發(fā)...... 133 8.2.1 Protobuf 版本的圖書訂購服務(wù)端開發(fā)...... 134 8.2.2 Protobuf 版本的圖書訂購客戶端開發(fā)...... 136 8.2.3 Protobuf 版本的圖書訂購程序功能測試...... 139 8.3 Protobuf 的使用注意事項...... 140 8.4 總結(jié)...... 142 第9 章 JBoss Marshalling 編解碼...... 143 9.1 Marshalling 開發(fā)環(huán)境準備...... 143 9.2 Netty 的Marshalling 服務(wù)端開發(fā)...... 144 9.3 Netty 的Marshalling 客戶端開發(fā)...... 147 9.4 運行Marshalling 客戶端和服務(wù)端例程...... 149 9.5 總結(jié)...... 150 高級篇 Netty 多協(xié)議開發(fā)和應(yīng)用 第10 章 HTTP 協(xié)議開發(fā)應(yīng)用...... 154 10.1 HTTP 協(xié)議介紹...... 155 10.1.1 HTTP 協(xié)議的URL ...... 155 10.1.2 HTTP 請求消息(HttpRequest)...... 155 10.1.3 HTTP 響應(yīng)消息(HttpResponse) ...... 158 10.2 Netty HTTP 服務(wù)端入門開發(fā)...... 159 10.2.1 HTTP 服務(wù)端例程場景描述...... 160 10.2.2 HTTP 服務(wù)端開發(fā)...... 160 10.2.3 Netty HTTP 文件服務(wù)器例程運行結(jié)果...... 166 10.3 Netty HTTP+XML 協(xié)議棧開發(fā)...... 170 10.3.1 開發(fā)場景介紹...... 171 10.3.2 HTTP+XML 協(xié)議棧設(shè)計...... 174 10.3.3 高效的XML 綁定框架JiBx ...... 175 10.3.4 HTTP+XML 編解碼框架開發(fā)...... 183 10.3.5 HTTP+XML 協(xié)議棧測試...... 199 10.3.6 小結(jié)...... 201 10.4 總結(jié)...... 202 第11 章 WebSocket 協(xié)議開發(fā)...... 203 11.1 HTTP 協(xié)議的弊端...... 204 11.2 WebSocket 入門...... 204 11.2.1 WebSocket 背景...... 205 11.2.2 WebSocket 連接建立...... 206 11.2.3 WebSocket 生命周期...... 207 11.2.4 WebSocket 連接關(guān)閉...... 208 11.3 Netty WebSocket 協(xié)議開發(fā)...... 209 11.3.1 WebSocket 服務(wù)端功能介紹...... 209 11.3.2 WebSocket 服務(wù)端開發(fā)...... 210 11.3.3 運行WebSocket 服務(wù)端...... 218 11.4 總結(jié)...... 219 第12 章 私有協(xié)議棧開發(fā)...... 221 12.1 私有協(xié)議介紹...... 221 12.2 Netty 協(xié)議棧功能設(shè)計...... 223 12.2.1 網(wǎng)絡(luò)拓撲圖...... 223 12.2.2 協(xié)議棧功能描述...... 224 12.2.3 通信模型...... 224 12.2.4 消息定義...... 225 12.2.5 Netty 協(xié)議支持的字段類型...... 226 12.2.6 Netty 協(xié)議的編解碼規(guī)范...... 227 12.2.7 鏈路的建立...... 229 12.2.8 鏈路的關(guān)閉...... 230 12.2.9 可靠性設(shè)計...... 230 12.2.10 安全性設(shè)計...... 232 12.2.11 可擴展性設(shè)計...... 232 12.3 Netty 協(xié)議棧開發(fā)...... 233 12.3.1 數(shù)據(jù)結(jié)構(gòu)定義...... 233 12.3.2 消息編解碼...... 237 12.3.3 握手和安全認證...... 241 12.3.4 心跳檢測機制...... 245 12.3.5 斷連重連...... 248 12.3.6 客戶端代碼...... 249 12.3.7 服務(wù)端代碼...... 251 12.4 運行協(xié)議棧...... 252 12.4.1 正常場景...... 252 12.4.2 異常場景:服務(wù)端宕機重啟...... 253 12.4.3 異常場景:客戶端宕機重啟...... 256 12.5 總結(jié)...... 256 第13 章 服務(wù)端創(chuàng)建...... 258 13.1 原生NIO 類庫的復(fù)雜性...... 259 13.2 Netty 服務(wù)端創(chuàng)建源碼分析...... 259 13.2.1 Netty 服務(wù)端創(chuàng)建時序圖...... 260 13.2.2 Netty 服務(wù)端創(chuàng)建源碼分析...... 263 13.3 客戶端接入源碼分析...... 272 13.4 總結(jié)...... 275 第14 章 客戶端創(chuàng)建...... 276 14.1 Netty 客戶端創(chuàng)建流程分析...... 276 14.2.1 Netty 客戶端創(chuàng)建時序圖...... 276 14.2.2 Netty 客戶端創(chuàng)建流程分析...... 277 14.2 Netty 客戶端創(chuàng)建源碼分析...... 278 14.2.1 客戶端連接輔助類Bootstrap...... 278 14.2.2 客戶端連接操作...... 281 14.2.3 異步連接結(jié)果通知...... 283 14.2.4 客戶端連接超時機制...... 284 14.3 總結(jié)...... 286 源碼分析篇 Netty 功能介紹和源碼分析 第15 章 ByteBuf 和相關(guān)輔助類...... 288 15.1 ByteBuf 功能說明...... 288 15.1.1 ByteBuf 的工作原理...... 289 15.1.2 ByteBuf 的功能介紹...... 294 15.2 ByteBuf 源碼分析...... 308 15.2.1 ByteBuf 的主要類繼承關(guān)系...... 309 15.2.2 AbstractByteBuf 源碼分析...... 310 15.2.3 AbstractReferenceCountedByteBuf 源碼分析...... 319 15.2.4 UnpooledHeapByteBuf 源碼分析...... 321 15.2.5 PooledByteBuf 內(nèi)存池原理分析...... 326 15.2.6 PooledDirectByteBuf 源碼分析...... 329 15.3 ByteBuf 相關(guān)的輔助類功能介紹...... 332 15.3.1 ByteBufHolder...... 332 15.3.2 ByteBufAllocator ...... 333 15.3.3 CompositeByteBuf ...... 334 15.3.4 ByteBufUtil ...... 336 15.4 總結(jié)...... 337 第16 章 Channel 和Unsafe ...... 338 16.1 Channel 功能說明...... 338 16.1.1 Channel 的工作原理...... 339 16.1.2 Channel 的功能介紹...... 340 16.2 Channel 源碼分析...... 343 16.2.1 Channel 的主要繼承關(guān)系類圖...... 343 16.2.2 AbstractChannel 源碼分析...... 344 16.2.3 AbstractNioChannel 源碼分析...... 347 16.2.4 AbstractNioByteChannel 源碼分析...... 350 16.2.5 AbstractNioMessageChannel 源碼分析...... 353 16.2.6 AbstractNioMessageServerChannel 源碼分析...... 354 16.2.7 NioServerSocketChannel 源碼分析...... 355 16.2.8 NioSocketChannel 源碼分析...... 358 16.3 Unsafe 功能說明...... 364 16.4 Unsafe 源碼分析...... 365 16.4.1 Unsafe 繼承關(guān)系類圖...... 365 16.4.2 AbstractUnsafe 源碼分析...... 366 16.4.3 AbstractNioUnsafe 源碼分析...... 375 16.4.4 NioByteUnsafe 源碼分析...... 379 16.5 總結(jié)...... 387 第17 章 ChannelPipeline 和ChannelHandler...... 388 17.1 ChannelPipeline 功能說明...... 389 17.1.1 ChannelPipeline 的事件處理...... 389 17.1.2 自定義攔截器...... 391 17.1.3 構(gòu)建pipeline ...... 392 17.1.4 ChannelPipeline 的主要特性...... 393 17.2 ChannelPipeline 源碼分析...... 393 17.2.1 ChannelPipeline 的類繼承關(guān)系圖...... 393 17.2.2 ChannelPipeline 對ChannelHandler 的管理...... 393 17.2.3 ChannelPipeline 的inbound 事件...... 396 17.2.4 ChannelPipeline 的outbound 事件...... 397 17.3 ChannelHandler 功能說明...... 398 17.3.1 ChannelHandlerAdapter 功能說明...... 399 17.3.2 ByteToMessageDecoder 功能說明...... 399 17.3.3 MessageToMessageDecoder 功能說明...... 400 17.3.4 LengthFieldBasedFrameDecoder 功能說明...... 400 17.3.5 MessageToByteEncoder 功能說明...... 404 17.3.6 MessageToMessageEncoder 功能說明...... 404 17.3.7 LengthFieldPrepender 功能說明...... 405 17.4 ChannelHandler 源碼分析...... 406 17.4.1 ChannelHandler 的類繼承關(guān)系圖...... 406 17.4.2 ByteToMessageDecoder 源碼分析...... 407 17.4.3 MessageToMessageDecoder 源碼分析...... 410 17.4.4 LengthFieldBasedFrameDecoder 源碼分析...... 411 17.4.5 MessageToByteEncoder 源碼分析...... 415 17.4.6 MessageToMessageEncoder 源碼分析...... 416 17.4.7 LengthFieldPrepender 源碼分析...... 417 17.5 總結(jié)...... 418 第18 章 EventLoop 和EventLoopGroup...... 419 18.1 Netty 的線程模型...... 419 18.1.1 Reactor 單線程模型...... 420 18.1.2 Reactor 多線程模型...... 421 18.1.3 主從Reactor 多線程模型...... 422 18.1.4 Netty 的線程模型...... 423 18.1.5 最佳實踐...... 424 18.2 NioEventLoop 源碼分析...... 425 18.2.1 NioEventLoop 設(shè)計原理...... 425 18.2.2 NioEventLoop 繼承關(guān)系類圖...... 426 18.2.3 NioEventLoop...... 427 18.3 總結(jié)...... 436 第19 章 Future 和Promise ...... 438 19.1 Future 功能...... 438 19.2 ChannelFuture 源碼分析...... 443 19.3 Promise 功能介紹...... 445 19.4 Promise 源碼分析...... 447 19.4.1 Promise 繼承關(guān)系圖...... 447 19.4.2 DefaultPromise ...... 447 19.5 總結(jié)...... 449 架構(gòu)和行業(yè)應(yīng)用篇 Netty 高級特性 第20 章 Netty 架構(gòu)剖析...... 452 20.1 Netty 邏輯架構(gòu)...... 452 20.1.1 Reactor 通信調(diào)度層...... 453 20.1.2 職責(zé)鏈ChannelPipeline ...... 453 20.1.3 業(yè)務(wù)邏輯編排層(Service ChannelHandler)...... 454 20.2 關(guān)鍵架構(gòu)質(zhì)量屬性...... 454 20.2.1 高性能...... 454 20.2.2 可靠性...... 457 20.2.3 可定制性...... 460 20.2.4 可擴展性...... 460 20.3 總結(jié)...... 460 第21 章 Java 多線程編程在Netty 中的應(yīng)用...... 461 21.1 Java 內(nèi)存模型與多線程編程...... 461 21.1.1 硬件的發(fā)展和多任務(wù)處理...... 461 21.1.2 Java 內(nèi)存模型...... 462 21.2 Netty 的并發(fā)編程實踐...... 464 21.2.1 對共享的可變數(shù)據(jù)進行正確的同步...... 464 21.2.2 正確使用鎖...... 465 21.2.3 volatile 的正確使用...... 467 21.2.4 CAS 指令和原子類...... 470 21.2.5 線程安全類的應(yīng)用...... 472 21.2.6 讀寫鎖的應(yīng)用...... 476 21.2.7 線程安全性文檔說明...... 477 21.2.8 不要依賴線程優(yōu)先級...... 478 21.3 總結(jié)...... 479 第22 章 高性能之道...... 480 22.1 RPC 調(diào)用性能模型分析...... 480 22.1.1 傳統(tǒng)RPC 調(diào)用性能差的三宗罪...... 480 22.1.2 I/O 通信性能三原則...... 481 22.2 Netty 高性能之道...... 482 22.2.1 異步非阻塞通信...... 482 22.2.2 高效的Reactor 線程模型...... 482 22.2.3 鎖化的串行設(shè)計...... 485 22.2.4 高效的并發(fā)編程...... 486 22.2.5 高性能的序列化框架...... 486 22.2.6 零拷貝...... 487 22.2.7 內(nèi)存池...... 491 22.2.8 靈活的TCP 參數(shù)配置能力...... 494 22.3 主流NIO 框架性能對比...... 495 22.4 總結(jié)...... 497 第23 章 可靠性...... 498 23.1 可靠性需求...... 498 23.1.1 宕機的代價...... 498 23.1.2 Netty 可靠性需求...... 499 23.2 Netty 高可靠性設(shè)計...... 500 23.2.1 網(wǎng)絡(luò)通信類故障...... 500 23.2.2 鏈路的有效性檢測...... 507 23.2.3 Reactor 線程的保護...... 510 23.2.4 內(nèi)存保護...... 513 23.2.5 流量整形...... 516 23.2.6 優(yōu)雅停機接口...... 519 23.3 優(yōu)化建議...... 520 23.3.1 發(fā)送隊列容量上限控制...... 520 23.3.2 回推發(fā)送失敗的消息...... 521 23.4 總結(jié)...... 521 第24 章 安全性...... 522 24.1 嚴峻的安全形勢...... 522 24.1.1 OpenSSL Heart bleed 漏洞...... 522 24.1.2 安全漏洞的代價...... 523 24.1.3 Netty 面臨的安全風(fēng)險...... 523 24.2 Netty SSL 安全特性...... 525 24.2.1 SSL 單向認證...... 525 24.2.2 SSL 雙向認證...... 532 24.2.3 第三方CA 認證...... 536 24.3 Netty SSL 源碼分析...... 538 24.3.1 客戶端...... 538 24.3.2 服務(wù)端...... 541 24.3.3 消息讀?。?544 24.3.4 消息發(fā)送...... 545 24.4 Netty 擴展的安全特性...... 546 24.4.1 IP 地址黑名單機制...... 547 24.4.2 接入認證...... 548 24.4 總結(jié)...... 550 第25 章 Netty 未來展望...... 551 25.1 應(yīng)用范圍...... 551 25.2 技術(shù)演進...... 552 25.3 社區(qū)活躍度...... 552 25.4 Road Map ...... 552 25.5 總結(jié)...... 553 附錄A Netty 參數(shù)配置表...... 554
使用說明
1、下載并解壓,得出pdf文件
2、如果打不開本文件,請務(wù)必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進行閱讀試讀
- 下載地址
發(fā)表評論
1人參與,1條評論- 第1樓北京市東城區(qū)聯(lián)通網(wǎng)友發(fā)表于: 2019-04-10 17:55:51
- 太帥了,感謝0蓋樓(回復(fù))
軟件排行榜
熱門推薦
有柿電腦版 v11.8.8119.89M / 簡體中文
南方Plus電腦版 v12.3.023.89M / 簡體中文
cnki全球?qū)W術(shù)快報電腦版 v1.0.4104.49M / 簡體中文
網(wǎng)易云閱讀電腦版 v6.7.226.41M / 簡體中文
數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡體中文
吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
未公開的Oracle數(shù)據(jù)庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
linux常用命令大全 chm版1.48M / 簡體中文
本草綱目 5.34M / 簡體中文