不会 Netty,你永远是个 Java 菜鸟
Netty 是互联网中间件、大数据领域使用最广泛、最核心的网络通信框架。
由下图可以看到,几乎所有互联网中间件、大数据框架均使用了 Netty,掌握 Netty 是一名初中级工程师迈向中高级工程师所需的最重要的技能之一。
然而,目前市面上对初学者友好的 Netty 资料较少,网络上大多数技术博客都是一堆零散的知识点集合,无法串成一条线形成一个体系。
俞超老师(闪电侠)在多年的 Netty 实战、调优、“踩坑”过程中积累了丰富的经验,持续在网络上分享的相关博客、视频等有 100W+阅读量,并得到网友一致好评!
为了将这部分经验系统地分享给大家,帮助大家提升核心竞争力,俞超老师特地将 Netty 底层原理相关知识进行系统梳理,写作了《跟闪电侠学 Netty:Netty 即时聊天实战与底层原理》一书!
本书上篇通过一个即时聊天的例子,让读者能够系统地使用一遍 Netty,全面掌握 Netty 的知识点;下篇通过对源码的层层剖析,让读者能够掌握 Netty 底层原理,知其然并知其所以然,从而编写出高性能网络应用程序。
上篇 入门实战
在入门实战篇中,读者跟随笔者实践完这个即时聊天系统后,能够学会如何使用 Netty 完成最基本的网络通信程序,可以掌握以下知识点:
1. 如何启动服务端?
2. 如何启动客户端?
3. 如何设计长连自定义协议?
4. 拆包/粘包原理与实践。
5. 如何实现自定义编解码。
6. 如何使用 Pipeline 与 ChannelHandler?
7. 心跳与空闲检测的方法。
8. 如何性能调优?
本篇通俗易懂,可一口气读完,让你一周内进入实战!
下篇 源码分析
在源码分析篇中,笔者从用户视角出发,环环相扣,带领读者逐个攻破 Netty 底层原理,掌握以下知识点:
1. 服务端启动流程:ServerBootstrap 外观,创建 NioServerSocketChannel,初始化,注册 Selector,绑定端口,接收新连接。
2. 高并发线程模型:Netty 无锁化串行设计,精心设计的 Reactor 线程模型榨干 CPU、打满网卡、让应用程序性能爆表的底层原理。
3. 新连接接入流程:Boss Reactor 线程,监测新连接,创建 NioSocketChannel,IO 线程分配,Selector 注册事件。
4. 解码原理:解码顶层抽象,定长解码器,行解码器,分隔符解码器,基于长度域解码器全面分析。
5. 事件传播机制脉络:大动脉 Pipeline,处理器 ChannelHandler,Inbound 和 Outbound 事件传播与异常传播的原理,编码原理。
6. writeAndFlush 流程:深入了解使用最频繁的 writeAndFlush 的底层原理,避免踩坑。
适读人群
本书适合以下三类人群:
1. 如果你听说过或简单使用过 Netty,想全面系统地学习 Netty,并掌握一些性能调优方法,本书的入门实战篇可以帮助你达成这个目标。
2. 如果你深度使用过 Netty,想深入了解 Netty 的底层设计,编写出更灵活高效的网络通信程序,本书的源码分析篇可以帮助你达成这个目标。
3. 如果你从未读过开源框架源码,本书将是你的第一本源码指导书,阅读优秀的开源软件源码可以助你写出更优美的程序。读源码并不难,难的是迈出这一小步,之后就能通往更广阔的空间。
本书推荐使用方式
01. 按章节顺序把入门实战篇的代码一章章敲出来,在没有掌握前一章节的知识点之前,建议不要跳跃学习。
02. 入门实战篇学完之后,合上书本,把本书即时聊天系统的代码再整体敲若干遍,敲的过程中可能会发现自己有遗忘知识点,这个时候可能需要不断翻阅书本,没有关系,翻阅就好了。
03. 确保最后一次实现本书的即时聊天系统的例子是没有翻阅书本的,是完全自行实现的,之后进入源码分析篇的学习。
04. 针对源码分析篇,建议读者按章节顺序来学习,不要跳跃,不要图快,每一步都要扎实。
05. 在源码学习的过程中,先跟随书本,对照源码,把对应章节的流程过一遍,每个章节学完之后,建议花较多的时间进行调试和阅读,确保掌握了前一章节的内容之后再进行下一章的学习。
专家怎么说
本书作者闪电侠同学,多年在研发一线,在平时的工作中对 Netty 的钻研非常深入,在公司内作为核心技术骨干,不仅仅解决本团队的技术难题,也帮助其他团队解决相关技术疑难杂症。很荣幸能成为最早的阅读者之一,这本书深入浅出、言简意赅,通过一个通信程序的案例介绍了 Netty 的基础知识,并通过源码分析介绍了 Netty 的底层原理,希望给各位读者带来帮助。
——美团前技术总监 & 比心技术 CTO 尤勇
Netty 是业界卓越的开源大作!第一次使用时,我就被它的高吞吐和高性能所折服。JBoss 开源的 Netty 网络框架是 CAT 服务端除 JDK 外唯一的外部依赖,表现不俗,生产环境物理机上几张千兆网卡经常可以满负荷运转,多核 CPU 可以保持 100%运行,让 CAT 的单机吞吐能力最高达到 45 万 MPS,消息平均大小约 1KB。我强烈建议大家使用 Netty,当然我们也踩过几个坑,需要合理使用,希望本书对大家理解和使用 Netty 网络编程有所帮助。
——平安银行零售首席架构师 吴其敏
曾几何时,Mina 很火,然而当 Netty 横空出世的时候,却抢尽了风头。作为高性能领域的杰出代表,Netty 成为很多 RPC 框架底层通信的标配,闪电侠的这本书从典型的通信场景——聊天室出发,深入浅出地剖析了 Netty 的源码,对于想写出高性能代码的读者来说,非常值得借鉴,值得一读。
——HeapDump 性能社区发起人 & PerfMa CEO 你假笨
闪电侠是个精力充沛的技术大牛,花了大量的业余时间投身于开源代码和撰写技术博客。在美团工作期间,我有幸与闪电侠合作多年,一起搭建了美团重要的网络基础设施,并凭借该项目一举拿下了美团的年度最高技术奖项。在分工合作上,我负责前端,闪电侠负责后端。他当时对 Netty 技术非常痴迷,将通信框架进行大量重构,使得性能获得极大提升,此外还进行了大量的技术创新,来保障通信高性能和系统稳定运行。更难能可贵的是,他还撰写了很多关于 Netty 的研究心得文章。现在,这些宝贵经验已经集结成书,强烈建议所有对 Netty 技术或高性能网络技术感兴趣的技术人员阅读。
——平安银行前端架构领域负责人 周辉
在异步编程模型上,Netty 无疑是值得学习和研究的 NIO 框架。作者从原理和案例实战的角度出发,全面介绍了 Netty 的使用。本书条理清晰,对技术的阐述循序渐进,囊括了 Netty 所涉及的 NIO、Selector 模型、线程模型、网络协议等诸多核心技术,强烈建议大家阅读学习。
——《高可用可伸缩微服务架构》作者 程超
本书沉淀了笔者自身多年研发实践和进阶心得,通过精巧设计的案例,将网络通信、并发编程的重点知识与具体场景结合起来,让读者快速入门,掌握生产级别的 Netty 开发技能。与此同时,完整、系统化的源码分析,也能够使工程师有效提升底层技术能力,形成良好的工程素养。相信这些一手修炼心得会让开发者受益匪浅,非常适合想要入门或者进阶 Netty 开发的初、中级工程师。
——Oracle 前首席工程师 杨晓峰
作者介绍
闪电侠,某互联网公司技术专家。精通 Netty、Spring、MyBatis 等开源框架。负责公司各类长连项目的开发与维护,有千万级别实时在线连接、百亿吞吐长连通信经验。Vim 和 IDEA 党,对效率和编写优美代码有极致的追求。
简书“Netty 源码分析”专栏作者。
异常火爆的慕课“IntelliJ IDEA 神器使用技巧”作者。
慕课“Netty 源码分析视频教程”作者。
微信公众号:闪电侠的博客。
快快扫码抢购吧!
评论