《Netty權威指南》


《Netty權威指南》

基本信息

作者: 李林鋒   

出版社:電子工業出版社

ISBN:9787121233432

上架時間:2014-5-29

出版日期:2014 年6月

開本:16開

頁碼:524

版次:1-1

所屬分類:計算機 > 軟件與程序設計 > 綜合 > 高級程序語言設計

 

更多關於》》》 《Netty權威指南》

 

編輯推薦

       資深一線專家誠意之作,總結多年實踐經驗,帶你全面掌握Java高並發異步通信的首選框架——Netty。

   Facebook、阿里巴巴、1號店、並發編程網、JBoss等多位資深技術專家聯名力薦。

  《Netty權威指南》是異步非阻塞通信領域的經典之作,是國內首本深入分析和講解Netty原理和架構的著作,內容包含基礎功能、高級應用、系統架構、源碼分析和行業應用,深入闡述了Java I/O的Netty NIO開發、Netty編解碼開發、Netty多協議開發等各方面的技術要點,包含了對源碼的深刻解讀,並且對Netty的應用現狀和未來趨勢進行分析,旨在幫助從業人員提升自我,更快更明確地發展職業道路。

   Netty是什么?使用Netty能夠做什么?為什么要從傳統的Socket開發切換到NIO進行編程?為什么不直接基於JDK的NIO類庫編程而選擇Netty?如何全面系統地掌握Netty,進行Netty NIO開發、Netty編解碼開發、Netty多協議開發?如何通過對Netty源碼的學習獲得更深入地知識?掌握了Netty后,如何將其應用到實際架構中?Netty工程師的就業前景和可涉足的行業是怎樣的?本書都會一一解答。

 

內容簡介

    書籍

    計算機書籍

《netty權威指南》是異步非阻塞通信領域的經典之作,基於最新版本netty 5.0編寫,是國內首本深入介紹netty原理和架構的技術書籍,也是作者多年實戰經驗的總結和濃縮。在理論方面,講解了netty的邏輯架構模型和核心類庫的設計原理,而且對netty在大數據、互聯網、游戲行業的應用進行了深入分析;實戰方面,從第一個netty入門程序到私有協議棧的設計和開發,通過實際例程,由淺入深地對netty的核心api和類庫的功能和用法進行了細致講解。

《netty權威指南》適合架構師、設計師、軟件開發工程師、測試人員和其他對java nio框架、java通信感興趣的相關人士閱讀,相信通過學習本書,能夠熟悉和掌握netty這一優秀的異步通信框架,實現高可用分布式系統的構建。

 

媒體評論

  與林鋒兄相識甚早,他在NIO相關領域實戰經驗豐富,成績斐然,並且樂於分享,旨在幫助更多人得到技術上的進步,是一位我很尊敬的技術思考者、實踐者和推廣者。Netty作為Dubbo底層的高性能分布式通信框架,在實際開發中,我非常關心如高效序列化/編解碼、線程模型調優、高效Buffer使用、心跳重連策略、優雅停機、宕機異常處理、NIO並發安全處理等核心問題,而本書中對這些問題都進行了詳細說明,並提煉出了處理原則,給出了提綱挈領般的引導。書中對這些問題的分析總結可以得到不少從頭摸爬滾打才能獲得的收獲,希望你和我一樣能有眼前一亮的感覺。

  ——阿里巴巴Dubbo、PaaS平台核心開發架構師李鼎

  Netty是一個令人驚訝的項目,在短短幾年成為眾多Java高並發異步通信的首選框架。但目前國內資料極少並缺乏系統性,而李兄的這本系統介紹Netty開發和原理的書籍,很完美地填補了這個空白。國內的技術人員對Java NIO和Netty理解多一些,也就意味着國內整體網絡編程技術的進步。本書條理清晰,對技術的闡述循序漸進,是一本難得的Netty學習教材,推薦有志青年仔細學習研究本書,共同把NIO異步通信編程推向一個新高度。

  ——JBoss應用服務器核心開發組成員張建鋒

  經常有很多Java領域的應屆生和程序員來咨詢我我,說自己非常希望找到心儀的工作,但是不知道如何學習和提高。在Java中我覺得比較有挑戰性的技術就是網絡I/O編程和多線程並發編程,而Netty作為企業高性能異步NIO通信的首選框架,在Twitter、Facebook、阿里巴巴等著名公司都得到了應用,學習和掌握它,對於個人的職業和技術發展都極具意義。本書正是一本引領我們由淺入深學習Netty的寶典,非常值得仔細研讀和思考。

  ——並發編程網站長方騰飛

  網絡通信框架Netty已經逐漸成為了構建高可用分布式系統核心組件通信的基礎,它的線程模型、零拷貝和多協議支持也讓從業者們愛不釋手,林鋒兄作為國內NIO領域和Netty框架研究最早、水平最高的架構師之一,在本書中對Netty進行了全面的解析,其中大量的源碼剖析和實戰講解給想學習NIO編程和Netty,進階分布式的同學提出了一些思想或者說指引了前進方向,非常推薦。

  ——1號店資深架構師彭榮新

 

目錄

《netty權威指南》

基礎篇 走進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源碼分析 31

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源碼分析 52

2.4.3 aio版本時間服務器運行結果 56

2.5 4種i/o的對比 58

2.5.1 概念澄清 58

2.5.2 不同i/o模型對比 60

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 總結 78

第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粘包問題 88

4.3.1 支持tcp粘包的timeserver 88

4.3.2 支持tcp粘包的timeclient 90

4.3.3 運行支持tcp粘包的時間服務器程序 93

4.3.4 linebasedframedecoder和stringdecoder的原理分析 98

4.4 總結 99

第5章 分隔符和定長解碼器的應用 100

5.1 delimiterbasedframedecoder應用開發 101

5.1.1 delimiterbasedframedecoder服務端開發 101

5.1.2 delimiterbasedframedecoder客戶端開發 104

5.1.3 運行delimiterbasedframedecoder服務端和客戶端 106

5.2 fixedlengthframedecoder應用開發 108

5.2.1 fixedlengthframedecoder服務端開發 108

5.2.2 利用telnet命令行測試echoserver服務端 110

5.3 總結 111

中級篇 netty編解碼開發指南

第6章 編解碼技術 114

6.1 java序列化的缺點 115

6.1.1 無法跨語言 115

6.1.2 序列化后的碼流太大 115

6.1.3 序列化性能太低 118

6.2 業界主流的編解碼框架 121

6.2.1 google的protobuf介紹 121

6.2.2 facebook的thrift介紹 123

6.2.3 jboss marshalling介紹 124

6.3 總結 125

第7章 java序列化 126

7.1 netty java序列化服務端開發 126

7.2 java序列化netty客戶端開發 132

7.3 運行結果 135

7.4 總結 137

第8章 google protobuf編解碼 138

8.1 protobuf的入門 139

8.1.1 protobuf開發環境搭建 139

8.1.2 protobuf編解碼開發 141

8.1.3 運行protobuf例程 143

8.2 netty的protobuf服務端開發 143

8.2.1 protobuf版本的圖書訂購服務端開發 144

8.2.2 protobuf版本的圖書訂購客戶端開發 146

8.2.3 protobuf版本的圖書訂購程序功能測試 149

8.3 protobuf的使用注意事項 152

8.4 總結 153

第9章 jboss marshalling編解碼 154

9.1 marshalling開發環境准備 154

9.2 netty的marshalling服務端開發 155

9.3 netty的marshalling客戶端開發 158

9.4 運行marshalling客戶端和服務端例程 160

9.5 總結 162

高級篇 netty多協議開發和應用

第10章 http協議開發應用 164

10.1 http協議介紹 165

10.1.1 http協議的url 165

10.1.2 http請求消息(httprequest) 165

10.1.3 http響應消息(httpresponse) 168

10.2 netty http服務端入門開發 169

10.2.1 http服務端例程場景描述 170

10.2.2 http服務端開發 170

10.2.3 netty http文件服務器例程運行結果 178

10.3 netty http+xml協議棧開發 182

10.3.1 開發場景介紹 183

10.3.2 http+xml協議棧設計 186

10.3.3 高效的xml綁定框架jibx 187

10.3.4 http+xml編解碼框架開發 195

10.3.5 http+xml協議棧測試 211

10.3.6 小結 213

10.4 總結 214

第11章 websocket協議開發 215

11.1 http協議的弊端 216

11.2 websocket入門 216

11.2.1 websocket背景 217

11.2.2 websocket連接建立 218

11.2.3 websocket生命周期 219

11.2.4 websocket連接關閉 220

11.3 netty websocket協議開發 221

11.3.1 websocket服務端功能介紹 221

11.3.2 websocket服務端開發 222

11.3.3 運行websocket服務端 230

11.4 總結 231

第12章 udp協議開發 233

12.1 udp協議簡介 234

12.2 udp服務端開發 235

12.3 udp客戶端開發 238

12.4 運行udp例程 240

12.5 總結 241

第13章 文件傳輸 242

13.1 文件的基礎知識 243

13.1.1 文件的概念 243

13.1.2 文件路徑 243

13.1.3 文件名稱 244

13.1.4 filechannel簡介 244

13.2 netty文件傳輸開發 245

13.3 運行netty文件傳輸服務例程 248

13.4 總結 250

第14章 私有協議棧開發 251

14.1 私有協議介紹 251

14.2 netty協議棧功能設計 253

14.2.1 網絡拓撲圖 253

14.2.2 協議棧功能描述 254

14.2.3 通信模型 254

14.2.4 消息定義 255

14.2.5 netty協議支持的字段類型 256

14.2.6 netty協議的編解碼規范 257

14.2.7 鏈路的建立 259

14.2.8 鏈路的關閉 260

14.2.9 可靠性設計 260

14.2.10 安全性設計 262

14.2.11 可擴展性設計 262

14.3 netty協議棧開發 263

14.3.1 數據結構定義 263

14.3.2 消息編解碼 267

14.3.3 握手和安全認證 271

14.3.4 心跳檢測機制 275

14.3.5 斷連重連 278

14.3.6 客戶端代碼 279

14.3.7 服務端代碼 281

14.4 運行協議棧 282

14.4.1 正常場景 282

14.4.2 異常場景:服務端宕機重啟 283

14.4.3 異常場景:客戶端宕機重啟 286

14.5 總結 286

源碼分析篇 netty功能介紹和源碼分析

第15章 bytebuf和相關輔助類 290

15.1 bytebuf功能說明 290

15.1.1 bytebuf的工作原理 291

15.1.2 bytebuf的功能介紹 296

15.2 bytebuf源碼分析 310

15.2.1 bytebuf的主要類繼承關系 311

15.2.2 abstractbytebuf源碼分析 312

15.2.3 abstractreferencecountedbytebuf源碼分析 321

15.2.4 unpooledheapbytebuf源碼分析 323

15.2.5 pooledbytebuf內存池原理分析 328

15.2.6 pooleddirectbytebuf源碼分析 331

15.3 bytebuf相關的輔助類功能介紹 334

15.3.1 bytebufholder 334

15.3.2 bytebufallocator 335

15.3.3 compositebytebuf 336

15.3.4 bytebufutil 338

15.4 總結 339

第16章 channel和unsafe 340

16.1 channel 功能說明 340

16.1.1 channel的工作原理 341

16.1.2 channel的功能介紹 342

16.2 channel源碼分析 345

16.2.1 channel的主要繼承關系類圖 345

16.2.2 abstractchannel源碼分析 346

16.2.3 abstractniochannel源碼分析 349

16.2.4 abstractniobytechannel源碼分析 352

16.2.5 abstractniomessagechannel源碼分析 356

16.2.6 abstractniomessageserverchannel源碼分析 357

16.2.7 nioserversocketchannel源碼分析 358

16.2.8 niosocketchannel源碼分析 360

16.3 unsafe功能說明 366

16.4 unsafe源碼分析 367

16.4.1 unsafe繼承關系類圖 367

16.4.2 abstractunsafe源碼分析 367

16.4.3 abstractniounsafe源碼分析 377

16.4.4 niobyteunsafe源碼分析 380

16.5 總結 387

第17章 channelpipeline和channelhandler 389

17.1 channelpipeline功能說明 390

17.1.1 channelpipeline的事件處理 390

17.1.2 自定義攔截器 392

17.1.3 構建pipeline 393

17.1.4 channelpipeline的主要特性 394

17.2 channelpipeline源碼分析 394

17.2.1 channelpipeline的類繼承關系圖 394

17.2.2 channelpipeline對channelhandler的管理 394

17.2.3 channelpipeline的inbound事件 397

17.2.4 channelpipeline的outbound事件 398

17.3 channelhandler功能說明 399

17.3.1 channelhandleradapter功能說明 400

17.3.2 bytetomessagedecoder功能說明 400

17.3.3 messagetomessagedecoder功能說明 401

17.3.4 lengthfieldbasedframedecoder功能說明 402

17.3.5 messagetobyteencoder功能說明 405

17.3.6 messagetomessageencoder功能說明 406

17.3.7 lengthfieldprepender功能說明 406

17.4 channelhandler源碼分析 407

17.4.1 channelhandler的類繼承關系圖 407

17.4.2 bytetomessagedecoder源碼分析 408

17.4.3 messagetomessagedecoder源碼分析 411

17.4.4 lengthfieldbasedframedecoder源碼分析 413

17.4.5 messagetobyteencoder源碼分析 417

17.4.6 messagetomessageencoder源碼分析 418

17.4.7 lengthfieldprepender源碼分析 419

17.5 總結 420

第18章 eventloop和eventloopgroup 421

18.1 netty的線程模型 421

18.1.1 reactor單線程模型 422

18.1.2 reactor多線程模型 423

18.1.3 主從reactor多線程模型 424

18.1.4 netty的線程模型 425

18.1.5 最佳實踐 427

18.2 nioeventloop源碼分析 427

18.2.1 nioeventloop設計原理 427

18.2.2 nioeventloop繼承關系類圖 428

18.2.3 nioeventloop 429

18.3 總結 440

第19章 future和promise 441

19.1 future功能 441

19.2 channelfuture源碼分析 446

19.3 promise功能介紹 448

19.4 promise源碼分析 450

19.4.1 promise繼承關系圖 450

19.4.2 defaultpromise 450

19.5 總結 453

架構和行業應用篇 netty高級特性

第20章 java多線程編程在netty中的應用 456

20.1 java內存模型與多線程編程 456

20.1.1 硬件的發展和多任務處理 456

20.1.2 java內存模型 457

20.2 netty的並發編程實踐 459

20.2.1 對共享的可變數據進行正確的同步 459

20.2.2 正確的使用鎖 460

20.2.3 volatile的正確使用 462

20.2.4 cas指令和原子類 465

20.2.5 線程安全類的應用 467

20.2.6 讀寫鎖的應用 470

20.2.7 線程安全性文檔說明 472

20.2.8 不要依賴線程優先級 473

20.3 總結 474

第21章 netty架構剖析 475

21.1 netty邏輯架構 475

21.1.1 reactor通信調度層 476

21.1.2 職責鏈channelpipeline 476

21.1.3 業務邏輯編排層(service channelhandler) 477

21.2 關鍵架構質量屬性 477

21.2.1 高性能 477

21.2.2 可靠性 480

21.2.3 可定制性 483

21.2.4 可擴展性 483

21.3 總結 483

第22章 netty行業應用 484

22.1 netty在互聯網行業的應用 485

22.1.1 傳統垂直架構面臨的問題 485

22.1.2 阿里分布式服務框架dubbo 485

22.1.3 dubbo的架構介紹 487

22.1.4 netty在dubbo中的應用 489

22.1.5 dubbo框架集成netty源碼分析 491

22.2 netty在大數據領域的應用 496

22.3 netty在游戲行業的應用 497

22.3.1 游戲服務端架構介紹 498

22.3.2 netty在游戲服務端的應用 501

22.4 總結 502

第23章 netty未來展望 503

23.1 應用范圍 503

23.2 技術演進 504

23.3 社區活躍度 504

23.4 road map 504

23.5 總結 505

附錄a netty參數配置表 506

 

 

本圖書信息來源:互動出版網

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM