Netty涉及多线程技术、复杂数据结构与内存管理模型,它运用了各种设计模式及一些TCP的底层技术。本书对这些难点一一进行攻破,让读者能快速掌握相关知识。
本书包含大量的分布式底层架构的编写,涉及多线程、负载均衡算法、性能调优、线上问题紧急处理等内容。本书通过非常简易的代码来讲解Netty在企业中的实际用法,通过对实例进行调试的方式对Netty源码进行了详细的剖析,力图使读者通过实际操作快速入门,并深入了解Netty底层的各个组件。
本书适合有一定Java基础的架构师、设计师、开发工程师、测试工程师,以及对Java NIO框架、Netty感兴趣的相关人士阅读。
深入解读Netty 底层核心源码及架构设计,全面分析Netty 特性,掌握多线程实战技巧
刘耀林,从2012年到2017年一直从事Java后台服务开发工作。在此期间曾创办过大象在线分享网,网名夜行侠老师,录制过Netty源码剖析教学视频,同时在多家互联网公司担任过系统架构师,有丰富的Java工作实战经验。从2018年至今,从事大数据研发工作,对Flink、HBase、Kafka、Elasticsearch等大数据组件有深入的研究。
前言
Netty是一款基于NIO(非阻塞I/O)开发的网络框架,与传统BIO相比,它的并发性能得到了很大的提高,而且更加节省资源。Netty不仅封装了NIO操作的很多细节;在设计上还基于灵活、可扩展的事件驱动模型与高度可定制的线程模型,让Netty的应用更加灵活。作为一个被广泛使用的Java网络编程框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、物联网行业等都得到了广泛的应用。很多流行的大数据框架的核心通信模块也都使用的是Netty,如Elasticsearch、HBase、Flink等。
为什么编写本书
如今,大数据已是互联网应用的大趋势,很多Java程序员都想转向大数据方向,而Netty不仅是大数据框架的核心,还是Java高并发中最火的框架之一。因此,学好Netty更有利于深入了解大数据框架底层源码。学习Netty,不仅要学会如何运用它,还要对其底层原理、底层代码的编程技巧有深度的了解。目前,国内Netty方面的图书较少,尤其是既有深度,又比较简洁,并有企业级通用案例的图书更是凤毛麟角,这加大了很多Java程序员向大数据方向转变的难度,本书试图弥补这一空白。
本书主要基于Netty的稳定版本Netty v4.1.38.Final(对以后的新版本也具有普适性)编写。本书的主要目的是帮助软件工程师读懂Netty v4.1.38.Final版本源码,并能开发一款类似Dubbo的分布式RPC(Remote Procedure Call,远程过程调用),以及Netty的特性在Flink分布式流式计算框架中的实际应用。在本书中,作者对平常在编程中遇到的重点、难点进行了分析,并给予了充分的论述。对于一名软件工程师来说,本书可以使他们少走弯路,并更快地掌握Netty v4.1.38.Final版本源码及编程技巧。
关于本书作者
作者从2012年到2017年一直从事Java后台服务开发工作,在此期间曾创办大象在线分享网,网名夜行侠老师,录制Netty源码剖析教学视频,同时在多家互联网公司担任系统架构师,有丰富的Java工作实战经验。2018年转型从事大数据研发工作,对Flink、HBase、Kafka、Elasticsearch等大数据组件进行了深入的研究。
本书主要内容
本书以实战为导向,深入解读Netty底层核心源码及架构设计。通过阅读本书,读者可以灵活运用Netty的特性、加深多线程实战应用、熟悉Netty的底层核心源码。全书共包含2个高级应用项目,分别为分布式RPC与10亿级任务调度和监控引擎。读者可以在实战过程中找到学习Netty的成就感,在学完Netty内存管理及Netty核心组件的源码剖析后,能够比较彻底地掌握Netty。
如何阅读本书
在阅读本书前,读者应学过Java语言、网络通信等课程,并具备并发编程的能力。本书的章节安排是依据读者循序渐进地学习Netty的顺序设立的,建议初学者从前至后阅读。由于Netty源码复杂难懂,建议读者分以下几部分阅读本书。
第一部分:以实战为主,学会Netty客户端与服务端的长连接通信,灵活运用Netty的Future机制,同时对照第3章,尝试编写一套完整的分布式RPC。
第二部分:仔细、反复地阅读Netty核心源码解读知识,主要包括NioEventLoop线程处理逻辑、Netty的Channel功能设计、ByteBuf缓冲区内存、内存泄漏检测机制。熟练掌握这部分内容有利于理解框架的整体实现原理。
第三部分:内存管理源码解读。这部分是Netty源码中最难掌握的,需要有一定的耐心。先了解jemalloc内存分配思想,再从底层PoolChunk的内存分配到上层的PoolArena对内存的整体管理。在深入学习具体的分配算法时,可把部分代码单独拿出来进行单元测试,以加深理解。
第四部分:Netty的高级应用、线上问题分析和性能调优。这部分主要是作者的一些实战经验。通过前面对Netty的运用和源码解读,读者对Netty有了一定的了解,但还缺乏线上部署经验,以及高并发大数据的实际应用经验。这部分内容采用Netty时间轮实时监控10亿级任务,运用Jmeter长连接压测分布式RPC,让读者在实际项目中更加全面和自信地使用Netty。
源码阅读非常需要耐心,通过阅读Netty源码,读者会明显感觉到自身编程能力及源码阅读能力的提升,尤其是多线程编程能力。建议读者反复阅读至少3遍以上,直至对Netty的Channel、Handler、NioEventLoop、ByteBuf的各个方法都了如指掌。
致谢
我首先要特别感谢我的妻子谭小兰,写书需要大量的时间,我起初只是以视频在线教学的方式来总结自己的经验和收获,并分享给部分学员。是她在背后默默地支持我,我才能全身心投入书稿的写作去,从而与更多想深入学习Netty的读者分享本书。
同时感谢电子工业出版社博文视点宋亚东先生对本书的重视和他们为本书所做的一切。
由于水平有限,书中难免存在不足及疏漏,敬请专家和读者批评指正。
刘耀林
2020年11月
有没有带注释的netty源码啊!看书感觉思维有点飘散 很多地方对应不上
@管理员
为什么所有的电子书购买页面都是404
这本书真的很不错,里面的思想很经典,只看了前面第一章就觉得受益匪浅,我要好好研究一下
源码在哪可以下载