更多书籍点击进入>> CiCi岛php
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍html
一、Hadoop、Storm、Spark、Facebook、Twitter、Ali baba都在使用Java高性能NIO通讯框架Netty,本书告诉你Why,经过本书你能够全面、系统地理解Netty 架构设计理念,以及异步NIO 编程。一、Hadoop、Storm、Spark、Facebook、Twitter、Ali baba都在使用Java高性能NIO通讯框架Netty,本书告诉你Why,经过本书你能够全面、系统地理解Netty 架构设计理念,以及异步NIO 编程。 二、本书做者为资深一线专家,在产品中普遍应用了Netty等NIO框架,具备丰富的多年实践经验,这就使得本书内容带有很强的实践性,让你更全面快速掌握Java高并发异步通讯的优先选择 框架——Netty的用法。 三、本书第1版出版后受到业界的一致好评,应读者的要求,第2版增长了MessagePack 编解码、服务端建立、客户端建立、高性能之道、可靠性、安全性等内容,内容更精彩。 Netty是什么?使用Netty可以作什么?为何要从传统的Socket开发切换到NIO进行编程?为何不直接基于JDK的NIO类库编程而选择Netty?如何全面系统地掌握Netty进行NettyNIO开发、Netty编解码开发、Netty多协议开发?如何经过对Netty源码的学习得到更深刻地知识?掌握了Netty后,如何将其应用到实际架构中?Netty工程师的就业前景和可涉足的行业是怎样的?本书都会一一解答。 推荐购买: 《云计算网络珠玑》 《实战Java虚拟机——JVM故障诊断与性能优化》 《大型分布式网站架构设计与实践》 《老码说编程之玩转Swift江湖》git
《Netty 权威指南(第2 版)》是异步非阻塞通讯领域的经典之做,基于*版本的Netty 5.0 编写,是国内很可贵一见的深刻介绍Netty 原理和架构的书籍,也是做者多年实战经验的总结和浓缩。内容不只包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。程序员
李林锋:Netty中国推广者,现华为技术有限公司平台中间件架构与设计部设计师,公司总裁技术创新奖得到者。长期从事高性能通讯软件的架构设计和开发工做,有多年在NIO领域的设计、开发和运维经验,精通NIO编程和Netty、Mina等主流NIO框架。目前负责华为软件公司下一代SOA中间件和PaaS平台的架构设计工做。web
基础篇走进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
前言
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 章:安全性。
第1 版最初的想法是尽可能照顾NIO 编程和Netty 初学者,所以入门和基础功能使用示例占了很大比例,涵盖的范围也很广。但事实上,因为Netty 的功能过于庞杂,一本书很难涵盖Netty 的全部功能点,所以,删除了不太经常使用的Java 序列化、UDP 协议开发和文件传输。
Netty 行业应用的内容不少读者都很指望,但愿可以展开详细讲解一下。我思索再三,忍痛割爱,不只没有增强本章节,反而删除了它。为何呢?对于真正想了解行业应用的读者,须要展开详细讲解才可以讲透,剖开Netty 在Spark、Hadoop 等大数据领域的应用不谈,即使是做为分布式服务框架的内部高性能通讯组件,例如Dubbo,没有大篇幅也很难讲透,与其一笔归纳,泛泛而谈,还不如留给其余做者或者将来抽空单独梳理。
掌握Netty 的基础功能使用比较容易,可是理解Netty 底层的架构以及主要架构特性的设计理念倒是件困难的事情,它须要长期的行业积累以及对Netty 底层源码的透彻理解。应广大读者的要求,在第2 版中新增了Netty 的高性能、安全性和可靠性的架构剖析,经过这些章节的学习,读者能够更加清晰地理解Netty 架构设计理念。
尽管我本人已经有7 年的NIO 编程和实战经验,在产品中也普遍应用了Netty 和Mina等NIO 框架。可是,受限于我的能力和水平,本书必定还有纰漏和不妥之处,但愿广大读者可以批评指正。读者在阅读本书或者实际工做中若是有Netty 相关的疑问,也能够直接联系我,我会尽可能回复。个人联系方式以下:
邮箱:neu_lilinfeng@sina.com
新浪微博:Nettying
微信:Nettying。
《Netty 权威指南》第1 版出版以后,不少读者来信咨询本身实际工做和学习中遇到的Netty 问题和案例,有些案例和问题颇具典型性。我将这些案例进行了总结,在微信公众号“Netty 之家”中按期推送,但愿广大读者能够关注。
感谢博文视点的小编丁一琼MM 和幕后的美工,正是大家的辛苦工做才保证了本书可以顺利出版;感谢华为IT PaaS 望岳、莫小君和Digital SDP 集成开发部徐皓等领导对个人信任和支持;感谢个人老婆在我编辑第2 版期间赦免了我作饭和刷碗的义务,我得以抽出时间安心写做。
最后感谢《Netty 权威指南》第1 版的读者,大家的理解、鼓励和支持,使我有足够的勇气和动力继续前行。但愿你们携起手来共同推进NIO 编程和Netty 在国内的应用和发展。
李林锋
2015 年1 月27 日于南京
第1版前言
大约在2008 年的时候,我参与设计和开发的一个电信系统在月初出帐期,老是发生大量的链接超时和读写超时异常,业务的失败率相比于平时高了不少,报表中的不少指标都差强人意。后来通过排查,发现问题主要出如今下游网元的处理性能上,月初的时候BSS 出帐,在出帐期间BSS 系统运行缓慢,因为双方采用了同步阻塞式的HTTP XML 进行通讯,致使任何一方处理缓慢都会影响对方的处理性能。按照故障隔离的设计原则,对方处理速度慢或者不回应,不该该影响系统的其余功能模块或者协议栈,可是在同步阻塞I/O 通讯模型下,这种故障传播和相互影响是不可避免的,很难经过业务层面解决。
受限于当时Tomcat 和Servlet 的同步阻塞I/O 模型,以及在Java 领域异步HTTP 协议栈的技术积累不足,当时咱们并无办法彻底解决这个问题,只能经过调整线程池策略和HTTP 超时时间来从业务层面作规避。
2009 年,因为对技术的热爱,我做为业务骨干被领导派去参加一个重点业务平台的研发工做,与两位资深的架构师(其中一位工做20 年,作华为交换机出身)共同参与。这是我第一次全面接触异步I/O 编程和高性能电信级协议栈的开发,眼界大开——异步高性能内部协议栈、异步HTTP、异步SOAP、异步SMPP……全部的协议栈都是异步非阻塞的。后来的性能测试代表:基于Reactor 模型统一调度的长链接和短链接协议栈,不管是性能、可靠性仍是可维护性,均可以“秒杀”传统基于BIO 开发的应用服务器和各类协议栈,这种差别本质上是一种代差。
在我从事异步NIO 编程的2009 年,业界尚未成熟的NIO 框架,那个时候Mina 刚刚开始起步,功能和性能都达不到商用标准。最困难的是,国内Java 领域的异步通讯尚未流行,整个业界的积累都很是少。那时资料匮乏,可以交流和探讨的圈内人不多,一旦踩住“地雷”,就须要夜以继日地维护。在随后2 年多的时间里,经历了十屡次的在通宵、凌晨被一线的运维人员电话吵醒等种种磨难以后,咱们自研的NIO 框架才逐渐稳定和成熟。期间,解决的BUG 总计20~30 个。
从2004 年JDK 1.4 首次提供NIO 1.0 类库到如今,已通过去了整整10 年。JSR 51 的设计初衷就是让Java 可以提供非阻塞、具备弹性伸缩能力的异步I/O 类库,从而结束了Java在高性能服务器领域的不利局面。然而,在至关长的一段时间里,Java 的NIO 编程并无流行起来,究其缘由以下。
1.大多数高性能服务器,被C 和C 语言盘踞,因为它们能够直接使用操做系统的
异步I/O 能力,因此对JDK 的NIO 并不关心;
2.移动互联网还没有兴起,基于Java 的大规模分布式系统极少,不少中小型应用服务
对于异步I/O 的诉求不是很强烈;
3.高性能、高可靠性领域,例如银行、证券、电信等,依然以C 为主导,Java 充
当打杂的角色,NIO 暂时没有用武之地;
4.当时主流的J2EE 服务器,几乎所有基于同步阻塞I/O 构建,例如Servlet、Tomcat
等,因为它们应用普遍,若是这些容器不支持NIO,用户很难具有独立构建异步协议栈的
能力;
5.异步NIO 编程门槛比较高,开发和维护一款基于NIO 的协议栈对不少中小型公司
来讲像是一场噩梦;
6.业界NIO 框架不成熟,很难商用;
7.国内研发界对NIO 的陌生和认识不足,没有充分重视。
基于上述几种缘由,NIO 编程的推广和发展长期滞后。值得欣慰的是,随着大规模分布式系统、大数据和流式计算框架的兴起,基于Java 来构建这些系统已经成为主流,NIO编程和NIO 框架在此期间获得了大规模的商用。在互联网领域,阿里的分布式服务框架Dubbo、RocketMQ,大数据的基础序列化和通讯框架Avro,以及不少开源的软件都已经开始使用Netty 来构建高性能、分布式通讯能力,Netty 社区的活跃度也名列前茅。根据目前的信息,Netty 已经在以下几个领域获得了大规模的商业应用。
1.互联网领域;
2.电信领域;
3.大数据领域;
4.银行、证券等金融领域;
5.游戏行业;
6.电力等企业市场。
2014 年春节前,我分享了一篇博文《Netty 5.0 架构剖析和源码解读》,短短1 个月下
载量达到了4000 多。不少网友向我咨询NIO 编程技术、NIO 框架如何选择等问题,也有一些圈内朋友和出版社邀请我写一本关于Netty 的技术书籍。做为最流行、表现最优异的NIO 框架,Netty 深受你们喜好,可是长期以来除了User Guide 以外,国内鲜有Netty 相关的技术书籍供广大NIO 编程爱好者学习和参考。因为Netty 源码的复杂性和NIO 编程自己的技术门槛限制,对于大多数读者而言,经过本身阅读和分析源码来深刻掌握Netty 的设计原理和实现细节是件困难的事情。从2011 年开始我系统性地分析和应用了Netty 和Mina,转瞬间已通过去了3 年多。在这3 年的时间里,咱们的系统经受了无数严苛的考验,在这个过程当中,我对Netty 和Mina 有了更深入的体验,也积累了丰富的运维和实战经验。咱们都是开源框架Netty 的受益者,为了让更多的朋友和同行可以了解NIO 编程,深刻学习和掌握Netty 这个NIO 利器,我打算将个人经验和你们分享,同时也结束国内尚无Netty学习教材的尴尬境地。
联系方式
尽管我也有技术洁癖,但愿诸事完美,可是因为Netty 代码的庞杂和涉及的知识点太多,一本书籍很难涵盖全部的功能点。若有遗漏或者错误,恳请你们可以及时批评和指正,若是你有好的建议或者想法,也能够联系我。个人联系方式以下。
邮箱:neu_lilinfeng@sina.com。
新浪微博:Nettying。
微信:Nettying。
致谢
若是说我的可以改变本身命运的话,对于程序员来讲,惟有经过不断地学习和实践,努力提高本身的技能,才有可能找到更好的机会,充分发挥和体现本身的价值。我但愿本书可以为你的成功
林锋让我给这本新书写个推荐,不胜荣幸。我和林锋接触时间不长,已经感觉到了他对技术的热爱和不尽探索。这种热爱彻底来自于心里的驱动,不掺杂任何杂质,我认为他是我见到的为数很少的技术热爱者。也正是由于这种热爱,促使林锋花费了不少业余时间,完成了这样一本对Netty的权威编程指南。相信读者在阅读此书时,在感叹内容之丰富详实的同时,也会深深感觉到林锋对所著技术的热爱。我想这就是咱们经过书中文字相遇的初衷吧。当咱们的技术可以日益精进,达到专业的水准,生产力会成倍甚至指数级地增加。但愿读者可以经过阅读此书获取这种精进的力量。
——IBM中国开发实验室开发总监 黄省江
Netty的卓越之处在于它是一个高性能、异步事件驱动的NIO框架,目前不少著名的开源框架开始将底层的通讯框架切换到Netty,如Hadoop、Storm等,Facebook的后台也即将启用这一优秀框架。但愿这本书的面市可以对Netty在国内的发展起到推进做用。
——Facebook资深工程师 覃超
中国的阅读类应用——中国移动手机阅读基地,天天承受着5~7.5亿PV的访问量,为了实现业务的弹性,华为Digital SDP产品承接了对其后台进行微服务重构的工做,一个PV背后的后台原子接口访问达到几十乃至上百次,还要保证90%的页面访问在500ms内响应,在这样的压力下,高效的通讯机制尤为重要,林锋基于Netty构建的对等通讯虚拟总线很好地承载了这一需求。平均通讯时延0.71ms,80%以上的通讯时延都保持在1ms如下,其他通讯时延都低于3ms,在响应速度这一重要指标上不只知足了客户的要求,并且还带来了系统可伸缩性和弹性上的巨大提高,林锋在本书中阐释的Netty应用上的经验和技巧值得期待。 ——华为Digital SDP首席架构师 王慷 最近几年,Netty社区的发展如火如荼,不管是大数据领域的演进,仍是微服务架构的流行,都须要高效的分布式通讯机制做为基本支撑,Netty凭借优异的性能、灵活的扩展性获得了普遍的应用。林锋兄曾将本身在NIO领域的积累以博文的形式共享,获得了Java社区的热烈响应,他对NIO领域的积累和看法使人敬佩。本次升级更新后的第2版,相信会有更多新鲜和实用的知识增长进来,毫无疑问,它会成为学习高性能NIO的必备图书。 ——IT图书译者、InfoQ编辑 张卫滨 设计开发基于异步编程模型的高性能服务器,除了理解和熟练应用NIO等这些Java层面的基础知识以外,可以驾驭优秀的异步通讯框架也是很是重要的,Netty无疑是Java领域最值得学习和研究的异步事件驱动的NIO框架。做者有着多年的NIO开发和运维经验,本书浓缩了做者多年实战经验,推荐给对Netty技术感兴趣、想研究的攻城狮阅读! ——蚂蚁金服基础技术部JVM Architect 李三红 Netty是一个使人惊讶的项目,在短短几年内成为众多Java高并发异步通讯的*框架。但目前国内资料极少并缺少系统性,而李兄的这本系统介绍Netty开发和原理的书籍,很完美地填补了这个空白。国内的技术人员对Java NIO和Netty的理解多一些,也就意味着国内总体网络编程技术的进步。本书条理清晰,对技术的阐述按部就班,是一本可贵的Netty学习教材,推荐有志青年仔细学习研究本书,共同把NIO异步通讯编程推向一个新高度。 ——JBoss应用服务器核心开发组成员 张建锋 《Netty权威指南》是本可贵的按部就班地介绍Java NIO到Netty演变历程的好书,能让读者身临其境地明晓通讯开发中的各类问题场景和解决办法,更高效更合理地开发IPC通讯程序。 ——苏宁易购架构师 吴杰