- 跟闪电侠学Netty:Netty即时聊天实战与底层原理
- 俞超
- 1362字
- 2022-05-05 22:12:38
前言
为什么写这本书
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元