Netty权威指南

出版日期:2014-6
ISBN:9787121233436
作者:李林锋
页数:524页

作者简介

《Netty权威指南》是异步非阻塞通信领域的经典之作,基于最新版本Netty 5.0编写,是国内首本深入介绍Netty原理和架构的技术书籍,也是作者多年实战经验的总结和浓缩。在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地对Netty的核心API和类库的功能和用法进行了细致讲解。
《Netty权威指南》适合架构师、设计师、软件开发工程师、测试人员和其他对Java NIO框架、Java通信感兴趣的相关人士阅读,相信通过学习《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源码分析
31
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源码分析
52
2.4.3 AIO版本时间服务器运行结果
56
2.5 4种I/O的对比
58
2.5.1 概念澄清
58
2.5.2 不同I/O模型对比
60
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 总结
78
第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粘包问题
88
4.3.1 支持TCP粘包的TimeServer
88
4.3.2 支持TCP粘包的TimeClient
90
4.3.3 运行支持TCP粘包的时间服务器程序
93
4.3.4 LineBasedFrameDecoder和StringDecoder的原理分析
98
4.4 总结
99
第5章 分隔符和定长解码器的应用
100
5.1 DelimiterBasedFrameDecoder应用开发
101
5.1.1 DelimiterBasedFrameDecoder服务端开发
101
5.1.2 DelimiterBasedFrameDecoder客户端开发
104
5.1.3 运行DelimiterBasedFrameDecoder服务端和客户端
106
5.2 FixedLengthFrameDecoder应用开发
108
5.2.1 FixedLengthFrameDecoder服务端开发
108
5.2.2 利用telnet命令行测试EchoServer服务端
110
5.3 总结
111
中级篇 Netty编解码开发指南
第6章 编解码技术
114
6.1 Java序列化的缺点
115
6.1.1 无法跨语言
115
6.1.2 序列化后的码流太大
115
6.1.3 序列化性能太低
118
6.2 业界主流的编解码框架
121
6.2.1 Google的Protobuf介绍
121
6.2.2 Facebook的Thrift介绍
123
6.2.3 JBoss Marshalling介绍
124
6.3 总结
125
第7章 Java序列化
126
7.1 Netty Java序列化服务端开发
126
7.2 Java序列化Netty客户端开发
132
7.3 运行结果
135
7.4 总结
137
第8章 Google Protobuf编解码
138
8.1 Protobuf的入门
139
8.1.1 Protobuf开发环境搭建
139
8.1.2 Protobuf编解码开发
141
8.1.3 运行Protobuf例程
143
8.2 Netty的Protobuf服务端开发
143
8.2.1 Protobuf版本的图书订购服务端开发
144
8.2.2 Protobuf版本的图书订购客户端开发
146
8.2.3 Protobuf版本的图书订购程序功能测试
149
8.3 Protobuf的使用注意事项
152
8.4 总结
153
第9章 JBoss Marshalling编解码
154
9.1 Marshalling开发环境准备
154
9.2 Netty的Marshalling服务端开发
155
9.3 Netty的Marshalling客户端开发
158
9.4 运行Marshalling客户端和服务端例程
160
9.5 总结
162
高级篇 Netty多协议开发和应用
第10章 HTTP协议开发应用
164
10.1 HTTP协议介绍
165
10.1.1 HTTP协议的URL
165
10.1.2 HTTP请求消息(HttpRequest)
165
10.1.3 HTTP响应消息(HttpResponse)
168
10.2 Netty HTTP服务端入门开发
169
10.2.1 HTTP服务端例程场景描述
170
10.2.2 HTTP服务端开发
170
10.2.3 Netty HTTP文件服务器例程运行结果
178
10.3 Netty HTTP+XML协议栈开发
182
10.3.1 开发场景介绍
183
10.3.2 HTTP+XML协议栈设计
186
10.3.3 高效的XML绑定框架JiBx
187
10.3.4 HTTP+XML编解码框架开发
195
10.3.5 HTTP+XML协议栈测试
211
10.3.6 小结
213
10.4 总结
214
第11章 WebSocket协议开发
215
11.1 HTTP协议的弊端
216
11.2 WebSocket入门
216
11.2.1 WebSocket背景
217
11.2.2 WebSocket连接建立
218
11.2.3 WebSocket生命周期
219
11.2.4 WebSocket连接关闭
220
11.3 Netty WebSocket协议开发
221
11.3.1 WebSocket服务端功能介绍
221
11.3.2 WebSocket服务端开发
222
11.3.3 运行WebSocket服务端
230
11.4 总结
231
第12章 UDP协议开发
233
12.1 UDP协议简介
234
12.2 UDP服务端开发
235
12.3 UDP客户端开发
238
12.4 运行UDP例程
240
12.5 总结
241
第13章 文件传输
242
13.1 文件的基础知识
243
13.1.1 文件的概念
243
13.1.2 文件路径
243
13.1.3 文件名称
244
13.1.4 FileChannel简介
244
13.2 Netty文件传输开发
245
13.3 运行Netty文件传输服务例程
248
13.4 总结
250
第14章 私有协议栈开发
251
14.1 私有协议介绍
251
14.2 Netty协议栈功能设计
253
14.2.1 网络拓扑图
253
14.2.2 协议栈功能描述
254
14.2.3 通信模型
254
14.2.4 消息定义
255
14.2.5 Netty协议支持的字段类型
256
14.2.6 Netty协议的编解码规范
257
14.2.7 链路的建立
259
14.2.8 链路的关闭
260
14.2.9 可靠性设计
260
14.2.10 安全性设计
262
14.2.11 可扩展性设计
262
14.3 Netty协议栈开发
263
14.3.1 数据结构定义
263
14.3.2 消息编解码
267
14.3.3 握手和安全认证
271
14.3.4 心跳检测机制
275
14.3.5 断连重连
278
14.3.6 客户端代码
279
14.3.7 服务端代码
281
14.4 运行协议栈
282
14.4.1 正常场景
282
14.4.2 异常场景:服务端宕机重启
283
14.4.3 异常场景:客户端宕机重启
286
14.5 总结
286
源码分析篇 Netty功能介绍和源码分析
第15章 ByteBuf和相关辅助类
290
15.1 ByteBuf功能说明
290
15.1.1 ByteBuf的工作原理
291
15.1.2 ByteBuf的功能介绍
296
15.2 ByteBuf源码分析
310
15.2.1 ByteBuf的主要类继承关系
311
15.2.2 AbstractByteBuf源码分析
312
15.2.3 AbstractReferenceCountedByteBuf源码分析
321
15.2.4 UnpooledHeapByteBuf源码分析
323
15.2.5 PooledByteBuf内存池原理分析
328
15.2.6 PooledDirectByteBuf源码分析
331
15.3 ByteBuf相关的辅助类功能介绍
334
15.3.1 ByteBufHolder
334
15.3.2 ByteBufAllocator
335
15.3.3 CompositeByteBuf
336
15.3.4 ByteBufUtil
338
15.4 总结
339
第16章 Channel和Unsafe
340
16.1 Channel 功能说明
340
16.1.1 Channel的工作原理
341
16.1.2 Channel的功能介绍
342
16.2 Channel源码分析
345
16.2.1 Channel的主要继承关系类图
345
16.2.2 AbstractChannel源码分析
346
16.2.3 AbstractNioChannel源码分析
349
16.2.4 AbstractNioByteChannel源码分析
352
16.2.5 AbstractNioMessageChannel源码分析
356
16.2.6 AbstractNioMessageServerChannel源码分析
357
16.2.7 NioServerSocketChannel源码分析
358
16.2.8 NioSocketChannel源码分析
360
16.3 Unsafe功能说明
366
16.4 Unsafe源码分析
367
16.4.1 Unsafe继承关系类图
367
16.4.2 AbstractUnsafe源码分析
367
16.4.3 AbstractNioUnsafe源码分析
377
16.4.4 NioByteUnsafe源码分析
380
16.5 总结
387
第17章 ChannelPipeline和ChannelHandler
389
17.1 ChannelPipeline功能说明
390
17.1.1 ChannelPipeline的事件处理
390
17.1.2 自定义拦截器
392
17.1.3 构建pipeline
393
17.1.4 ChannelPipeline的主要特性
394
17.2 ChannelPipeline源码分析
394
17.2.1 ChannelPipeline的类继承关系图
394
17.2.2 ChannelPipeline对ChannelHandler的管理
394
17.2.3 ChannelPipeline的inbound事件
397
17.2.4 ChannelPipeline的outbound事件
398
17.3 ChannelHandler功能说明
399
17.3.1 ChannelHandlerAdapter功能说明
400
17.3.2 ByteToMessageDecoder功能说明
400
17.3.3 MessageToMessageDecoder功能说明
401
17.3.4 LengthFieldBasedFrameDecoder功能说明
402
17.3.5 MessageToByteEncoder功能说明
405
17.3.6 MessageToMessageEncoder功能说明
406
17.3.7 LengthFieldPrepender功能说明
406
17.4 ChannelHandler源码分析
407
17.4.1 ChannelHandler的类继承关系图
407
17.4.2 ByteToMessageDecoder源码分析
408
17.4.3 MessageToMessageDecoder源码分析
411
17.4.4 LengthFieldBasedFrameDecoder源码分析
413
17.4.5 MessageToByteEncoder源码分析
417
17.4.6 MessageToMessageEncoder源码分析
418
17.4.7 LengthFieldPrepender源码分析
419
17.5 总结
420
第18章 EventLoop和EventLoopGroup
421
18.1 Netty的线程模型
421
18.1.1 Reactor单线程模型
422
18.1.2 Reactor多线程模型
423
18.1.3 主从Reactor多线程模型
424
18.1.4 Netty的线程模型
425
18.1.5 最佳实践
427
18.2 NioEventLoop源码分析
427
18.2.1 NioEventLoop设计原理
427
18.2.2 NioEventLoop继承关系类图
428
18.2.3 NioEventLoop
429
18.3 总结
440
第19章 Future和Promise
441
19.1 Future功能
441
19.2 ChannelFuture源码分析
446
19.3 Promise功能介绍
448
19.4 Promise源码分析
450
19.4.1 Promise继承关系图
450
19.4.2 DefaultPromise
450
19.5 总结
453
架构和行业应用篇 Netty高级特性
第20章 Java多线程编程在Netty中的应用
456
20.1 Java内存模型与多线程编程
456
20.1.1 硬件的发展和多任务处理
456
20.1.2 Java内存模型
457
20.2 Netty的并发编程实践
459
20.2.1 对共享的可变数据进行正确的同步
459
20.2.2 正确的使用锁
460
20.2.3 volatile的正确使用
462
20.2.4 CAS指令和原子类
465
20.2.5 线程安全类的应用
467
20.2.6 读写锁的应用
470
20.2.7 线程安全性文档说明
472
20.2.8 不要依赖线程优先级
473
20.3 总结
474
第21章 Netty架构剖析
475
21.1 Netty逻辑架构
475
21.1.1 Reactor通信调度层
476
21.1.2 职责链ChannelPipeline
476
21.1.3 业务逻辑编排层(Service ChannelHandler)
477
21.2 关键架构质量属性
477
21.2.1 高性能
477
21.2.2 可靠性
480
21.2.3 可定制性
483
21.2.4 可扩展性
483
21.3 总结
483
第22章 Netty行业应用
484
22.1 Netty在互联网行业的应用
485
22.1.1 传统垂直架构面临的问题
485
22.1.2 阿里分布式服务框架Dubbo
485
22.1.3 Dubbo的架构介绍
487
22.1.4 Netty在Dubbo中的应用
489
22.1.5 Dubbo框架集成Netty源码分析
491
22.2 Netty在大数据领域的应用
496
22.3 Netty在游戏行业的应用
497
22.3.1 游戏服务端架构介绍
498
22.3.2 Netty在游戏服务端的应用
501
22.4 总结
502
第23章 Netty未来展望
503
23.1 应用范围
503
23.2 技术演进
504
23.3 社区活跃度
504
23.4 Road Map
504
23.5 总结
505
附录A Netty参数配置表
506

内容概要

李林锋:Netty中国推广者,现华为技术有限公司平台中间件架构与设计部设计师,公司总裁技术创新奖获得者。长期从事高性能通信软件的架构设计和开发工作,有多年在NIO领域的设计、开发和运维经验,精通NIO编程和Netty、Mina等主流NIO框架。


 Netty权威指南下载 更多精彩书评



发布书评

 
 


精彩书评 (总计9条)

  •     除了有源代码的讲解以外。其他几乎没有任何实质性的东西。真的不值得推荐,还不如去看看netty in action。其实真的好希望国内有一本详解netty的书出来就好。另外,不知道为何书评要这么长的字!!!评论这么长有何用??垃圾豆瓣。
  •     不如一本cookbook,当api看,太啰嗦,当深入浅出看,很多东西只贴代码,不讲原理,很多关键内容直接跳过,有可学习精彩的部分,但质量不高内容和粗糙的铺陈方式,带来的阅读痛苦。略失望。平息下怒气,就当入门书看还是比较有收获,netty核心讲的比较无力,书内容和结构比较粗糙。
  •     人无完人,书也是一样,为什么大家要纠结它的缺点,忽略它的优点呢?在我初次使用netty的时候,我完全找不到方向,在看了这本书以后,收获很多,弥补了我的基础,又让知识上一个台阶,本书兼顾了初级入门,和这个框架的使用方法,又带了分析,我很喜欢这书

精彩短评 (总计50条)

  •     凑字数,不是良心之作
  •     第一时间就买了,可这书真的很差劲,东西讲的都不清不楚的。代码、图都弄的一塌糊涂。
  •     这书写的实在是令人发指!
  •     刚看了第一章,作者利用实现server和client一步步分清NIO和AIO,觉得挺好的 源码剖析部分没有仔细看,结合源码再一起看。其实对于莴巨弱来说还好,但是凑页数这种行为,减一分
  •     书中都是无用的代码,不值得读
  •     没发现什么有价值的东西,基本都是泛泛而谈
  •     这也敢叫做权威指南,除了前两章,后面的章节都在骗稿费吧?
  •     很长,但我读完还是感觉对一些事情没把握。
  •     国内书的style...
  •     较为深入的介绍Netty网络编程框架的用法、设计等内容。
  •     看这书不如看 netty in action和官方文档,都有人翻译成中文了。
  •     说句实话, 当我看到打印了四页的console output. 我就把这本书丢在角落了. 大篇幅的源码, 但是随着版本升级源码是会迭代和变化的. 缺少原理性和实战的讲解. 对于初学者不友好. 相比起来, Lucene In Action要好的多得多.
  •     写得让人不明所以.. 各种 copy 代码
  •     随便翻了翻,没啥大收获。。。
  •     入门书
  •     这本书完全可以砍去一半的纸张而不影响内容,意思你明白的。不用多说了
  •     整本书主要是讲解示例代码,讲代码的功能。并没有对Netty中用到的原理、机制进行讲解。示例代码都是很基础的,适合新手看。讲Netty原理的推荐感觉这本《Netty in action 》要讲的多一点。
  •     太不认真了
  •     各种凑字数,几乎都只是讲个大概,源码解析还不如直接看源码注释
  •     我读过的最烂的技术书了
  •     学习学习学习学习学习学习
  •     绝对是本烂书,看了前半部分已经很无语了,后半部分是硬着头皮看完的,这本书最有价值内容的是目录和“专家力荐”,千万别买。
  •     看了这本书,我觉得不如我自己看代码。
  •     这本书写的还行,就是代码太多了
  •     烂书,不值得买,借来看看就好了.
  •     烂的像一坨屎,哪有技术书会连续贴上好几页的代码,对着代码写的
  •     代码罗列太多了,没有系统的高屋建瓴的分析。只能凑合读读
  •     烂书,所谓的源码分析仅仅是再说这里new了一个变量,那里调用了一个方法,这里又给变量赋值了,有源码没分析。
  •     一般吧,老生常谈,不过作者看上去工程经验市够的
  •     本书分为三个部分:netty各种协议应用,netty源码分析,netty行业应用. 其中第一个部分写的还是不错的,第二个部分基本上没有说明任何东西,第三个部分意义不是很大; 我想,大部分买这本书的人都是来看源码分析的,这个部分还是自己看源代码吧.
  •     在研究Java 网络编程,觉得这本书有价值就买了,学习研究中
  •     初学者写的笔记也能叫权威指南?
  •     举个例子:一个简单的接收到请求循环发送100次数据包,为了说明粘包和拆包,竟将输出相同字符串输出三四页……服……而且整体内容编向于初级入门,没有深入去分析研究,垃圾之书,不建议读。
  •     看到了网友吐槽的打印了三四页的日志。另外,我想说的是这本书除了后半部分,其余的章节和《netty in action》十分雷同。整本书都是在贴代码。入门书吧。
  •     这本书我没买借的别人的,鉴于看了还算有一点收获,给个三星吧。但是不得不说,这书不值得买,前面300页基本可以用50页讲完的,而且都是那种网上一搜一大把的东西。
  •     凑合看看
  •     真心挺烂的
  •     不够深入,只是入门
  •     书写的确实烂,特意登录上来评价个
  •     代码贴的太多,分析得不够深入,很多例子不能运行。用来了解Netty的基本要点还行
  •     写的是挺糙的,我对语言没有偏见,读了一章netty in action后,还是立觉高下,诚意是很重要的
  •     作者无时无刻不再自嘲JAVA写网络库有多难。。因此这是一本让我大C++党充满自豪的书。。
  •     应该先看看豆评
  •     还行,就是代码粘贴太多。。。看着蛋疼,要是只有重点代码就好了
  •     上周日才看完。没想到豆瓣评分这么低!诚然如很多评论所说,排版、画图、内容布局等方面有很多可改进的地方,《netty in action》我也看过,就是一个API稍微详细点的介绍,很多评论说不如直接看这个我觉得太偏颇,你们究竟看没看完全书,又看懂了多少?
  •     一般,都是应用层的东西,关于Netty内在的东西太少。
  •     作为第一本国内的书。还是有借鉴作用,但是不够仔细,有些错误,而且权威指南还算不上
  •     国内netty的资料很少,首先谢谢作者.前面是实例,感觉实例部分细化讲解的不深.
  •     令人发指,看的过程让我对自己产生了严重的怀疑,以为自己智商降低到这种程度了,结果来豆瓣一看评价,才知道,尼玛不是我智商低啊,是书真写的很挫
  •     NIO讲解的很清楚,值得一看。
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024