内容简介
Netty是一个基于Java NIO的高性能网络应用框架,广泛应用于互联网、大数据、游戏、通信等领域。本书由Netty核心开发者Norman Maurer和Marvin Allen Wolfthal联合撰写,系统介绍了Netty的设计理念、核心组件和实战技巧。
全书共分为四个部分:第一部分介绍Netty的基础知识,包括异步和事件驱动的概念、Netty的核心类库以及如何编写简单的Netty应用;第二部分深入讲解Netty的编解码器、ChannelHandler、ChannelPipeline等核心组件,以及如何通过ChannelHandler处理业务逻辑;第三部分聚焦于高级主题,如Netty的线程模型、内存管理、TCP粘包拆包问题的解决、WebSocket和SSL/TLS支持等;第四部分通过一个完整的聊天应用案例,手把手指导读者将所学知识应用于实际项目。
本书适合具有一定Java编程基础,希望深入掌握Netty的开发者阅读,无论你是网络编程新手还是资深工程师,都能从中获得启发。
目录
内容提要
Letter for Chinese Netty in Action
致中文版读者
中文版序
译者序
译者简介
序
关于本书
第一部分 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.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的使用模式
5.3 字节级操作
5.3.3 可丢弃字节
5.3.4 可读字节
5.3.5 可写字节
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/线程的分配
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.6 使用Netty的ChannelOption和属性
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 创造一个更加快速的上传体验
14.1.4 技术栈
14.1.5 性能
14.1.6 小结——站在巨人的肩膀上
14.2 Firebase——实时的数据同步服务
14.2.1 Firebase的架构
14.2.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小结——跨越防火墙边界
14.4 小结
第15章 案例研究,第二部分
15.1 Netty在Facebook的使用:Nifty和Swift[1]
15.1.1 什么是Thrift
15.1.2 使用Netty改善Java Thrift的现状
15.1.3 Nifty服务器的设计
15.1.4 Nifty异步客户端的设计
15.1.5 Swift:一种更快的构建Java Thrift服务的方式
15.1.6 结果
15.1.7 Facebook小结
15.2 Netty在Twitter的使用:Finagle
15.2.1 Twitter成长的烦恼
15.2.2 Finagle的诞生
15.2.3 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的基本概念
A.2 POM示例
A.2.1 一个项目的POM
A.2.2 POM的继承和聚合
A.3 Maven命令行
A.4 小结
欢迎来到异步社区!
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
⚠ 网盘链接如果失效了请尝试其他网盘,不再补链,因为补了也会再次失效。
免责申明:
1. 本站分享的所有书籍均来源于自互联网,部分书籍中可能有压制者放置的广告,这并不是本站所为,请注意甄别。
2. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
3. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
4. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
5. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。