Netty权威指南(第2版)
作者:李林锋 著
格式: pdf、txt、epub、azw3、mobi、docx
编辑推荐
1、Hadoop、Storm、Spark、Facebook、Twitter、Ali baba都在使用Java高性能NIO通信框架Netty,本书告诉你Why,通过本书你可以全面、系统地理解Netty 架构设计理念,以及异步NIO 编程。1、Hadoop、Storm、Spark、Facebook、Twitter、Ali baba都在使用Java高性能NIO通信框架Netty,本书告诉你Why,通过本书你可以全面、系统地理解Netty 架构设计理念,以及异步NIO 编程。
2、本书作者为资深一线专家,在产品中广泛应用了Netty等NIO框架,具有丰富的多年实践经验,这就使得本书内容带有很强的实践性,让你更全面快速掌握Java高并发异步通信的优先选择 框架——Netty的用法。
3、本书第1版出版后受到业界的一致好评,应读者的要求,第2版增加了MessagePack 编解码、服务端创建、客户端创建、高性能之道、可靠性、安全性等内容,内容更精彩。
Netty是什么?使用Netty能够做什么?为什么要从传统的Socket开发切换到NIO进行编程?为什么不直接基于JDK的NIO类库编程而选择Netty?如何全面系统地掌握Netty进行NettyNIO开发、Netty编解码开发、Netty多协议开发?如何通过对Netty源码的学习获得更深入地知识?掌握了Netty后,如何将其应用到实际架构中?Netty工程师的就业前景和可涉足的行业是怎样的?本书都会一一解答。
推荐购买:
《云计算网络珠玑》
《实战Java虚拟机——JVM故障诊断与性能优化》
《大型分布式网站架构设计与实践》
《老码说编程之玩转Swift江湖》
内容简介
《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于*版本的Netty 5.0 编写,是国内很难得一见的深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。
作者简介
李林锋:Netty中国推广者,现华为技术有限公司平台中间件架构与设计部设计师,公司总裁技术创新奖获得者。长期从事高性能通信软件的架构设计和开发工作,有多年在NIO领域的设计、开发和运维经验,精通NIO编程和Netty、Mina等主流NIO框架。目前负责华为软件公司下一代SOA中间件和PaaS平台的架构设计工作。
目 录
基础篇走进
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
源码分析篇
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 MessageToMess
商品评价
- 周日看完全书。刚看到豆瓣评分和评论,认为7分上下算正常,现在这4.1的评分比较扯。日志输出占两页、有些地方的类图模糊、不如看netty in action,这些我都同意,但这样就否定全书值得商榷。既然有这么多骂的,那就不再重复,这里谈谈亮点,让看评论的人多点不同意见的参考:1.…
为了方便大家利用电子书更好的学习,精心整理了网络上的各种电子书,有PDF版本的,也有TXT版本的,现有一万多本PDF的,七万多本TXT的,还有精心整理的天涯神贴,而且还在不断增加中,有需要的可以点击下面的衔接或者扫码下载:
链接: https://pan.baidu.com/s/1z45OMvYM0Jy-BVuJJmRvtw?pwd=w3m9 提取码: w3m9 复制这段内容后打开百度网盘手机App,操作更方便哦
请先
!