Netty是一款用於快速開發高性能的網絡應用程序的Java框架。它封裝了網絡編程的複雜性,使網絡編程和Web技術的最新進展可以被比以往更普遍的開發人員接觸到。編程
Netty不僅是一個接口和類的集合;它還定義了一種架構模型以及一套豐富的設計模式。可是直到如今,依然缺少一個全面的、系統性的用戶指南,已經成爲入門Netty的一個障礙。設計模式
面對這種狀況特地給你們分享一波阿里P8費心整理Netty實戰+指南+項目白皮書技術文檔,但願你們可以喜歡!!!服務器
Netty實戰:共分4個部分
本文是爲想要或者正在使用Java從事高性能網絡編程的人而寫的,按部就班地介紹了Netty各個方面的內容。網絡
第一部分:Netty的概念及體系結構架構
第一部分是對框架的詳細介紹,涵蓋了它的設計、組件以及編程接口。併發
第1章首先簡要概述了阻塞和非阻塞的網絡API,以及它們對應的JDK接口。咱們引入Netty做爲構建高度可伸縮的、異步的、事件驅動的網絡編程應用的工具包。咱們將首先看一下該框架的基礎構件塊: Channel、 回調、Future、 事件及ChannelHandler。框架
第2章解釋瞭如何配置讀者的系統以構建並運行本書中的示例代碼。咱們將用一個簡單的應閱讀本文不須要讀者精通Java網絡和併發編程。若是想要更加深刻地理解本文背後的理念以及Netty源碼自己,能夠系統地學習一下Java網絡編程、NIO、併發和異步編程以及相關的設計模式。異步
用程序來測試它,這是一-個回送從鏈接的客戶端接收到的消息的服務器應用程序。咱們還介紹了分佈式
引導( Bootstrap)一在運行時組裝 和配置- - 個應用程序的全部組件的過程。ide
第3章首先討論了Netty 的技術以及體系結構方面的內容。介紹了該框架的核心組件:Channel、EventLoop、 Channe1Handler以及ChannelPipeline。這一-章的最後解釋了引導服務器和客戶端之間的差別。
第4章討論了網絡傳輸,而且對比了經過JDK API和Netty使用阻塞和非阻塞傳輸的用法。咱們研究了Netty的傳輸API的底層接口的層級關係以及它們所支持的傳輸類型。
第5章專門介紹了該框架的數據處理API一ByteBuf, Netty 的字節容器。咱們描述了它相對於JDK的ByteBuffer的優點,以及如何分配和訪問由ByteBuf所使用的內存。咱們展現瞭如何經過引用計數來管理內存資源。
第6章重點介紹了核心組件Channel Handler和ChannelPipeline,它們負責調度應用程序的處理邏輯,並驅動數據和事件通過網絡層。其餘的主題包括在實現高級用例時ChannelHandlerContext的角色,以及在多個ChannelPipeline之間共享ChannelHandler的原因。這一-章的最後說明了如何處理由人站事件和出站事件所觸發的異常。
第7章提供了關於線程模型的- -般概述,並詳細地介紹了Netty的線程模型。咱們研究了interface EventLoop,它是Netty 的併發API的主要部分,並解釋了它和線程以及Channel的關係。這個信息對於理解Netty是如何實現異步的、事件驅動的網絡編程模型來講相當重要。咱們展現瞭如何經過EventLoop進行任務調度。
第8章以介紹Bootstrap類的層級結構做爲引子,深人地講解了引導。咱們從新審視了一些基本用例以及-些特殊用例,例如,在- -個服務器應用程序中引導-個客戶 端鏈接、引導數據報Channel,以及在引導的過程當中添加多個Channe1Handler。這一章最後討論瞭如何優雅地關閉應用程序並有序地釋放全部的資源。
第9章是關於對ChannelHandler進行單元測試的討論,對此Netty 提供了一個特殊的Channel實現一EmbeddedChannel。 本章的示例展現瞭如何使用這個類和JUnit 一塊兒來測試人站和出站ChannelHandler實現。
第二部分:編解碼器
數據轉換是網絡編程中最多見的操做之一。第二部分介紹了Netty 提供的用於簡化這一任務的豐富的工具集。
第10章首先解釋瞭解碼器和編碼器,它們將字節序列從一種格式轉換爲另一種格式。一個無處不在的例子即是將--個非結構化的字節流轉換爲--個特定於協議的佈局結構,或者相反的。編解碼器則是一個結合了編碼器以及解碼器以處理雙向轉換的組件。咱們提供了幾個例子,展現了經過Netty的編解碼器框架類建立自定義的解碼器以及編碼器是多麼地容易。
第11章研究了Netty提供的用於各類用例的編解碼器以及ChannelHandler。這些類包括用於協議的(如SSL/TLS、HTTP/HTTPS、WebSocket 以及SPDY )即用型的編解碼器,以及可以經過擴展來處理幾乎任意的基於分隔符的協議、變長協議或者定長協議的解碼器。這一章的最後介紹了用於寫人大型數據的和用於序列化的框架組件。
第三部分:網絡協議
第三部分詳細闡述了幾種本書前面簡要介紹過的網絡協議。咱們將會再次看到Netty是如何使你能在本身的應用程序中輕鬆採用複雜的API,而又沒必要關心其內部複雜性的。
第12章展現瞭如何使用WebSocket協議來實現Web服務器和客戶端之間的雙向通訊。示例程序是一個聊天室服務器,其容許全部已鏈接的用戶與其餘已鏈接的用戶進行實時通訊。
第13章經過利用了用戶數據報協議(UDP)的廣播能力的服務器和客戶端應用程序,說明了Netty 對於無鏈接協議的支持。如同前面的那些示例-樣,咱們使用了一組特定於協議的支持類: DatagramPacket和NioDatagr amChannel。
第四部分:案例研究
第四部分介紹了由使用Netty實現了任務關鍵型系統的知名公司提交的5份案例研究。這些案例不只說明了咱們在整本書中所討論過的框架各個組件在現實世界中的應用,並且還演示了Netty的設計以及架構原則,在構建高度可伸縮和可擴展的應用程序方面的應用。
第14章有Droplr、Firebase 以及Urban Airship提交的案例研究。
第15章有Facebook和Twitter提交的案例研究。
本文是異步非阻塞通訊領域的經典之做,基於最新版本Netty 5.0 編寫,是國內首本深刻介紹Netty原理和架構的技術文檔,也是做者多年實戰經驗的總結和濃縮。
內容包含基礎功能、高級應用、系統架構、源碼分析和行業應用,深刻闡述了Java 1/O 的Netty NIO開發、Netty 編解碼開發、Netty多協議開發等各方面的技術要點,包含了對源碼的深入解讀,而且對Netty的應用現狀和將來趨勢進行分析,旨在幫助從業人員提高自我,更快更明確地發展職業道路。
本文適合架構師、設計師、軟件開發工程師、測試人員和其餘對JavaNIO框架、Java通訊感興趣的相關人士閱讀,相信經過學習本書,可以熟悉和掌握Netty這一優秀的異步通訊框架,實現高可用分佈式系統的構建。
須要的小夥伴能夠轉發關注小編,↓↓↓↓