前言
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)一在运行时组装 和配置- - 个应用程序的所有组件的过程。
第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权威指南
本文是异步非阻塞通信领域的经典之作,基于最新版本Netty 5.0 编写,是国内首本深入介绍Netty原理和架构的技术文档,也是作者多年实战经验的总结和浓缩。
内容包含基础功能、高级应用、系统架构、源码分析和行业应用,深入阐述了Java 1/O 的Netty NIO开发、Netty 编解码开发、Netty多协议开发等各方面的技术要点,包含了对源码的深刻解读,并且对Netty的应用现状和未来趋势进行分析,旨在帮助从业人员提升自我,更快更明确地发展职业道路。
本文适合架构师、设计师、软件开发工程师、测试人员和其他对JavaNIO框架、Java通信感兴趣的相关人士阅读,相信通过学习本书,能够熟悉和掌握Netty这一优秀的异步通信框架,实现高可用分布式系统的构建。
Netty项目白皮书
Netty实战+项目白皮书+视频
需要的小伙伴可以转发关注小编,↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓