産品特色
編輯推薦
適讀人群 :《Netty 權威指南(第2 版)》適閤架構師、設計師、軟件開發工程師、測試人員以及其他對Java NIO 框架、Netty 感興趣的相關人士閱讀,通過本書的學習,讀者不僅能夠掌握Netty 基礎功能的使用和開發,更能夠掌握Netty 核心類庫的原理和使用約束,從而在實際工作中更好地使用Netty。
1、Hadoop、Storm、Spark、Facebook、Twitter、阿裏巴巴都在使用Java高性能NIO通信框架Netty,本書告訴你Why,通過本書你可以全麵、係統地理解Netty 架構設計理念,以及異步NIO 編程。
2、本書作者為資深一綫專傢,在産品中廣泛應用瞭Netty等NIO框架,具有豐富的多年實踐經驗,這就使得本書內容帶有很強的實踐性,讓你更全麵快速掌握Java高並發異步通信的優選框架Netty的用法。
3、本書第一版齣版後受到業界的一緻好評,應讀者的要求,第2版增加瞭MessagePack 編解碼、服務端創建、客戶端創建、高性能之道、可靠性、安全性等內容,內容更精彩。
Netty是什麼?使用Netty能夠做什麼?為什麼要從傳統的Socket開發切換到NIO進行編程?為什麼不直接基於JDK的NIO類庫編程而選擇Netty?如何全麵係統地掌握Netty進行NettyNIO開發、Netty編解碼開發、Netty多協議開發?如何通過對Netty源碼的學習獲得更深入地知識?掌握瞭Netty後,如何將其應用到實際架構中?Netty工程師的就業前景和可涉足的行業是怎樣的?本書都會一一解答。
推薦購買:
內容簡介
《Netty quanwei指南(第2 版)》是異步非阻塞通信領域的經典之作,基於全新版本的Netty 5.0 編寫,是國內首本深入介紹Netty 原理和架構的書籍,也是作者多年實戰經驗的總結和濃縮。內容不僅包含Java NIO入門知識、Netty 的基礎功能開發指導、編解碼框架定製等,還包括私有協議棧定製和開發、Netty 核心類庫源碼分析,以及Netty 的架構剖析。
作者簡介
李林峰,Netty中國推廣者,現華為技術有限公司平颱中間件架構與設計部設計師,公司總裁技術創新奬獲得者。長期從事高性能通信軟件的架構設計和開發工作,有多年在NIO領域的設計、開發和運維經驗,精通NIO編程和Netty、Mina等主流NIO框架。
精彩書評
★林鋒讓我給這本新書寫個推薦,不勝榮幸。我和林鋒接觸時間不長,已經感受到瞭他對技術的熱愛和不盡探索。這種熱愛完全來自於內心的驅動,不摻雜任何雜質,我認為他是我見到的為數不多的技術熱愛者。也正是因為這種熱愛,促使林鋒花費瞭很多業餘時間,完成瞭這樣一本對Netty的專業編程指南。相信讀者在閱讀此書時,在感嘆內容之豐富詳實的同時,也會深深感受到林鋒對所著技術的熱愛。我想這就是我們通過書中文字相遇的初衷吧。當我們的技術能夠日益精進,達到專業的水準,生産力會成倍甚至指數級地增長。希望讀者能夠通過閱讀此書獲取這種精進的力量。
——IBM中國開發實驗室開發總監 黃省江
★Netty的優秀之處在於它是一個高性能、異步事件驅動的NIO框架,目前很多知名的開源框架開始將底層的通信框架切換到Netty,如Hadoop、Storm等,Facebook的後颱也即將啓用這一優秀框架。希望這本書的麵市能夠對Netty在國內的發展起到推動作用。
——Facebook資深工程師 覃超
★中國很大的閱讀類應用——中國移動手機閱讀基地,每天承受著5~7.5億PV的訪問量,為瞭實現業務的彈性,華為Digital SDP産品承接瞭對其後颱進行微服務重構的工作,一個PV背後的後颱原子接口訪問達到幾十乃至上百次,還要保證90%的頁麵訪問在500ms內響應,在這樣的壓力下,高效的通信機製尤其重要,林鋒基於Netty構建的對等通信虛擬總綫很好地承載瞭這一需求。平均通信時延0.71ms,80%以上的通信時延都保持在1ms以下,其餘通信時延都低於3ms,在響應速度這一重要指標上不僅滿足瞭客戶的要求,而且還帶來瞭係統可伸縮性和彈性上的巨大提升,林鋒在本書中闡釋的Netty應用上的經驗和技巧絕對值得期待。
——華為Digital SDP首席架構師 王慷
★設計開發基於異步編程模型的高性能服務器,除瞭理解和熟練應用NIO等這些Java層麵的基礎知識之外,能夠駕馭優秀的異步通信框架也是非常重要的,Netty無疑是Java領域值得學習和研究的異步事件驅動的NIO框架。作者有著多年的NIO開發和運維經驗,本書濃縮瞭作者多年實戰經驗,推薦給對Netty技術感興趣、想研究的攻城獅閱讀!
——螞蟻金服基礎技術部JVM Architect 李三紅
★Netty是一個令人驚訝的項目,在短短幾年內成為眾多Java高並發異步通信的優選框架。但目前國內資料極少並缺乏係統性,而李兄的這本係統介紹Netty開發和原理的書籍,很完美地填補瞭這個空白。國內的技術人員對Java NIO和Netty的理解多一些,也就意味著國內整體網絡編程技術的進步。本書條理清晰,對技術的闡述循序漸進,是一本難得的Netty學習教材,推薦有誌青年仔細學習研究本書,共同把NIO異步通信編程推嚮一個新高度。
——JBoss應用服務器核心開發組成員 張建鋒
目錄
基礎篇 走進Java NIO
第1 章 Java 的I/O 演進之路......2
1.1 I/O 基礎入門......3
1.1.1 Linux 網絡I/O 模型簡介......3
1.1.2 I/O 多路復用技術......6
1.2 Java 的I/O 演進......8
1.3 總結...... 10
第2 章 NIO 入門...... 11
2.1 傳統的BIO 編程...... 11
2.1.1 BIO 通信模型圖...... 12
2.1.2 同步阻塞式I/O 創建的TimeServer 源碼分析...... 13
2.1.3 同步阻塞式I/O 創建的TimeClient 源碼分析...... 16
2.2 僞異步I/O 編程...... 18
2.2.1 僞異步I/O 模型圖...... 19
2.2.2 僞異步I/O 創建的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 創建的TimeServer 源碼分析...... 30
2.3.4 NIO 客戶端序列圖...... 36
2.3.5 NIO 創建的TimeClient 源碼分析...... 39
2.4 AIO 編程...... 45
2.4.1 AIO 創建的TimeServer 源碼分析...... 46
2.4.2 AIO 創建的TimeClient 源碼分析...... 51
2.4.3 AIO 版本時間服務器運行結果...... 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 總結...... 63
入門篇 Netty NIO 開發指南
第3 章 Netty 入門應用...... 66
3.1 Netty 開發環境的搭建...... 66
3.1.1 下載Netty 的軟件包...... 67
3.1.2 搭建Netty 應用工程...... 67
3.2 Netty 服務端開發...... 68
3.3 Netty 客戶端開發...... 73
3.4 運行和調試...... 76
3.4.1 服務端和客戶端的運行...... 76
3.4.2 打包和部署...... 77
3.5 總結...... 77
第4 章 TCP 粘包/拆包問題的解決之道...... 79
4.1 TCP 粘包/拆包...... 79
4.1.1 TCP 粘包/拆包問題說明...... 80
4.1.2 TCP 粘包/拆包發生的原因...... 80
4.1.3 粘包問題的解決策略...... 81
4.2 未考慮TCP 粘包導緻功能異常案例...... 82
4.2.1 TimeServer 的改造...... 82
4.2.2 TimeClient 的改造...... 83
4.2.3 運行結果...... 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 總結...... 92
第5 章 分隔符和定長解碼器的應用...... 93
5.1 DelimiterBasedFrameDecoder 應用開發...... 94
5.1.1 DelimiterBasedFrameDecoder 服務端開發...... 94
5.1.2 DelimiterBasedFrameDecoder 客戶端開發...... 97
5.1.3 運行DelimiterBasedFrameDecoder 服務端和客戶端...... 99
5.2 FixedLengthFrameDecoder 應用開發...... 101
5.2.1 FixedLengthFrameDecoder 服務端開發...... 101
5.2.2 利用telnet 命令行測試EchoServer 服務端...... 103
5.3 總結...... 104
中級篇 Netty 編解碼開發指南
第6 章 編解碼技術...... 106
6.1 Java 序列化的缺點...... 107
6.1.1 法跨語言...... 107
6.1.2 序列化後的碼流太大...... 107
6.1.3 序列化性能太低...... 110
6.2 業界主流的編解碼框架...... 113
6.2.1 Google 的Protobuf 介紹...... 113
6.2.2 Facebook 的Thrift 介紹...... 115
6.2.3 JBoss Marshalling 介紹...... 116
6.3 總結...... 117
第7 章 MessagePack 編解碼...... 118
7.1 MessagePack 介紹...... 118
7.1.1 MessagePack 多語言支持...... 119
7.1.2 MessagePack Java API 介紹...... 119
7.1.3 MessagePack 開發包下載...... 120
7.2 MessagePack 編碼器和解碼器開發...... 120
7.2.1 MessagePack 編碼器開發...... 120
7.2.2 MessagePack 解碼器開發...... 121
7.2.3 功能測試...... 121
7.3 粘包/半包支持...... 124
7.4 總結...... 127
第8 章 Google Protobuf 編解碼...... 128
8.1 Protobuf 的入門...... 129
8.1.1 Protobuf 開發環境搭建...... 129
8.1.2 Protobuf 編解碼開發...... 131
8.1.3 運行Protobuf 例程...... 133
8.2 Netty 的Protobuf 服務端開發...... 133
8.2.1 Protobuf 版本的圖書訂購服務端開發...... 134
8.2.2 Protobuf 版本的圖書訂購客戶端開發...... 136
8.2.3 Protobuf 版本的圖書訂購程序功能測試...... 139
8.3 Protobuf 的使用注意事項...... 140
8.4 總結...... 142
第9 章 JBoss Marshalling 編解碼...... 143
9.1 Marshalling 開發環境準備...... 143
9.2 Netty 的Marshalling 服務端開發...... 144
9.3 Netty 的Marshalling 客戶端開發...... 147
9.4 運行Marshalling 客戶端和服務端例程...... 149
9.5 總結...... 150
高級篇 Netty 多協議開發和應用
第10 章 HTTP 協議開發應用...... 154
10.1 HTTP 協議介紹...... 155
10.1.1 HTTP 協議的URL ...... 155
10.1.2 HTTP 請求消息(HttpRequest)...... 155
10.1.3 HTTP 響應消息(HttpResponse) ...... 158
10.2 Netty HTTP 服務端入門開發...... 159
10.2.1 HTTP 服務端例程場景描述...... 160
10.2.2 HTTP 服務端開發...... 160
10.2.3 Netty HTTP 文件服務器例程運行結果...... 166
10.3 Netty HTTP+XML 協議棧開發...... 170
10.3.1 開發場景介紹...... 171
10.3.2 HTTP+XML 協議棧設計...... 174
10.3.3 高效的XML 綁定框架JiBx ...... 175
10.3.4 HTTP+XML 編解碼框架開發...... 183
10.3.5 HTTP+XML 協議棧測試...... 199
10.3.6 小結...... 201
10.4 總結...... 202
第11 章 WebSocket 協議開發...... 203
11.1 HTTP 協議的弊端...... 204
11.2 WebSocket 入門...... 204
11.2.1 WebSocket 背景...... 205
11.2.2 WebSocket 連接建立...... 206
11.2.3 WebSocket 生命周期...... 207
11.2.4 WebSocket 連接關閉...... 208
11.3 Netty WebSocket 協議開發...... 209
11.3.1 WebSocket 服務端功能介紹...... 209
11.3.2 WebSocket 服務端開發...... 210
11.3.3 運行WebSocket 服務端...... 218
11.4 總結...... 219
第12 章 私有協議棧開發...... 221
12.1 私有協議介紹...... 221
12.2 Netty 協議棧功能設計...... 223
12.2.1 網絡拓撲圖...... 223
12.2.2 協議棧功能描述...... 224
12.2.3 通信模型...... 224
12.2.4 消息定義...... 225
12.2.5 Netty 協議支持的字段類型...... 226
12.2.6 Netty 協議的編解碼規範...... 227
12.2.7 鏈路的建立...... 229
12.2.8 鏈路的關閉...... 230
12.2.9 可靠性設計...... 230
12.2.10 安全性設計...... 232
12.2.11 可擴展性設計...... 232
12.3 Netty 協議棧開發...... 233
12.3.1 數據結構定義...... 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 運行協議棧...... 252
12.4.1 正常場景...... 252
12.4.2 異常場景:服務端宕機重啓...... 253
12.4.3 異常場景:客戶端宕機重啓...... 256
12.5 總結...... 256
第13 章 服務端創建...... 258
13.1 原生NIO 類庫的復雜性...... 259
13.2 Netty 服務端創建源碼分析...... 259
13.2.1 Netty 服務端創建時序圖...... 260
13.2.2 Netty 服務端創建源碼分析...... 263
13.3 客戶端接入源碼分析...... 272
13.4 總結...... 275
第14 章 客戶端創建...... 276
14.1 Netty 客戶端創建流程分析...... 276
14.2.1 Netty 客戶端創建時序圖...... 276
14.2.2 Netty 客戶端創建流程分析...... 277
14.2 Netty 客戶端創建源碼分析...... 278
14.2.1 客戶端連接輔助類Bootstrap...... 278
14.2.2 客戶端連接操作...... 281
14.2.3 異步連接結果通知...... 283
14.2.4 客戶端連接超時機製...... 284
14.3 總結...... 286
源碼分析篇 Netty 功能介紹和源碼分析
第15 章 ByteBuf 和相關輔助類...... 288
15.1 ByteBuf 功能說明...... 288
15.1.1 ByteBuf 的工作原理...... 289
15.1.2 ByteBuf 的功能介紹...... 294
15.2 ByteBuf 源碼分析...... 308
15.2.1 ByteBuf 的主要類繼承關係...... 309
15.2.2 AbstractByteBuf 源碼分析...... 310
15.2.3 AbstractReferenceCountedByteBuf 源碼分析...... 319
15.2.4 UnpooledHeapByteBuf 源碼分析...... 321
15.2.5 PooledByteBuf 內存池原理分析...... 326
15.2.6 PooledDirectByteBuf 源碼分析...... 329
15.3 ByteBuf 相關的輔助類功能介紹
Netty權威指南(第2版) 下載 mobi epub pdf txt 電子書 格式