Netty进阶之路:跟着案例学Netty
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

自2014年《Netty权威指南》出版后,我在技术网站上相继写了一些Netty专题文章,涵盖性能、线程模型、安全性等知识点,受到很多读者的喜爱。在4年多里,很多读者及Netty学习者向我咨询Netty相关的问题,这些问题加起来多达上千个,通过对问题做汇总和分析,可以归纳为如下几类:

(1)Netty初学者,想了解学习Netty需要储备哪些技能,掌握哪些知识点,有什么学习技巧可以更快地掌握Netty。

(2)《Netty权威指南》的读者,学习完理论知识后,想在实际项目中使用,但是真正跟具体项目结合在一起解决实际问题时,又感觉比较棘手,不知道自己使用的方式是否是最优的,希望能够多学一些案例实践方面的知识,以便更好地在业务中使用Netty。

(3)在实际项目中遇到了问题的工程师,由于对 Netty底层细节掌握得不扎实,无法有效地定位并解决问题。

Netty 的一个特点就是入门相对容易,但是真正掌握并精通是非常困难的,原因有如下几个:

(1)涉及的知识面比较广。Netty作为一个高性能的 NIO通信框架,涉及的知识点包括网络通信、多线程编程、序列化和反序列化、异步和同步、SSL/TLS安全、内存池、HTTP等各种协议栈,这些知识点在 Java 语言中本身就是难点和重点,如果对这些基础知识掌握不扎实,是很难真正掌握好Netty的。

(2)调试比较困难。因为大量使用异步编程接口,以及消息处理过程中的各种线程切换,相比传统同步代码,Netty代码调试难度比较大。

(3)类继承层次比较深,有些代码很晦涩(例如内存池)。对于初学者而言,通过阅读代码来掌握Netty的难度还是很大的。

(4)代码规模庞大。目前,Netty 的代码规模已经非常庞大,特别是协议栈部分,提供了对HTTP/2、MQTT、WebSocket等各种协议的支持,相关代码非常多。如果学习方式不当,抓不住重点,则全量阅读Netty源码,既耗时又很难吃透,很容易半途而废。

(5)资料零散,缺乏与实践相关的案例。网上 Netty的各种资料非常多,但是都以理论讲解为主,Netty 在各行业中的应用、问题定位技巧及案例实践方面的资料很少,缺乏系统性的实践总结,是Netty学习的一大痛点。

在过去的几年中,我利用业余时间尽量帮大家答疑解惑,但实际上一个人很难回答所有读者的问题,有些问题需要业务描述、故障场景、日志,甚至要看源码,而且需要反复多次沟通来弄清楚问题,对于个人而言,时间和精力都很难得到保证。另外,一些比较常见的问题,例如服务端接收不到客户端的消息,定位手段是可以固化下来的。很多读者也希望我能写一本 Netty 实践和案例方面的书,通过案例讲解让大家更好地在项目中使用Netty,解决遇到的实际问题。

于是我对手头大家咨询的问题做了归类分析,结合我们自己的业务和平台多年来在Netty 实践中积累的经验,写作了本书。本书以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在实际工作中少犯错。在案例的分析过程中,还穿插讲解了 Netty的问题定位思路、方法、技巧,以及解决问题使用的相关工具,“授人以鱼不如授人以渔”,只有掌握了这些才能在项目中更放心地使用Netty。

本书的内容分类主要包括:

(1)Netty的启动和停止

(2)Netty的内存

(3)Netty的并发多线程

(4)Netty的性能

(5)Netty的可靠性

(6)Netty的安全

(7)Netty的实践

(8)Netty的学习

书中的案例涵盖了 Netty绝大多数常用的功能,以及容易犯错的地方,具有通用性和普遍性。学习这些案例,对于在实际业务工作中用好 Netty具有很大的帮助和启发作用。另外,在讲解Netty框架本身的同时,也会穿插一些背景知识介绍,例如Java信号量和优雅停机机制、Java的NIO类库、HTTP协议栈等。知识都是相互关联的,很难在基础知识不扎实的情况下掌握更高阶的知识。

通过本书的学习,希望广大 Netty初学者和爱好者能够更快、更好地进入高级阶段,在项目中用好Netty,为业务创造更多的价值。

尽管我也有技术洁癖,希望诸事完美,但是由于 Netty代码的庞杂和涉及的知识点太多,以及受限于我个人的经历和水平,很难在一本书里同时满足所有读者的诉求。本书如有遗漏或者错误,恳请大家及时批评和指正,如果大家有好的建议或者想法,也可以联系我。联系方式如下:

◎ 微信:Nettying

◎ 新浪微博:Nettying

能够完成本书要感谢很多人,首先感谢华为公司给我提供了足够大的舞台,感谢华为消费者云服务应用市场团队领导张凡、叶文武、刘连喜等,以及这些年与我在平台和业务团队一起战斗过的架构师、设计师、开发工程师、测试工程师和资料员等同事。

其次感谢我的家人,你们一直在背后默默地支持我。感谢参与本书编辑的英姐、美工及其他人员,你们的辛苦换来了本书的如期上市。

最后感谢所有《Netty 权威指南》和《分布式服务框架原理与实践》的读者,你们的支持和鼓励是我写作本书的动力源泉。

李林锋

2018年国庆节于南京

读者服务

轻松注册成为博文视点社区用户(www.broadview.com.cn),您即可享受以下服务。

下载资源:本书提供示例代码及资源文件,均可在 下载资源 处下载。

提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。

与作者交流:在页面下方 读者评论 处留下您的疑问或观点,与作者和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/35262