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

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

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

定 價:¥89.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

基礎篇走進Java NIO 第1 章Java 的I/O 演進之路.2 1.1 I/O 基礎入門...............3 1.1.1 Linux 網(wǎng)絡I/O 模型簡介.......3 1.1.2 I/O 多路復用技術(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 服務端序列圖.............. 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 版本時間服務器運行結(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 入門應用.......... 66 3.1 Netty 開發(fā)環(huán)境的搭建................ 66 3.1.1 下載Netty 的軟件包........... 67 3.1.2 搭建Netty 應用工程........... 67 3.2 Netty 服務端開發(fā)...... 68 3.3 Netty 客戶端開發(fā)...... 73 3.4 運行和調(diào)試................ 76 3.4.1 服務端和客戶端的運行...... 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 粘包導致功能異常案例................. 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 粘包的時間服務器程序........ 90 4.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析........... 91 4.4 總結(jié)............................ 92 第5 章分隔符和定長解碼器的應用...... 93 5.1 DelimiterBasedFrameDecoder 應用開發(fā)............. 94 5.1.1 DelimiterBasedFrameDecoder 服務端開發(fā).... 94 5.1.2 DelimiterBasedFrameDecoder 客戶端開發(fā).... 97 5.1.3 運行DelimiterBasedFrameDecoder 服務端和客戶端............... 99 5.2 FixedLengthFrameDecoder 應用開發(fā)............... 101 5.2.1 FixedLengthFrameDecoder 服務端開發(fā)...... 101 5.2.2 利用telnet 命令行測試EchoServer 服務端......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 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 運行Protobuf 例程............ 133 8.2 Netty 的Protobuf 服務端開發(fā).. 133 8.2.1 Protobuf 版本的圖書訂購服務端開發(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 服務端開發(fā)..................... 144 9.3 Netty 的Marshalling 客戶端開發(fā)..................... 147 9.4 運行Marshalling 客戶端和服務端例程........... 149 9.5 總結(jié).......................... 150 高級篇 Netty 多協(xié)議開發(fā)和應用 第10 章HTTP 協(xié)議開發(fā)應用............... 154 10.1 HTTP 協(xié)議介紹..... 155 10.1.1 HTTP 協(xié)議的URL .......... 155 10.1.2 HTTP 請求消息(HttpRequest).............. 155 10.1.3 HTTP 響應消息(HttpResponse)........... 158 10.2 Netty HTTP 服務端入門開發(fā)....... 159 10.2.1 HTTP 服務端例程場景描述..................... 160 10.2.2 HTTP 服務端開發(fā)........... 160 10.2.3 Netty HTTP 文件服務器例程運行結(jié)果.... 166 10.3 Netty HTTP+XML 協(xié)議棧開發(fā)....................... 170 10.3.1 開發(fā)場景介紹................. 171 10.3.2 HTTP+XML 協(xié)議棧設計.......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 服務端功能介紹..................... 209 11.3.2 WebSocket 服務端開發(fā).... 210 11.3.3 運行WebSocket 服務端... 218 11.4 總結(jié)........................ 219 第12 章私有協(xié)議棧開發(fā).... 221 12.1 私有協(xié)議介紹........ 221 12.2 Netty 協(xié)議棧功能設計............ 223 12.2.1 網(wǎng)絡拓撲圖.. 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 可靠性設計.. 230 12.2.10 安全性設計 232 12.2.11 可擴展性設計................ 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 服務端代碼.. 251 12.4 運行協(xié)議棧............ 252 12.4.1 正常場景...... 252 12.4.2 異常場景:服務端宕機重啟.................... 253 12.4.3 異常場景:客戶端宕機重啟.................... 256 12.5 總結(jié)........................ 256 第13 章服務端創(chuàng)建............ 258 13.1 原生NIO 類庫的復雜性......... 259 13.2 Netty 服務端創(chuàng)建源碼分析.... 259 13.2.1 Netty 服務端創(chuàng)建時序圖. 260 13.2.2 Netty 服務端創(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 設計原理.. 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è)應用篇 Netty 高級特性 第20 章Netty 架構(gòu)剖析..... 452 20.1 Netty 邏輯架構(gòu)...... 452 20.1.1 Reactor 通信調(diào)度層......... 453 20.1.2 職責鏈ChannelPipeline ... 453 20.1.3 業(yè)務邏輯編排層(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 中的應用............. 461 21.1 Java 內(nèi)存模型與多線程編程.. 461 21.1.1 硬件的發(fā)展和多任務處理........................ 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 線程安全類的應用.......... 472 21.2.6 讀寫鎖的應用................. 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 無鎖化的串行設計.......... 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 高可靠性設計................ 500 23.2.1 網(wǎng)絡通信類故障.............. 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 面臨的安全風險..... 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 服務端.......... 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 應用范圍................ 551 25.2 技術(shù)演進................ 552 25.3 社區(qū)活躍度............ 552 25.4 Road Map ............... 552 25.5 總結(jié)........................ 553 附錄A Netty 參數(shù)配置表.... 554

本目錄推薦

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