精品为您呈现,快乐和您分享!

移动端

收藏本站

网站首页 > 电脑应用 > 教育教学 > 电子阅读
netty权威指南 第二版

netty权威指南 第二版

大小:97.22M 语言:简体中文

授权:免费软件 区域:国产软件 时间:2024-12-11

平台:Windows10,Windows8,Windows7,WinVista,Win2003,WinXP,Win2000

推荐指数:

应用简介

netty权威指南 第二版是一本Netty架构学习指南,由李林锋编著。本书深入剖析了Netty,更全面系统讲解底层架构、实践与源码,能够让读者更清晰地理解Netty 架构设计理念,第2版增加了MessagePack 编解码、服务端创建、客户端创建、高性能之道、可靠性、安全性等内容,内容更精彩,非常适合架构师、设计师、软件开发工程师、测试人员以及其他对Java NIO 框架、Netty 感兴趣的相关人士阅读。通过阅读netty权威指南 第二版,读者不仅能够掌握Netty基础功能的使用和开发,更能够掌握Netty核心类库的原理和使用约束,从而在实际工作中更好地使用Netty。

内容介绍

《netty权威指南 第二版》是异步非阻塞通信领域的经典之作,基于全新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。

第2 版的主要变更如下,删除第1 版中的如下章节:

第7 章:Java 序列化;

第12 章:UDP 协议开发;

第13 章:文件传输;

第22 章:Netty 行业应用。

新增本书中的如下章节:

第7 章:MessagePack 编解码;

第13 章:服务端创建;

第14 章:客户端创建;

第22 章:高性能之道;

第23 章:可靠性;

第24 章:安全性。

章节目录

基础篇 走进Java NIO第1 章 Java 的I/O 演进之路......21.1 I/O 基础入门......31.1.1 Linux 网络I/O 模型简介......31.1.2 I/O 多路复用技术......61.2 Java 的I/O 演进......81.3 总结...... 10第2 章 NIO 入门...... 112.1 传统的BIO 编程...... 112.1.1 BIO 通信模型图...... 122.1.2 同步阻塞式I/O 创建的TimeServer 源码分析...... 132.1.3 同步阻塞式I/O 创建的TimeClient 源码分析...... 162.2 伪异步I/O 编程...... 182.2.1 伪异步I/O 模型图...... 192.2.2 伪异步I/O 创建的TimeServer 源码分析...... 192.2.3 伪异步I/O 弊端分析...... 212.3 NIO 编程...... 242.3.1 NIO 类库简介...... 242.3.2 NIO 服务端序列图...... 282.3.3 NIO 创建的TimeServer 源码分析...... 302.3.4 NIO 客户端序列图...... 362.3.5 NIO 创建的TimeClient 源码分析...... 392.4 AIO 编程...... 452.4.1 AIO 创建的TimeServer 源码分析...... 462.4.2 AIO 创建的TimeClient 源码分析...... 512.4.3 AIO 版本时间服务器运行结果...... 562.5 4 种I/O 的对比...... 582.5.1 概念澄清...... 582.5.2 不同I/O 模型对比...... 592.6 选择Netty 的理由...... 602.6.1 不选择Java 原生NIO 编程的原因...... 612.6.2 为什么选择Netty ...... 622.7 总结...... 63入门篇 Netty NIO 开发指南第3 章 Netty 入门应用...... 663.1 Netty 开发环境的搭建...... 663.1.1 下载Netty 的软件包...... 673.1.2 搭建Netty 应用工程...... 673.2 Netty 服务端开发...... 683.3 Netty 客户端开发...... 733.4 运行和调试...... 763.4.1 服务端和客户端的运行...... 763.4.2 打包和部署...... 773.5 总结...... 77第4 章 TCP 粘包/拆包问题的解决之道...... 794.1 TCP 粘包/拆包...... 794.1.1 TCP 粘包/拆包问题说明...... 804.1.2 TCP 粘包/拆包发生的原因...... 804.1.3 粘包问题的解决策略...... 814.2 未考虑TCP 粘包导致功能异常案例...... 824.2.1 TimeServer 的改造...... 824.2.2 TimeClient 的改造...... 834.2.3 运行结果...... 844.3 利用LineBasedFrameDecoder 解决TCP 粘包问题...... 854.3.1 支持TCP 粘包的TimeServer ...... 864.3.2 支持TCP 粘包的TimeClient...... 884.3.3 运行支持TCP 粘包的时间服务器程序...... 904.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析...... 914.4 总结...... 92第5 章 分隔符和定长解码器的应用...... 935.1 DelimiterBasedFrameDecoder 应用开发...... 945.1.1 DelimiterBasedFrameDecoder 服务端开发...... 945.1.2 DelimiterBasedFrameDecoder 客户端开发...... 975.1.3 运行DelimiterBasedFrameDecoder 服务端和客户端...... 995.2 FixedLengthFrameDecoder 应用开发...... 1015.2.1 FixedLengthFrameDecoder 服务端开发...... 1015.2.2 利用telnet 命令行测试EchoServer 服务端...... 1035.3 总结...... 104中级篇 Netty 编解码开发指南第6 章 编解码技术...... 1066.1 Java 序列化的缺点...... 1076.1.1 法跨语言...... 1076.1.2 序列化后的码流太大...... 1076.1.3 序列化性能太低...... 1106.2 业界主流的编解码框架...... 1136.2.1 Google 的Protobuf 介绍...... 1136.2.2 Thrift 介绍...... 1156.2.3 JBoss Marshalling 介绍...... 1166.3 总结...... 117第7 章 MessagePack 编解码...... 1187.1 MessagePack 介绍...... 1187.1.1 MessagePack 多语言支持...... 1197.1.2 MessagePack Java API 介绍...... 1197.1.3 MessagePack 开发包下载...... 1207.2 MessagePack 编码器和解码器开发...... 1207.2.1 MessagePack 编码器开发...... 1207.2.2 MessagePack 解码器开发...... 1217.2.3 功能测试...... 1217.3 粘包/半包支持...... 1247.4 总结...... 127第8 章 Google Protobuf 编解码...... 1288.1 Protobuf 的入门...... 1298.1.1 Protobuf 开发环境搭建...... 1298.1.2 Protobuf 编解码开发...... 1318.1.3 运行Protobuf 例程...... 1338.2 Netty 的Protobuf 服务端开发...... 1338.2.1 Protobuf 版本的图书订购服务端开发...... 1348.2.2 Protobuf 版本的图书订购客户端开发...... 1368.2.3 Protobuf 版本的图书订购程序功能测试...... 1398.3 Protobuf 的使用注意事项...... 1408.4 总结...... 142第9 章 JBoss Marshalling 编解码...... 1439.1 Marshalling 开发环境准备...... 1439.2 Netty 的Marshalling 服务端开发...... 1449.3 Netty 的Marshalling 客户端开发...... 1479.4 运行Marshalling 客户端和服务端例程...... 1499.5 总结...... 150高级篇 Netty 多协议开发和应用第10 章 HTTP 协议开发应用...... 15410.1 HTTP 协议介绍...... 15510.1.1 HTTP 协议的URL ...... 15510.1.2 HTTP 请求消息(HttpRequest)...... 15510.1.3 HTTP 响应消息(HttpResponse) ...... 15810.2 Netty HTTP 服务端入门开发...... 15910.2.1 HTTP 服务端例程场景描述...... 16010.2.2 HTTP 服务端开发...... 16010.2.3 Netty HTTP 文件服务器例程运行结果...... 16610.3 Netty HTTP+XML 协议栈开发...... 17010.3.1 开发场景介绍...... 17110.3.2 HTTP+XML 协议栈设计...... 17410.3.3 高效的XML 绑定框架JiBx ...... 17510.3.4 HTTP+XML 编解码框架开发...... 18310.3.5 HTTP+XML 协议栈测试...... 19910.3.6 小结...... 20110.4 总结...... 202第11 章 WebSocket 协议开发...... 20311.1 HTTP 协议的弊端...... 20411.2 WebSocket 入门...... 20411.2.1 WebSocket 背景...... 20511.2.2 WebSocket 连接建立...... 20611.2.3 WebSocket 生命周期...... 20711.2.4 WebSocket 连接关闭...... 20811.3 Netty WebSocket 协议开发...... 20911.3.1 WebSocket 服务端功能介绍...... 20911.3.2 WebSocket 服务端开发...... 21011.3.3 运行WebSocket 服务端...... 21811.4 总结...... 219第12 章 私有协议栈开发...... 22112.1 私有协议介绍...... 22112.2 Netty 协议栈功能设计...... 22312.2.1 网络拓扑图...... 22312.2.2 协议栈功能描述...... 22412.2.3 通信模型...... 22412.2.4 消息定义...... 22512.2.5 Netty 协议支持的字段类型...... 22612.2.6 Netty 协议的编解码规范...... 22712.2.7 链路的建立...... 22912.2.8 链路的关闭...... 23012.2.9 可靠性设计...... 23012.2.10 安全性设计...... 23212.2.11 可扩展性设计...... 23212.3 Netty 协议栈开发...... 23312.3.1 数据结构定义...... 23312.3.2 消息编解码...... 23712.3.3 握手和安全认证...... 24112.3.4 心跳检测机制...... 24512.3.5 断连重连...... 24812.3.6 客户端代码...... 24912.3.7 服务端代码...... 25112.4 运行协议栈...... 25212.4.1 正常场景...... 25212.4.2 异常场景:服务端宕机重启...... 25312.4.3 异常场景:客户端宕机重启...... 25612.5 总结...... 256第13 章 服务端创建...... 25813.1 原生NIO 类库的复杂性...... 25913.2 Netty 服务端创建源码分析...... 25913.2.1 Netty 服务端创建时序图...... 26013.2.2 Netty 服务端创建源码分析...... 26313.3 客户端接入源码分析...... 27213.4 总结...... 275第14 章 客户端创建...... 27614.1 Netty 客户端创建流程分析...... 27614.2.1 Netty 客户端创建时序图...... 27614.2.2 Netty 客户端创建流程分析...... 27714.2 Netty 客户端创建源码分析...... 27814.2.1 客户端连接辅助类Bootstrap...... 27814.2.2 客户端连接操作...... 28114.2.3 异步连接结果通知...... 28314.2.4 客户端连接超时机制...... 28414.3 总结...... 286源码分析篇 Netty 功能介绍和源码分析第15 章 ByteBuf 和相关辅助类...... 28815.1 ByteBuf 功能说明...... 28815.1.1 ByteBuf 的工作原理...... 28915.1.2 ByteBuf 的功能介绍...... 29415.2 ByteBuf 源码分析...... 30815.2.1 ByteBuf 的主要类继承关系...... 30915.2.2 AbstractByteBuf 源码分析...... 31015.2.3 AbstractReferenceCountedByteBuf 源码分析...... 31915.2.4 UnpooledHeapByteBuf 源码分析...... 32115.2.5 PooledByteBuf 内存池原理分析...... 32615.2.6 PooledDirectByteBuf 源码分析...... 32915.3 ByteBuf 相关的辅助类功能介绍...... 33215.3.1 ByteBufHolder...... 33215.3.2 ByteBufAllocator ...... 33315.3.3 CompositeByteBuf ...... 33415.3.4 ByteBufUtil ...... 33615.4 总结...... 337第16 章 Channel 和Unsafe ...... 33816.1 Channel 功能说明...... 33816.1.1 Channel 的工作原理...... 33916.1.2 Channel 的功能介绍...... 34016.2 Channel 源码分析...... 34316.2.1 Channel 的主要继承关系类图...... 34316.2.2 AbstractChannel 源码分析...... 34416.2.3 AbstractNioChannel 源码分析...... 34716.2.4 AbstractNioByteChannel 源码分析...... 35016.2.5 AbstractNioMessageChannel 源码分析...... 35316.2.6 AbstractNioMessageServerChannel 源码分析...... 35416.2.7 NioServerSocketChannel 源码分析...... 35516.2.8 NioSocketChannel 源码分析...... 35816.3 Unsafe 功能说明...... 36416.4 Unsafe 源码分析...... 36516.4.1 Unsafe 继承关系类图...... 36516.4.2 AbstractUnsafe 源码分析...... 36616.4.3 AbstractNioUnsafe 源码分析...... 37516.4.4 NioByteUnsafe 源码分析...... 37916.5 总结...... 387第17 章 ChannelPipeline 和ChannelHandler...... 38817.1 ChannelPipeline 功能说明...... 38917.1.1 ChannelPipeline 的事件处理...... 38917.1.2 自定义拦截器...... 39117.1.3 构建pipeline ...... 39217.1.4 ChannelPipeline 的主要特性...... 39317.2 ChannelPipeline 源码分析...... 39317.2.1 ChannelPipeline 的类继承关系图...... 39317.2.2 ChannelPipeline 对ChannelHandler 的管理...... 39317.2.3 ChannelPipeline 的inbound 事件...... 39617.2.4 ChannelPipeline 的outbound 事件...... 39717.3 ChannelHandler 功能说明...... 39817.3.1 ChannelHandlerAdapter 功能说明...... 39917.3.2 ByteToMessageDecoder 功能说明...... 39917.3.3 MessageToMessageDecoder 功能说明...... 40017.3.4 LengthFieldBasedFrameDecoder 功能说明...... 40017.3.5 MessageToByteEncoder 功能说明...... 40417.3.6 MessageToMessageEncoder 功能说明...... 40417.3.7 LengthFieldPrepender 功能说明...... 40517.4 ChannelHandler 源码分析...... 40617.4.1 ChannelHandler 的类继承关系图...... 40617.4.2 ByteToMessageDecoder 源码分析...... 40717.4.3 MessageToMessageDecoder 源码分析...... 41017.4.4 LengthFieldBasedFrameDecoder 源码分析...... 41117.4.5 MessageToByteEncoder 源码分析...... 41517.4.6 MessageToMessageEncoder 源码分析...... 41617.4.7 LengthFieldPrepender 源码分析...... 41717.5 总结...... 418第18 章 EventLoop 和EventLoopGroup...... 41918.1 Netty 的线程模型...... 41918.1.1 Reactor 单线程模型...... 42018.1.2 Reactor 多线程模型...... 42118.1.3 主从Reactor 多线程模型...... 42218.1.4 Netty 的线程模型...... 42318.1.5 最佳实践...... 42418.2 NioEventLoop 源码分析...... 42518.2.1 NioEventLoop 设计原理...... 42518.2.2 NioEventLoop 继承关系类图...... 42618.2.3 NioEventLoop...... 42718.3 总结...... 436第19 章 Future 和Promise ...... 43819.1 Future 功能...... 43819.2 ChannelFuture 源码分析...... 44319.3 Promise 功能介绍...... 44519.4 Promise 源码分析...... 44719.4.1 Promise 继承关系图...... 44719.4.2 DefaultPromise ...... 44719.5 总结...... 449架构和行业应用篇 Netty 高级特性第20 章 Netty 架构剖析...... 45220.1 Netty 逻辑架构...... 45220.1.1 Reactor 通信调度层...... 45320.1.2 职责链ChannelPipeline ...... 45320.1.3 业务逻辑编排层(Service ChannelHandler)...... 45420.2 关键架构质量属性...... 45420.2.1 高性能...... 45420.2.2 可靠性...... 45720.2.3 可定制性...... 46020.2.4 可扩展性...... 46020.3 总结...... 460第21 章 Java 多线程编程在Netty 中的应用...... 46121.1 Java 内存模型与多线程编程...... 46121.1.1 硬件的发展和多任务处理...... 46121.1.2 Java 内存模型...... 46221.2 Netty 的并发编程实践...... 46421.2.1 对共享的可变数据进行正确的同步...... 46421.2.2 正确使用锁...... 46521.2.3 volatile 的正确使用...... 46721.2.4 CAS 指令和原子类...... 47021.2.5 线程安全类的应用...... 47221.2.6 读写锁的应用...... 47621.2.7 线程安全性文档说明...... 47721.2.8 不要依赖线程优先级...... 47821.3 总结...... 479第22 章 高性能之道...... 48022.1 RPC 调用性能模型分析...... 48022.1.1 传统RPC 调用性能差的三宗罪...... 48022.1.2 I/O 通信性能三原则...... 48122.2 Netty 高性能之道...... 48222.2.1 异步非阻塞通信...... 48222.2.2 高效的Reactor 线程模型...... 48222.2.3 锁化的串行设计...... 48522.2.4 高效的并发编程...... 48622.2.5 高性能的序列化框架...... 48622.2.6 零拷贝...... 48722.2.7 内存池...... 49122.2.8 灵活的TCP 参数配置能力...... 49422.3 主流NIO 框架性能对比...... 49522.4 总结...... 497第23 章 可靠性...... 49823.1 可靠性需求...... 49823.1.1 宕机的代价...... 49823.1.2 Netty 可靠性需求...... 49923.2 Netty 高可靠性设计...... 50023.2.1 网络通信类故障...... 50023.2.2 链路的有效性检测...... 50723.2.3 Reactor 线程的保护...... 51023.2.4 内存保护...... 51323.2.5 流量整形...... 51623.2.6 优雅停机接口...... 51923.3 优化建议...... 52023.3.1 发送队列容量上限控制...... 52023.3.2 回推发送失败的消息...... 52123.4 总结...... 521第24 章 安全性...... 52224.1 严峻的安全形势...... 52224.1.1 OpenSSL Heart bleed 漏洞...... 52224.1.2 安全漏洞的代价...... 52324.1.3 Netty 面临的安全风险...... 52324.2 Netty SSL 安全特性...... 52524.2.1 SSL 单向认证...... 52524.2.2 SSL 双向认证...... 53224.2.3 第三方CA 认证...... 53624.3 Netty SSL 源码分析...... 53824.3.1 客户端...... 53824.3.2 服务端...... 54124.3.3 消息读取...... 54424.3.4 消息发送...... 54524.4 Netty 扩展的安全特性...... 54624.4.1 IP 地址黑名单机制...... 54724.4.2 接入认证...... 54824.4 总结...... 550第25 章 Netty 未来展望...... 55125.1 应用范围...... 55125.2 技术演进...... 55225.3 社区活跃度...... 55225.4 Road Map ...... 55225.5 总结...... 553附录A Netty 参数配置表...... 554

使用说明

1、下载并解压,得出pdf文件

2、如果打不开本文件,请务必下载pdf阅读器

3、安装后,在打开解压得出的pdf文件

4、双击进行阅读试读

应用截图