• Netty权威指南(第2版)
  • Netty权威指南(第2版)
21年品牌 40万+商家 超1.5亿件商品

Netty权威指南(第2版)

批量上传,套装书可能不全,下单前咨询在线客服!有特殊要求,下单前请咨询客服!

40.88 4.6折 89 全新

库存4件

江西南昌
认证卖家担保交易快速发货售后保障

作者李林锋 著

出版社电子工业出版社

ISBN9787121258015

出版时间2015-04

装帧平装

开本16开

定价89元

货号23690515

上书时间2024-11-01

思源汇书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

前言

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 权威指南(第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 

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP