大小:97.22M
更新时间:23-09-10
系统:Pc
版本:v
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 演进之路......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 源码分析...... 30 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 源码分析...... 51 2.4.3 AIO 版本时间服务器运行结果...... 56 2.5 4 种I/O 的对比...... 58 2.5.1 概念澄清...... 58 2.5.2 不同I/O 模型对比...... 59 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 总结...... 77 第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 粘包问题...... 85 4.3.1 支持TCP 粘包的TimeServer ...... 86 4.3.2 支持TCP 粘包的TimeClient...... 88 4.3.3 运行支持TCP 粘包的时间服务器程序...... 90 4.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析...... 91 4.4 总结...... 92 第5 章 分隔符和定长解码器的应用...... 93 5.1 DelimiterBasedFrameDecoder 应用开发...... 94 5.1.1 DelimiterBasedFrameDecoder 服务端开发...... 94 5.1.2 DelimiterBasedFrameDecoder 客户端开发...... 97 5.1.3 运行DelimiterBasedFrameDecoder 服务端和客户端...... 99 5.2 FixedLengthFrameDecoder 应用开发...... 101 5.2.1 FixedLengthFrameDecoder 服务端开发...... 101 5.2.2 利用telnet 命令行测试EchoServer 服务端...... 103 5.3 总结...... 104 中级篇 Netty 编解码开发指南 第6 章 编解码技术...... 106 6.1 Java 序列化的缺点...... 107 6.1.1 法跨语言...... 107 6.1.2 序列化后的码流太大...... 107 6.1.3 序列化性能太低...... 110 6.2 业界主流的编解码框架...... 113 6.2.1 Google 的Protobuf 介绍...... 113 6.2.2 Thrift 介绍...... 115 6.2.3 JBoss Marshalling 介绍...... 116 6.3 总结...... 117 第7 章 MessagePack 编解码...... 118 7.1 MessagePack 介绍...... 118 7.1.1 MessagePack 多语言支持...... 119 7.1.2 MessagePack Java API 介绍...... 119 7.1.3 MessagePack 开发包下载...... 120 7.2 MessagePack 编码器和解码器开发...... 120 7.2.1 MessagePack 编码器开发...... 120 7.2.2 MessagePack 解码器开发...... 121 7.2.3 功能测试...... 121 7.3 粘包/半包支持...... 124 7.4 总结...... 127 第8 章 Google Protobuf 编解码...... 128 8.1 Protobuf 的入门...... 129 8.1.1 Protobuf 开发环境搭建...... 129 8.1.2 Protobuf 编解码开发...... 131 8.1.3 运行Protobuf 例程...... 133 8.2 Netty 的Protobuf 服务端开发...... 133 8.2.1 Protobuf 版本的图书订购服务端开发...... 134 8.2.2 Protobuf 版本的图书订购客户端开发...... 136 8.2.3 Protobuf 版本的图书订购程序功能测试...... 139 8.3 Protobuf 的使用注意事项...... 140 8.4 总结...... 142 第9 章 JBoss Marshalling 编解码...... 143 9.1 Marshalling 开发环境准备...... 143 9.2 Netty 的Marshalling 服务端开发...... 144 9.3 Netty 的Marshalling 客户端开发...... 147 9.4 运行Marshalling 客户端和服务端例程...... 149 9.5 总结...... 150 高级篇 Netty 多协议开发和应用 第10 章 HTTP 协议开发应用...... 154 10.1 HTTP 协议介绍...... 155 10.1.1 HTTP 协议的URL ...... 155 10.1.2 HTTP 请求消息(HttpRequest)...... 155 10.1.3 HTTP 响应消息(HttpResponse) ...... 158 10.2 Netty HTTP 服务端入门开发...... 159 10.2.1 HTTP 服务端例程场景描述...... 160 10.2.2 HTTP 服务端开发...... 160 10.2.3 Netty HTTP 文件服务器例程运行结果...... 166 10.3 Netty HTTP+XML 协议栈开发...... 170 10.3.1 开发场景介绍...... 171 10.3.2 HTTP+XML 协议栈设计...... 174 10.3.3 高效的XML 绑定框架JiBx ...... 175 10.3.4 HTTP+XML 编解码框架开发...... 183 10.3.5 HTTP+XML 协议栈测试...... 199 10.3.6 小结...... 201 10.4 总结...... 202 第11 章 WebSocket 协议开发...... 203 11.1 HTTP 协议的弊端...... 204 11.2 WebSocket 入门...... 204 11.2.1 WebSocket 背景...... 205 11.2.2 WebSocket 连接建立...... 206 11.2.3 WebSocket 生命周期...... 207 11.2.4 WebSocket 连接关闭...... 208 11.3 Netty WebSocket 协议开发...... 209 11.3.1 WebSocket 服务端功能介绍...... 209 11.3.2 WebSocket 服务端开发...... 210 11.3.3 运行WebSocket 服务端...... 218 11.4 总结...... 219 第12 章 私有协议栈开发...... 221 12.1 私有协议介绍...... 221 12.2 Netty 协议栈功能设计...... 223 12.2.1 网络拓扑图...... 223 12.2.2 协议栈功能描述...... 224 12.2.3 通信模型...... 224 12.2.4 消息定义...... 225 12.2.5 Netty 协议支持的字段类型...... 226 12.2.6 Netty 协议的编解码规范...... 227 12.2.7 链路的建立...... 229 12.2.8 链路的关闭...... 230 12.2.9 可靠性设计...... 230 12.2.10 安全性设计...... 232 12.2.11 可扩展性设计...... 232 12.3 Netty 协议栈开发...... 233 12.3.1 数据结构定义...... 233 12.3.2 消息编解码...... 237 12.3.3 握手和安全认证...... 241 12.3.4 心跳检测机制...... 245 12.3.5 断连重连...... 248 12.3.6 客户端代码...... 249 12.3.7 服务端代码...... 251 12.4 运行协议栈...... 252 12.4.1 正常场景...... 252 12.4.2 异常场景:服务端宕机重启...... 253 12.4.3 异常场景:客户端宕机重启...... 256 12.5 总结...... 256 第13 章 服务端创建...... 258 13.1 原生NIO 类库的复杂性...... 259 13.2 Netty 服务端创建源码分析...... 259 13.2.1 Netty 服务端创建时序图...... 260 13.2.2 Netty 服务端创建源码分析...... 263 13.3 客户端接入源码分析...... 272 13.4 总结...... 275 第14 章 客户端创建...... 276 14.1 Netty 客户端创建流程分析...... 276 14.2.1 Netty 客户端创建时序图...... 276 14.2.2 Netty 客户端创建流程分析...... 277 14.2 Netty 客户端创建源码分析...... 278 14.2.1 客户端连接辅助类Bootstrap...... 278 14.2.2 客户端连接操作...... 281 14.2.3 异步连接结果通知...... 283 14.2.4 客户端连接超时机制...... 284 14.3 总结...... 286 源码分析篇 Netty 功能介绍和源码分析 第15 章 ByteBuf 和相关辅助类...... 288 15.1 ByteBuf 功能说明...... 288 15.1.1 ByteBuf 的工作原理...... 289 15.1.2 ByteBuf 的功能介绍...... 294 15.2 ByteBuf 源码分析...... 308 15.2.1 ByteBuf 的主要类继承关系...... 309 15.2.2 AbstractByteBuf 源码分析...... 310 15.2.3 AbstractReferenceCountedByteBuf 源码分析...... 319 15.2.4 UnpooledHeapByteBuf 源码分析...... 321 15.2.5 PooledByteBuf 内存池原理分析...... 326 15.2.6 PooledDirectByteBuf 源码分析...... 329 15.3 ByteBuf 相关的辅助类功能介绍...... 332 15.3.1 ByteBufHolder...... 332 15.3.2 ByteBufAllocator ...... 333 15.3.3 CompositeByteBuf ...... 334 15.3.4 ByteBufUtil ...... 336 15.4 总结...... 337 第16 章 Channel 和Unsafe ...... 338 16.1 Channel 功能说明...... 338 16.1.1 Channel 的工作原理...... 339 16.1.2 Channel 的功能介绍...... 340 16.2 Channel 源码分析...... 343 16.2.1 Channel 的主要继承关系类图...... 343 16.2.2 AbstractChannel 源码分析...... 344 16.2.3 AbstractNioChannel 源码分析...... 347 16.2.4 AbstractNioByteChannel 源码分析...... 350 16.2.5 AbstractNioMessageChannel 源码分析...... 353 16.2.6 AbstractNioMessageServerChannel 源码分析...... 354 16.2.7 NioServerSocketChannel 源码分析...... 355 16.2.8 NioSocketChannel 源码分析...... 358 16.3 Unsafe 功能说明...... 364 16.4 Unsafe 源码分析...... 365 16.4.1 Unsafe 继承关系类图...... 365 16.4.2 AbstractUnsafe 源码分析...... 366 16.4.3 AbstractNioUnsafe 源码分析...... 375 16.4.4 NioByteUnsafe 源码分析...... 379 16.5 总结...... 387 第17 章 ChannelPipeline 和ChannelHandler...... 388 17.1 ChannelPipeline 功能说明...... 389 17.1.1 ChannelPipeline 的事件处理...... 389 17.1.2 自定义拦截器...... 391 17.1.3 构建pipeline ...... 392 17.1.4 ChannelPipeline 的主要特性...... 393 17.2 ChannelPipeline 源码分析...... 393 17.2.1 ChannelPipeline 的类继承关系图...... 393 17.2.2 ChannelPipeline 对ChannelHandler 的管理...... 393 17.2.3 ChannelPipeline 的inbound 事件...... 396 17.2.4 ChannelPipeline 的outbound 事件...... 397 17.3 ChannelHandler 功能说明...... 398 17.3.1 ChannelHandlerAdapter 功能说明...... 399 17.3.2 ByteToMessageDecoder 功能说明...... 399 17.3.3 MessageToMessageDecoder 功能说明...... 400 17.3.4 LengthFieldBasedFrameDecoder 功能说明...... 400 17.3.5 MessageToByteEncoder 功能说明...... 404 17.3.6 MessageToMessageEncoder 功能说明...... 404 17.3.7 LengthFieldPrepender 功能说明...... 405 17.4 ChannelHandler 源码分析...... 406 17.4.1 ChannelHandler 的类继承关系图...... 406 17.4.2 ByteToMessageDecoder 源码分析...... 407 17.4.3 MessageToMessageDecoder 源码分析...... 410 17.4.4 LengthFieldBasedFrameDecoder 源码分析...... 411 17.4.5 MessageToByteEncoder 源码分析...... 415 17.4.6 MessageToMessageEncoder 源码分析...... 416 17.4.7 LengthFieldPrepender 源码分析...... 417 17.5 总结...... 418 第18 章 EventLoop 和EventLoopGroup...... 419 18.1 Netty 的线程模型...... 419 18.1.1 Reactor 单线程模型...... 420 18.1.2 Reactor 多线程模型...... 421 18.1.3 主从Reactor 多线程模型...... 422 18.1.4 Netty 的线程模型...... 423 18.1.5 最佳实践...... 424 18.2 NioEventLoop 源码分析...... 425 18.2.1 NioEventLoop 设计原理...... 425 18.2.2 NioEventLoop 继承关系类图...... 426 18.2.3 NioEventLoop...... 427 18.3 总结...... 436 第19 章 Future 和Promise ...... 438 19.1 Future 功能...... 438 19.2 ChannelFuture 源码分析...... 443 19.3 Promise 功能介绍...... 445 19.4 Promise 源码分析...... 447 19.4.1 Promise 继承关系图...... 447 19.4.2 DefaultPromise ...... 447 19.5 总结...... 449 架构和行业应用篇 Netty 高级特性 第20 章 Netty 架构剖析...... 452 20.1 Netty 逻辑架构...... 452 20.1.1 Reactor 通信调度层...... 453 20.1.2 职责链ChannelPipeline ...... 453 20.1.3 业务逻辑编排层(Service ChannelHandler)...... 454 20.2 关键架构质量属性...... 454 20.2.1 高性能...... 454 20.2.2 可靠性...... 457 20.2.3 可定制性...... 460 20.2.4 可扩展性...... 460 20.3 总结...... 460 第21 章 Java 多线程编程在Netty 中的应用...... 461 21.1 Java 内存模型与多线程编程...... 461 21.1.1 硬件的发展和多任务处理...... 461 21.1.2 Java 内存模型...... 462 21.2 Netty 的并发编程实践...... 464 21.2.1 对共享的可变数据进行正确的同步...... 464 21.2.2 正确使用锁...... 465 21.2.3 volatile 的正确使用...... 467 21.2.4 CAS 指令和原子类...... 470 21.2.5 线程安全类的应用...... 472 21.2.6 读写锁的应用...... 476 21.2.7 线程安全性文档说明...... 477 21.2.8 不要依赖线程优先级...... 478 21.3 总结...... 479 第22 章 高性能之道...... 480 22.1 RPC 调用性能模型分析...... 480 22.1.1 传统RPC 调用性能差的三宗罪...... 480 22.1.2 I/O 通信性能三原则...... 481 22.2 Netty 高性能之道...... 482 22.2.1 异步非阻塞通信...... 482 22.2.2 高效的Reactor 线程模型...... 482 22.2.3 锁化的串行设计...... 485 22.2.4 高效的并发编程...... 486 22.2.5 高性能的序列化框架...... 486 22.2.6 零拷贝...... 487 22.2.7 内存池...... 491 22.2.8 灵活的TCP 参数配置能力...... 494 22.3 主流NIO 框架性能对比...... 495 22.4 总结...... 497 第23 章 可靠性...... 498 23.1 可靠性需求...... 498 23.1.1 宕机的代价...... 498 23.1.2 Netty 可靠性需求...... 499 23.2 Netty 高可靠性设计...... 500 23.2.1 网络通信类故障...... 500 23.2.2 链路的有效性检测...... 507 23.2.3 Reactor 线程的保护...... 510 23.2.4 内存保护...... 513 23.2.5 流量整形...... 516 23.2.6 优雅停机接口...... 519 23.3 优化建议...... 520 23.3.1 发送队列容量上限控制...... 520 23.3.2 回推发送失败的消息...... 521 23.4 总结...... 521 第24 章 安全性...... 522 24.1 严峻的安全形势...... 522 24.1.1 OpenSSL Heart bleed 漏洞...... 522 24.1.2 安全漏洞的代价...... 523 24.1.3 Netty 面临的安全风险...... 523 24.2 Netty SSL 安全特性...... 525 24.2.1 SSL 单向认证...... 525 24.2.2 SSL 双向认证...... 532 24.2.3 第三方CA 认证...... 536 24.3 Netty SSL 源码分析...... 538 24.3.1 客户端...... 538 24.3.2 服务端...... 541 24.3.3 消息读取...... 544 24.3.4 消息发送...... 545 24.4 Netty 扩展的安全特性...... 546 24.4.1 IP 地址黑名单机制...... 547 24.4.2 接入认证...... 548 24.4 总结...... 550 第25 章 Netty 未来展望...... 551 25.1 应用范围...... 551 25.2 技术演进...... 552 25.3 社区活跃度...... 552 25.4 Road Map ...... 552 25.5 总结...... 553 附录A Netty 参数配置表...... 554
1、下载并解压,得出pdf文件
2、如果打不开本文件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读试读
同类热门
热门标签
网友评论1人参与,1条评论
最新排行
cnki全球学术快报电脑版95.79Mv0.2.34 cnki全球学术快报电脑版是一款来自CNKI知网的学术文献搜索软件,整合学术交流、阅读、问答、设备同步、个性化定制、智能推送、即时通讯等功能于一体,让学术更高效、更便捷。 其中功能非常全面,如检索、资料库、图书馆、个性化定制等,用户可以
查看paas实现与运维管理159.62M余何pdf编辑器 paas实现与运维管理是一本国内原创PaaS著作,由国家软件设计师余何编著,书名全称叫做paas实现与运维管理:基于Mesos+Docker+ELK的实战指南。本书从技术和管理两个角度详解分布式PaaS平台的实现与运维,突出的特点是理论联系实际,深
查看Ajax原理与系统开发143.95M陈锋敏pdf扫描版Ajax原理与系统开发是一本Web前端Ajax框架原理与系统开发书籍,由陈锋敏编著。本书内容丰富,翔实,以真实的项目开发与实现为主线,对各个设计元素进行了深入的讲解。同时精选多个典型案例,并结合基础知识对系统进行分析、设计与编程实现,可以帮助读者学习并掌
查看精通Java Web整合开发(第二版)225.47M刘斌 pdf扫描版 精通Java Web整合开发(第二版)是一本Java Web技术整合开发书籍,由刘斌编著。本书为轻量级Java EE应用开发人员提供一整套实用的主流开发技术,融入了作者多年的Java EE应用开发经验。任何知识点均配以实例进行讲解,每个实例提供同步
查看spark高级数据分析5.79Mpdf扫描版spark高级数据分析是一本Spark实用手册,由著名大数据公司Cloudera的四名数据科学家编写,他们联袂展示了利用Spark进行大规模数据分析的若干模式,而且每个模式都自成一体。全书将Spark、统计学方法和真实数据集结合起来,通过实例向读者讲述了
查看鸟哥的linux私房菜服务器架设篇(第2版)67.26Mpdf扫描版鸟哥的linux私房菜服务器架设篇(第2版)是一本linux服务器架设教材书籍,由linux专家鸟哥编著。本书是前作的升级版本,根据服务器与网络环境做了大幅度的修订与改写,主要介绍了架站之前所需的技能分析、网络基本概念、linux常用的网络命令、主机的简
查看android游戏开发实践指南136.89Mpdf高清扫描版android游戏开发实践指南是一本经典的安卓游戏开发指南书籍,由美国资深工程师Rick Rogers编著。本书理论知识系统而全面,讲解了Android游戏开发的方方面面;实战性强,以各种经典游戏案例为导向,全面展示了Android游戏开发的流程、方法和
查看完全学会Git GitHub Git Server的24堂课pdf高清版34.77M扫描版完全学会Git GitHub Git Server的24堂课是一本Git、GitHub、Git Server的学习教材,由孙宏明编著,全书以循序渐进的方式,学习Git的功能和用法。书中以实际的操作范例,让读者亲身体验Git工作的细节,并且掌握每一个指令的
查看Android高级进阶43.81MPDF顾浩鑫高清扫描版Android高级进阶是由顾浩鑫所编写,作者实战经验非常的丰富,先后任职过华为、百度、平安科技,本书分为8个部分进行阐述,分别是基础篇、系统架构篇、经验总结篇、新技术篇、性能优化篇、移动安全篇、工具篇、测试篇。内容十分丰富,书中通过简单的代码示例详尽地展
查看树莓派python编程入门与实战65.72M勃鲁姆高清扫描版树莓派python编程入门与实战是一本Raspberry Pi和Python语言相结合的指南,由美国程序员 Richard Blum(勃鲁姆)和Christine Bresnahan(布莱斯纳罕)两人共同编著。本书采用直观、循序渐进的方法,每章建立在前一
查看第一本docker书33.72M特恩布尔pdf高清版Docker是一个开源的应用容器引擎,让开发者可以将他们的应用和依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。但如何才能更好的入门呢?这里小编带来了第一本docker书,这是全球第一本Docker技术图书,由澳大
查看深入解析ipv6(第三版)153.33Mpdf高清扫描版 深入解析ipv6是由Joseph Davies所编写的,书中深入剖析了IPv6的技术细节, 包括使用IPv6将运行windons8和windons server 2012的计算机互联起来,还阐述了IPv6的特性和作用,并提供了实施IPv6的细节,无
查看分布式系统原理与范型 第二版53.75M特尼博姆 pdf扫描版 分布式系统原理与范型 第二版是由美国著名作者特尼博姆Tanenbaum编著的一本关于分布式系统的力作,由辛春生、陈宗斌等编译。本书相对上一版进行了重大修订。我们添加了单独的一章,以反映分布式系统组织结构所取得的进展。另一个重大的修改是,本版介绍了更
查看
第1楼 北京市东城区联通 网友