注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)行業(yè)軟件及應(yīng)用Netty權(quán)威指南(第2版)

Netty權(quán)威指南(第2版)

Netty權(quán)威指南(第2版)

定 價:¥89.00

作 者: 李林鋒 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 計(jì)算機(jī)/網(wǎng)絡(luò) 軟件工程/開發(fā)項(xiàng)目管理

ISBN: 9787121258015 出版時間: 2015-04-01 包裝:
開本: 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  《Netty 權(quán)威指南(第2 版)》是異步非阻塞通信領(lǐng)域的經(jīng)典之作,基于最新版本的Netty 5.0 編寫,是國內(nèi)首本深入介紹Netty 原理和架構(gòu)的書籍,也是作者多年實(shí)戰(zhàn)經(jīng)驗(yàn)的總結(jié)和濃縮。內(nèi)容不僅包含Java NIO入門知識、Netty 的基礎(chǔ)功能開發(fā)指導(dǎo)、編解碼框架定制等,還包括私有協(xié)議棧定制和開發(fā)、Netty 核心類庫源碼分析,以及Netty 的架構(gòu)剖析。《Netty 權(quán)威指南(第2 版)》適合架構(gòu)師、設(shè)計(jì)師、軟件開發(fā)工程師、測試人員以及其他對Java NIO 框架、Netty 感興趣的相關(guān)人士閱讀,通過《Netty 權(quán)威指南(第2 版)》的學(xué)習(xí),讀者不僅能夠掌握Netty 基礎(chǔ)功能的使用和開發(fā),更能夠掌握Netty 核心類庫的原理和使用約束,從而在實(shí)際工作中更好地使用Netty。

作者簡介

  李林鋒:Netty中國推廣者,現(xiàn)華為技術(shù)有限公司平臺中間件架構(gòu)與設(shè)計(jì)部設(shè)計(jì)師,公司總裁技術(shù)創(chuàng)新獎獲得者。長期從事高性能通信軟件的架構(gòu)設(shè)計(jì)和開發(fā)工作,有多年在NIO領(lǐng)域的設(shè)計(jì)、開發(fā)和運(yùn)維經(jīng)驗(yàn),精通NIO編程和Netty、Mina等主流NIO框架。目前負(fù)責(zé)華為軟件公司下一代SOA中間件和PaaS平臺的架構(gòu)設(shè)計(jì)工作。

圖書目錄

基礎(chǔ)篇走進(jìn)Java NIO 第1 章Java 的I/O 演進(jìn)之路.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 演進(jìn)..........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ù)器運(yùn)行結(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 運(yùn)行和調(diào)試................ 76 3.4.1 服務(wù)端和客戶端的運(yùn)行...... 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 運(yùn)行結(jié)果.......... 84 4.3 利用LineBasedFrameDecoder 解決TCP 粘包問題................ 85 4.3.1 支持TCP 粘包的TimeServer ....................... 86 4.3.2 支持TCP 粘包的TimeClient........................ 88 4.3.3 運(yùn)行支持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 運(yùn)行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 序列化的缺點(diǎn) ...... 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 Facebook 的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 運(yùn)行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 的使用注意事項(xiàng)......... 140 8.4 總結(jié).......................... 142 第9 章JBoss Marshalling 編解碼....... 143 9.1 Marshalling 開發(fā)環(huán)境準(zhǔn)備........ 143 9.2 Netty 的Marshalling 服務(wù)端開發(fā)..................... 144 9.3 Netty 的Marshalling 客戶端開發(fā)..................... 147 9.4 運(yùn)行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ù)器例程運(yùn)行結(jié)果.... 166 10.3 Netty HTTP+XML 協(xié)議棧開發(fā)....................... 170 10.3.1 開發(fā)場景介紹................. 171 10.3.2 HTTP+XML 協(xié)議棧設(shè)計(jì).......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 運(yùn)行WebSocket 服務(wù)端... 218 11.4 總結(jié)........................ 219 第12 章私有協(xié)議棧開發(fā).... 221 12.1 私有協(xié)議介紹........ 221 12.2 Netty 協(xié)議棧功能設(shè)計(jì)............ 223 12.2.1 網(wǎng)絡(luò)拓?fù)鋱D.. 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è)計(jì).. 230 12.2.10 安全性設(shè)計(jì) 232 12.2.11 可擴(kuò)展性設(shè)計(jì)................ 232 12.3 Netty 協(xié)議棧開發(fā).. 233 12.3.1 數(shù)據(jù)結(jié)構(gòu)定義................. 233 12.3.2 消息編解碼.. 237 12.3.3 握手和安全認(rèn)證.............. 241 12.3.4 心跳檢測機(jī)制................. 245 12.3.5 斷連重連...... 248 12.3.6 客戶端代碼.. 249 12.3.7 服務(wù)端代碼.. 251 12.4 運(yùn)行協(xié)議棧............ 252 12.4.1 正常場景...... 252 12.4.2 異常場景:服務(wù)端宕機(jī)重啟.................... 253 12.4.3 異常場景:客戶端宕機(jī)重啟.................... 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 客戶端連接超時機(jī)制...... 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 最佳實(shí)踐...... 424 18.2 NioEventLoop 源碼分析......... 425 18.2.1 NioEventLoop 設(shè)計(jì)原理.. 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 可擴(kuò)展性...... 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ā)編程實(shí)踐............ 464 21.2.1 對共享的可變數(shù)據(jù)進(jìn)行正確的同步......... 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è)計(jì).......... 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 宕機(jī)的代價.. 498 23.1.2 Netty 可靠性需求............ 499 23.2 Netty 高可靠性設(shè)計(jì)................ 500 23.2.1 網(wǎng)絡(luò)通信類故障.............. 500 23.2.2 鏈路的有效性檢測.......... 507 23.2.3 Reactor 線程的保護(hù)......... 510 23.2.4 內(nèi)存保護(hù)...... 513 23.2.5 流量整形...... 516 23.2.6 優(yōu)雅停機(jī)接口................. 519 23.3 優(yōu)化建議................ 520 23.3.1 發(fā)送隊(duì)列容量上限控制... 520 23.3.2 回推發(fā)送失敗的消息...... 521 23.4 總結(jié)........................ 521 第24 章安全性.................... 522 24.1 嚴(yán)峻的安全形勢.... 522 24.1.1 OpenSSL Heart bleed 漏洞.......... 522 24.1.2 安全漏洞的代價.............. 523 24.1.3 Netty 面臨的安全風(fēng)險(xiǎn)..... 523 24.2 Netty SSL 安全特性................. 525 24.2.1 SSL 單向認(rèn)證.................. 525 24.2.2 SSL 雙向認(rèn)證.................. 532 24.2.3 第三方CA 認(rèn)證.............. 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 擴(kuò)展的安全特性............ 546 24.4.1 IP 地址黑名單機(jī)制.......... 547 24.4.2 接入認(rèn)證...... 548 24.4 總結(jié)........................ 550 第25 章Netty 未來展望..... 551 25.1 應(yīng)用范圍................ 551 25.2 技術(shù)演進(jìn)................ 552 25.3 社區(qū)活躍度............ 552 25.4 Road Map ............... 552 25.5 總結(jié)........................ 553 附錄A Netty 參數(shù)配置表.... 554

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號