Netty權威指南

Netty權威指南(異步非阻塞通訊領域的經典之做,國內首本深刻剖析Netty的著做,全面系統講解原理、實戰和源碼,帶你完美進階Netty工程師。程序員

李林鋒 著   編程

ISBN 978-7-121-23343-2安全

2014年6月出版服務器

訂價:79.00元 微信

524網絡

16數據結構

編輯推薦多線程

- 資深一線專家誠意之做,總結多年實踐經驗,帶你全面掌握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權威指南》,可以熟悉和掌握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

做者簡介

李林鋒:Netty中國推廣者,現華爲技術有限公司平臺中間件架構與設計部設計師,公司總裁技術創新獎得到者。長期從事高性能通訊軟件的架構設計和開發工做,有多年在NIO領域的設計、開發和運維經驗,精通NIO編程和Netty、Mina等主流NIO框架。

媒體評論

與林鋒兄相識甚早,他在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號店資深架構師彭榮新

前言

大約在2008年的時候,我參與設計和開發的一個電信系統在月初出賬期,老是發生大量的鏈接超時和讀寫超時異常,業務的失敗率相比於平時高了不少,報表中的不少指標都差強人意。後來通過排查,發現問題的主要緣由出如今下游網元的處理性能上,月初的時候BSS出賬,在出賬期間BSS系統運行緩慢,因爲雙方採用了同步阻塞式的HTTP+XML進行通訊,致使任何一方處理緩慢都會影響對方的處理性能。按照故障隔離的設計原則,對方處理速度慢或者不迴應答,不該該影響系統的其餘功能模塊或者協議棧,可是在同步阻塞I/O通訊模型下,這種故障傳播和相互影響是不可避免的,很難經過業務層面解決。

受限於當時Tomcat和Servlet的同步阻塞I/O模型,以及在Java領域異步HTTP協議棧的技術積累不足,當時咱們並無辦法徹底解決這個問題,只能經過調整線程池策略和HTTP超時時間來從業務層面作規避。

2009年,因爲對技術的熱愛,我做爲業務骨幹被領導派去參加一個重點業務平臺的研發工做,與兩位資深的架構師(其中一位工做20年,作華爲交換機出身)共同參與。這是我第一次全面接觸異步I/O編程和高性能電信級協議棧的開發,眼界大開——異步高性能內部協議棧、異步HTTP、異步SOAP、異步SMPP……全部的協議棧都是異步非阻塞。後來的性能測試代表:基於Reactor模型統一調度的長鏈接和短鏈接協議棧,不管是性能、可靠性仍是可維護性,均可以「秒殺」傳統基於BIO開發的應用服務器和各類協議棧,這種差別本質上是一種代差。

在我從事異步NIO編程的2009年,業界尚未成熟的NIO框架,那個時候Mina剛剛開始起步,功能和性能都達不到商用標準。最困難的是,國內Java領域的異步通訊尚未流行,整個業界的積累都很是少。那個時候資料匱乏,可以交流和探討的圈內人不多,一旦踩住「地雷」,就須要夜以繼日地維護。在隨後2年多的時間裏,經歷了10屢次的在通宵、凌晨被一線的運維人員電話吵醒等種種磨難以後,咱們自研的NIO框架才逐漸穩定和成熟。期間,解決的BUG總計20~30個。

從2004年JDK1.4首次提供NIO 1.0類庫到如今,已通過去了整整10年。JSR 51的設計初衷就是讓Java可以提供非阻塞、具備彈性伸縮能力的異步I/O類庫,從而結束Java在高性能服務器領域的不利地位。然而,在至關長的一段時間裏,Java的NIO編程並無流行起來,究其緣由以下。

1. 大多數高性能服務器,被C和C++語言盤踞,因爲它們能夠直接使用操做系統的異步I/O能力,因此對JDK的NIO並不關心;

2. 移動互聯網還沒有興起,基於Java的大規模分佈式系統極少,不少中小型應用服務對於異步I/O的訴求不是很強烈;

3. 高性能、高可靠性領域,例如銀行、證券、電信等依然以C++爲主導,Java充當打雜的角色,NIO暫時沒有用武之地;

4. 當時主流的J2EE服務器,幾乎所有基於同步阻塞I/O構建,例如Servlet、Tomcat等,因爲它們應用普遍,若是這些容器不支持NIO,用戶很難具有獨立構建異步協議棧的能力;

5. 異步NIO編程門檻比較高,開發和維護一款基於NIO的協議棧對不少中小型公司來講像是一場噩夢;

6. 業界NIO框架不成熟,很難商用;

7. 國內研發界對NIO的陌生和認識不足,沒有充分重視。

基於上述幾種緣由,NIO編程的推廣和發展長期滯後。值得欣慰的是,隨着大規模分佈式系統、大數據和流式計算框架的興起,基於Java來構建這些系統已經成爲主流,NIO編程和NIO框架在此期間獲得了大規模的商用。在互聯網領域,阿里的分佈式服務框架Dubbo、RocketMQ,大數據的基礎序列化和通訊框架Avro,以及不少開源的軟件都已經開始使用Netty來構建高性能、分佈式通訊能力,Netty社區的活躍度也名列前茅。根據目前的信息,Netty已經在以下幾個領域獲得了大規模的商業應用。

1. 互聯網領域;

2. 電信領域;

3. 大數據領域;

4. 銀行、證券等金融領域;

5. 遊戲行業;

6. 電力等企業市場。

2014年春節前,我分享了一篇博文《Netty5.0架構剖析和源碼解讀》,短短1個月下載量達到了4000多。不少網友向我諮詢NIO編程技術、NIO框架如何選擇等問題,也有一些圈內朋友和出版社邀請我寫一本關於Netty的技術書籍。做爲最流行、表現最優異的NIO框架Netty深受你們喜好,可是長期以來除了UserGuide以外,國內鮮有Netty相關的技術書籍供廣大NIO編程愛好者學習和參考。因爲Netty源碼的複雜性和NIO編程自己的技術門檻限制,對於大多數讀者而言,經過本身閱讀和分析源碼來深刻掌握Netty的設計原理和實現細節是件困難的事情。從2011年開始我係統性的分析和應用了Netty和Mina,轉瞬間已通過去了3年多。在這3年的時間裏,咱們的系統經受了無數嚴苛的考驗,在這個過程當中,對Netty和Mina有了更深入的體驗,也積累了豐富的運維和實戰經驗。咱們都是開源框架Netty的受益者,爲了讓更多的朋友和同行可以瞭解NIO編程,深刻學習和掌握Netty這個NIO利器,我打算將個人經驗和你們分享,同時也結束國內尚無Netty學習教材的尷尬境地。

內容介紹

本書涵蓋了Netty NIO框架的絕大部分知識點,包括Java I/O的演進歷史、傳統BIO通訊的弊端、Java 4種I/O通訊模型的優缺點對比。以及Netty入門、Netty編解碼框架、文件傳輸、多協議和私有協議棧定製和開發。在源碼分析章節,詳細介紹了ByteBuf、Channel和Unsafe、ChannelPipeline和ChannelHandler、NioEventLoop、ChannelFuture和ChannelPromise的設計原理和源碼分析。在高級應用章節,介紹了Netty的邏輯架構模型、Netty的線程模型和行業應用。最後附錄了Netty啓動配置參數項說明。

聯繫方式

儘管我也有技術潔癖,但願諸事完美,可是因爲Netty代碼的龐雜和涉及到的知識點太多,一本書籍很難涵蓋全部的功能點。若有遺漏或者錯誤,懇請你們可以及時批評和指正,若是你有好的建議或者想法,也能夠聯繫我。個人聯繫方式以下:郵箱: neu_lilinfeng@sina.com  新浪微博: Nettying微信:Nettying。

致謝

若是說我的可以改變本身命運的話,對於程序員來講,惟有經過不斷的學習和實踐,努力提高本身的技能,纔有可能找到更好的機會,充分發揮和體現本身的價值。我但願本書可以爲你的成功助一臂之力。

感謝博文視點的策劃編輯丁一瓊和幕後的美編,正是大家的辛苦工做才保證了本書可以順利出版;感謝華爲Netty愛好者和關注本書的領導同事們的支持,大家的理解和鼓勵爲我提供了足夠的勇氣。感謝個人家人和老婆的支持,寫書佔用了我幾乎全部的業餘時間,沒有大家的理解和支持,我很難安心寫做。

最後感謝Netty中國社區的朋友,個人微博粉絲和全部喜歡Netty的朋友們,大家對技術的熱情是鼓勵我寫書的最重要動力,沒有大家,就沒有本書。但願你們一如既往的喜歡NIO編程,喜歡Netty,以及相互交流和分享,共同推進整個國內異步高性能通訊領域的技術發展。

李林鋒  5月11日於南京紫軒閣

 

相關文章
相關標籤/搜索