Netty 实战 PDF 文档

发布于 2025-02-01 16:43:01 字数 6965 浏览 13 评论 0

本书是为想要或者正在使用 Java 从事高性能网络编程的人而写的,循序渐进地介绍了 Netty 各个方面的内容。

本书共分为 4 个部分:第一部分详细地介绍 Netty 的相关概念以及核心组件,第二部分介绍自定义协议经常用到的编解码器,第三部分介绍 Netty 对于应用层高级协议的支持,会覆盖常见的协议及其在实践中的应用,第四部分是几个案例研究。此外,附录部分还会简单地介绍 Maven,以及如何通过使用 Maven 编译和运行本书中的示例。

阅读本书不需要读者精通 Java 网络和并发编程。如果想要更加深入地理解本书背后的理念以及 Netty 源码本身,可以系统地学习一下 Java 网络编程、NIO、并发和异步编程以及相关的设计模式。

目录
第一部分 Netty 的概念及体系结构
第 1 章 Netty——异步和事件驱动
1.1 Java 网络编程
1.1.1 Java NIO
1.1.2 选择器
1.2 Netty 简介
1.2.1 谁在使用 Netty
1.2.2 异步和事件驱动
1.3 Netty 的核心组件
1.3.1 Channel
1.3.2 回调
1.3.3 Future
1.3.4 事件和 ChannelHandler
1.3.5 把它们放在一起
1.Future、回调和 ChannelHandler
2.选择器、事件和 EventLoop
1.4 小结
第 2 章 你的第一款 Netty 应用程序
2.1 设置开发环境
2.1.1 获取并安装 Java 开发工具包
2.1.2 下载并安装 IDE
2.1.3 下载和安装 Apache Maven
2.1.4 配置工具集
2.2 Netty 客户端/服务器概览
2.3 编写 Echo 服务器
2.3.1 ChannelHandler 和业务逻辑
2.3.2 引导服务器
2.4 编写 Echo 客户端
2.4.1 通过 ChannelHandler 实现客户端逻辑
2.4.2 引导客户端
2.5 构建和运行 Echo 服务器和客户端
2.5.1 运行构建
2.5.2 运行 Echo 服务器和客户端
2.6 小结
第 3 章 Netty 的组件和设计
3.1 Channel、EventLoop 和 ChannelFuture
3.1.1 Channel 接口
3.1.2 EventLoop 接口
3.1.3 ChannelFuture 接口
3.2 ChannelHandler 和 ChannelPipeline
3.2.1 ChannelHandler 接口
3.2.2 ChannelPipeline 接口
3.2.3 更加深入地了解 ChannelHandler
3.2.4 编码器和解码器
3.2.5 抽象类 SimpleChannelInboundHandler
3.3 引导
3.4 小结
第 4 章 传输
4.1 案例研究:传输迁移
4.1.1 不通过 Netty 使用 OIO 和 NIO
4.1.2 通过 Netty 使用 OIO 和 NIO
4.1.3 非阻塞的 Netty 版本
4.2 传输 API
4.3 内置的传输
4.3.1 NIO——非阻塞 I/O
4.3.2 Epoll—用于 Linux 的本地非阻塞传输
4.3.3 OIO—旧的阻塞 I/O
4.3.4 用于 JVM 内部通信的 Local 传输
4.3.5 Embedded 传输
4.4 传输的用例
4.5 小结
第 5 章 ByteBuf
5.1 ByteBuf 的 API
5.2 ByteBuf 类——Netty 的数据容器
5.2.1 它是如何工作的
5.2.2 ByteBuf 的使用模式
1.堆缓冲区
2.直接缓冲区
3.复合缓冲区
5.3 字节级操作
5.3.1 随机访问索引
5.3.2 顺序访问索引
5.3.3 可丢弃字节
5.3.4 可读字节
5.3.5 可写字节
5.3.6 索引管理
5.3.7 查找操作
5.3.8 派生缓冲区
5.3.9 读/写操作
5.3.10 更多的操作
5.4 ByteBufHolder 接口
5.5 ByteBuf 分配
5.5.1 按需分配:ByteBufAllocator 接口
5.5.2 Unpooled 缓冲区
5.5.3 ByteBufUtil 类
5.6 引用计数
5.7 小结
第 6 章 ChannelHandler 和 ChannelPipeline
6.1 ChannelHandler 家族
6.1.1 Channel 的生命周期
6.1.2 ChannelHandler 的生命周期
6.1.3 ChannelInboundHandler 接口
6.1.4 ChannelOutboundHandler 接口
6.1.5 ChannelHandler 适配器
6.1.6 资源管理
6.2 ChannelPipeline 接口
6.2.1 修改 ChannelPipeline
6.2.2 触发事件
6.3 ChannelHandlerContext 接口
6.3.1 使用 ChannelHandlerContext
6.3.2 ChannelHandler 和 ChannelHandlerContext 的高级用法
6.4 异常处理
6.4.1 处理入站异常
6.4.2 处理出站异常
6.5 小结
第 7 章 EventLoop 和线程模型
7.1 线程模型概述
7.2 EventLoop 接口
7.2.1 Netty 4 中的 I/O 和事件处理
7.2.2 Netty 3 中的 I/O 操作
7.3 任务调度
7.3.1 JDK 的任务调度 API
7.3.2 使用 EventLoop 调度任务
7.4 实现细节
7.4.1 线程管理
7.4.2 EventLoop/线程的分配
1.异步传输
2.阻塞传输
7.5 小结
第 8 章 引导
8.1 Bootstrap 类
8.2 引导客户端和无连接协议
8.2.1 引导客户端
8.2.2 Channel 和 EventLoopGroup 的兼容性
8.3 引导服务器
8.3.1 ServerBootstrap 类
8.3.2 引导服务器
8.4 从 Channel 引导客户端
8.5 在引导过程中添加多个 ChannelHandler
8.7 引导 DatagramChannel
8.8 关闭
8.9 小结
第 9 章 单元测试
9.1 EmbeddedChannel 概述
9.2 使用 EmbeddedChannel 测试 ChannelHandler
9.2.1 测试入站消息
9.2.2 测试出站消息
9.3 测试异常处理
9.4 小结
第二部分编解码器
第 10 章 编解码器框架
10.1 什么是编解码器
10.2 解码器
10.2.1 抽象类 ByteToMessageDecoder
10.2.2 抽象类 ReplayingDecoder
10.2.3 抽象类 MessageToMessageDecoder
10.2.4 TooLongFrameException 类
10.3 编码器
10.3.1 抽象类 MessageToByteEncoder
10.3.2 抽象类 MessageToMessageEncoder
10.4 抽象的编解码器类
10.4.1 抽象类 ByteToMessageCodec
10.4.2 抽象类 MessageToMessageCodec
10.4.3 CombinedChannelDuplexHandler 类
10.5 小结
第 11 章 预置的 ChannelHandler 和编解码器
11.1 通过 SSL/TLS 保护 Netty 应用程序
11.2 构建基于 Netty 的 HTTP/HTTPS 应用程序
11.2.1 HTTP 解码器、编码器和编解码器
11.2.2 聚合 HTTP 消息
11.2.3 HTTP 压缩
11.2.4 使用 HTTPS
11.2.5 WebSocket
11.3 空闲的连接和超时
11.4 解码基于分隔符的协议和基于长度的协议
11.4.1 基于分隔符的协议
11.4.2 基于长度的协议
11.5 写大型数据
11.6 序列化数据
11.6.1 JDK 序列化
11.6.2 使用 JBoss Marshalling 进行序列化
11.6.3 通过 Protocol Buffers 序列化
11.7 小结
第三部分网络协议
第 12 章 WebSocket
12.1 WebSocket 简介
12.2 我们的 WebSocket 示例应用程序
12.3 添加 WebSocket 支持
12.3.1 处理 HTTP 请求
12.3.2 处理 WebSocket 帧
12.3.3 初始化 ChannelPipeline
12.3.4 引导
12.4 测试该应用程序
如何进行加密
12.5 小结
第 13 章 使用 UDP 广播事件
13.1 UDP 的基础知识
13.2 UDP 广播
13.3 UDP 示例应用程序
13.4 消息 POJO: LogEvent
13.5 编写广播者
13.6 编写监视器
13.7 运行 LogEventBroadcaster 和 LogEventMonitor
13.8 小结
第四部分案例研究
第 14 章 案例研究,第一部分
14.1 Droplr——构建移动服务
14.1.1 这一切的起因
14.1.2 Droplr 是怎样工作的
14.1.3 创造一个更加快速的上传体验
1.乐观且看似更加简单的方案
2.安全但复杂的方案
14.1.4 技术栈
1.基本要素:服务器和流水线
2.请求处理器
3.父接口
4.处理器的实现
5.上传请求处理器
14.1.5 性能
14.1.6 小结——站在巨人的肩膀上
14.2 Firebase——实时的数据同步服务
14.2.1 Firebase 的架构
14.2.2 长轮询
1.保证消息的按顺序投递
2.关闭通知
14.2.3 HTTP 1.1 keep-alive 和流水线化
14.2.4 控制 SslHandler
14.2.5 Firebase 小结
14.3 Urban Airship——构建移动服务
14.3.1 移动消息的基础知识
14.3.2 第三方递交
14.3.3 使用二进制协议的例子
14.3.4 直接面向设备的递交
14.3.5 Netty 擅长管理大量的并发连接
14.3.6 Urban Airship 小结—跨越防火墙边界
1.内部的 RPC 框架
2.负载和性能测试
3.同步协议的异步客户端
14.4 小结
第 15 章 案例研究,第二部分
15.1 Netty 在 Facebook 的使用:Nifty 和 Swift0F
15.1.1 什么是 Thrift
15.1.2 使用 Netty 改善 Java Thrift 的现状
15.1.3 Nifty 服务器的设计
1.Nifty 的编码器/解码器
2.在服务器上排序响应
15.1.4 Nifty 异步客户端的设计
1.流水线化
2.多路复用
15.1.5 Swift:一种更快的构建 Java Thrift 服务的方式
15.1.6 结果
1.性能比较
2.稳定性问题的例子
3.改进 C++实现的超时处理
4.未来基于 Netty 4 的改进
15.1.7 Facebook 小结
15.2 Netty 在 Twitter 的使用:Finagle
15.2.1 Twitter 成长的烦恼
15.2.2 Finagle 的诞生
15.2.3 Finagle 是如何工作的
Netty/Finagle 桥接器
15.2.4 Finagle 的抽象
15.2.5 故障管理
15.2.6 组合服务
15.2.7 未来:Netty
15.2.8 Twitter 小结
15.3 小结
附录 Maven 介绍
A.1 什么是 Maven
A.1.1 安装和配置 Maven
A.1.2 Maven 的基本概念
1.标准的目录结构
2.POM 大纲
3.构件
4.POM 文件的用例
5.GAV 坐标
6.依赖
7.依赖管理
8.构建的生命周期
9.插件
10.插件管理
11.配置文件
12.存储库
13.快照和发布
A.2 POM 示例
A.2.1 一个项目的 POM
A.2.2 POM 的继承和聚合
1.POM 继承
2.POM 聚合
A.3 Maven 命令行
A.4 小结

下载地址:https://www.wenjiangs.com/wp-content/uploads/2025/02/vSQOdgIG3K6fH678.rar

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

文章
评论
84965 人气
更多

推荐作者

alipaysp_giMRmwQ3mK

文章 0 评论 0

爱她像谁

文章 0 评论 0

清风疏影

文章 0 评论 0

mb_OO8gCSDD

文章 0 评论 0

佚名

文章 0 评论 0

汹涌人海

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文