Netty权威指南(第2版)
综合评级:★★★★★
定价:¥89.00
作者:李林锋 著
出版社:电子工业出版社
出版日期:2015年4月
页数:572
字数:758000
ISBN:9787121258015
综合评级:★★★★★
定价:¥89.00
作者:李林锋 著
出版社:电子工业出版社
出版日期:2015年4月
页数:572
字数:758000
ISBN:9787121258015
《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内很难得一见的深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。
基础篇走进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 Facebook 的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
......
2014 年6 月《Netty 权威指南》第1 版面世之后,很多读者通过邮件等方式向我表达了对本书的喜爱和赞誉。同时,对本书的一些瑕疵和不足也进行了指正,并给出了合理的建议。我对读者反馈的合理建议进行了记录和总结,以期在未来修订版或者第2 版中能够修正这些问题。
大约在2014 年11 月份的时候,编辑与我协商出版《Netty 权威指南(第2 版)》的事宜,考虑到如下几个因素,最终我决定推出第2 版:
第一版需要修正少部分印刷不太清晰的图片,这会改变后续章节的页码;
源码分析章节的代码希望重新编排一下,与前面的开发示例保持一致;
部分章节和内容需要优化调整;
部分读者对推出第2 版的要求。
第2 版的主要变更如下,删除第1 版中的如下章节:
第7 章:Java 序列化;
第12 章:UDP 协议开发;
第13 章:文件传输;
第22 章:Netty 行业应用。
新增本书中的如下章节:
第7 章:MessagePack 编解码;
第13 章:服务端创建;
第14 章:客户端创建;
第22 章:高性能之道;
第23 章:可靠性;
第24 章:安全性。
19164人在学
22500人在学
12646人在学