跟闪电侠学Netty:Netty即时聊天实战与底层原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

为什么写这本书

Netty是互联网中间件、大数据领域使用最广泛、最核心的网络通信框架。由下图可以看到,几乎所有互联网中间件、大数据框架均使用了Netty,掌握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.如果你从未读过开源框架源码,本书将是你的第一本源码指导书,阅读优秀的开源软件源码可以助你写出更优美的程序。读源码并不难,难的是迈出这一小步,之后就能通往更广阔的世界。

本书推荐使用方式

1.按章节顺序把入门实战篇的代码一章章输出到IDE中,在没有掌握前一章节的知识点之前,建议不要跳跃学习。

2.入门实战篇学完之后,合上书本,把本书即时聊天系统的代码再整体输出若干遍,输出的过程中可能会发现自己有遗忘知识点,这个时候可能需要不断翻阅书本,没有关系,翻阅就好了。

3.确保最后一次实现本书的即时聊天系统的例子是没有翻阅书本的,是完全自行实现的,之后进入源码分析篇的学习。

4.针对源码分析篇,建议读者按章节顺序来学习,不要跳跃,不要图快,每一步都要扎实。

5.在源码学习的过程中,先跟随书本,对照源码(Netty 4.1.6),把对应章节的流程过一遍,每个章节学完之后,建议花较多的时间进行调试和阅读,确保掌握了前一章节的内容之后再进行下一章节的学习。

读者服务

微信扫码回复:42679

● 获取Netty进阶学习资料

● 加入本书读者交流群,与本书作者互动交流

● 获取【百场业界大咖直播合集】(持续更新),仅需1元