Java读源码之Netty深入剖析资源概述:

这门课讲Netty源码,讲师闪电侠在知名互联网公司的基础架构部干活,负责过千万级实时在线用户的消息推送系统,是真正在一线搞过Netty的人!
Netty这东西,简单说就是对Java底层网络编程(Socket)的封装,让你不用直接跟那些复杂的原生API打交道。很多互联网中间件、大数据组件、游戏服务器、IM系统背后都用它。如果你想往高级工程师走,搞懂Netty基本是绕不开的哈~
本课程不教你怎么用Netty写Hello World(默认你已经会用了),而是直接带你深入到源码里,看它到底是怎么跑起来的。课程会围绕Netty的几个核心问题展开,把这些组件的前因后果、设计原理掰开揉碎了讲清楚:
服务端启动流程:
你写的那些ServerBootstrap代码,背后到底干了啥?服务端的Socket在哪里初始化?在哪里接受新连接?NioServerSocketChannel是怎么创建、初始化、注册到selector,最后绑定端口的?这一整套流程给你理一遍。
高并发线程模型:
Netty默认启动多少线程?什么时候启动的?它是怎么解决JDK那个著名的空轮询Bug的?什么叫“无锁化串行设计”?Netty的Reactor线程模型是怎么设计的,能让CPU跑满、网卡打满?这块理解了,对高并发系统的线程设计会有更深的认识。
新连接接入流程:
一个新的客户端连进来了,从Boss线程检测到,创建NioSocketChannel,再到分配给一个Worker线程,注册事件,整个链路是怎么走的?
Pipeline事件传播机制:
Pipeline是Netty的大动脉,ChannelHandler是处理器。Inbound和Outbound事件是怎么在Pipeline里跑来跑去的?异常传播是怎么回事?添加Handler的顺序有啥讲究?事件传播怎么手动触发?
内存分配机制:
Netty自己搞了一套内存管理,比JVM原生的更高效。堆内堆外内存、池化非池化、Unsafe跟非Unsafe有啥区别?Area、Chunk、Page、Subpage这些概念到底对应啥?它是怎么减少多线程内存分配竞争的?这部分讲得挺细。
编解码原理:
Decoder和Encoder的顶层抽象是怎么设计的?Netty自带的那些定长解码器、行解码器、基于长度域的解码器是怎么实现的?你调用writeAndFlush,数据是怎么一步步变成字节流写到Socket里的?
除了源码剖析,课程还专门讲了性能调优。比如单机怎么压测到百万连接,从系统层面和应用层面有哪些手段。还有一些Netty特有的工具类,像比JDK自己还快的FastThreadLocal,用来减少GC的轻量级对象池Recycler,都会讲到。
目录结构:
第1章 课程介绍
1-1 Netty深入剖析试看
第2章 Netty基本组件
使用一个简单的socket例子概括Netty里面的基本组件,包括NioEventLoop,Channel,ByteBuf,Pipeline,ChannelHandler
2-1 一个简单的socket例子
2-2 Netty对于socket的抽象
2-3 Netty组件简单介绍
第3章 Netty服务端启动
分析服务端启动流程,包括服务端Channel的创建,初始化,以及注册到selector
3-1 服务端启动demo
3-2 服务端Channel的创建试看
3-3 服务端Channel的初始化
3-4 注册selector
3-5 服务端口的绑定
3-6 服务端启动总结
第4章 NioEventLoop
分析Netty reactor线程处理过程,包括事件监听,事件处理,常规任务处理和定时任务处理
4-1 NioEventLoop概述
4-2 NioEventLoop创建概述
4-3 ThreadPerTaskThread
4-4 创建NioEventLoop线程
4-5 创建线程选择器
4-6 NioEventLoop的启动
4-7 NioEventLoop执行概述
4-8 检测IO事件
4-9 处理IO事件
4-10 -reactor线程任务的执行
4-11 -NioEventLoop总结
第5章 新连接接入
分析新连接接入以及绑定reactor线程,绑定到selector的过程
5-1 新连接接入概述
5-2 新连接检测试看
5-3 NioSocketChannel的创建
5-4 Channel的分类
5-5 新连接NioEventLoop的分配和selector注册
5-6 NioSocketChannel读事件的注册
5-7 新连接接入总结
第6章 pipeline
分析pipeline的创建,初始化,添加和删除ChannelHandler,事件传播机制,异常传播机制
6-1 pipeline概述
6-2 pipeline初始化
6-3 添加ChannelHandler
6-4 删除ChannelHandler
6-5 inBound事件的传播
6-6 outBound事件的传播
6-7 异常的传播
6-8 pipeline总结.mp4
第7章 ByteBuf
详细分析ByteBuf种类,如何减少多线程内存分配竞争,不同大小内存是如何分配的
7-1 内存分配概述
7-2 ByteBuf结构以及重要api
7-3 ByteBuf分类
7-4 内存分配器ByteBufAllocator分析
7-5 UnPooledByteBufAllocator分析
7-6 PooledByteBufAllocator概述
7-7 directArena分配direct内存的流程
7-8 内存规格的介绍
7-9 缓存数据结构
7-10 命中缓存的分配流程
7-11 arena、chunk、page、subpage概念
7-12 page 级别内存分配
7-13 subpage 级别的内存分配
7-14 ByteBuf的回收
7-15 总结
第8章 Netty解码
详细分析Netty解码原理,解码器抽象,以及几种常见的解码器
8-1 Netty解码概述
8-2 抽象解码器ByteToMessageDecoder
8-3 基于固定长度解码器分析
8-4 行解码器分析
8-5 基于分隔符解码器分析
8-6 基于长度域解码器参数分析
8-7 基于长度域解码器分析
8-8 解码器总结
第9章 Netty编码及writeAndFlush()
writeAndFlush传播流程,编码器抽象,writeAndFlush详细流程
9-1 Netty编码概述
9-2 writeAndFlush()抽象步骤
9-3 抽象编码器MessageToByteEncoder
9-4 写buffer队列
9-5 刷新buffer队列
9-6 总结
第10章 Netty性能优化工具类解析
详细分析Netty里面最高频使用的两个性能优化类FastThreadLocal以及轻量级对象池Recycler
10-1 性能优化工具类概述
10-2 FastThreadLocal的使用
10-3 FastThreadLocal的创建和get()实现
10-4 FastThreadLocal的set实现
10-5 Recycler的使用
10-6 Recycler的创建
10-7 从Recycler中获取对象
10-8 同线程回收对象
10-9 异线程回收对象
10-10 异线程收割对象
10-11 性能优化工具类总结
第11章 Netty设计模式应用
分析各类常见设计模式以及在Netty中的应用
11-1 单例模式在Netty里面的应用
11-2 策略模式在Netty里面的应用
11-3 装饰者模式在Netty里面的应用
11-4 观察者模式在Netty里面的应用
11-5 迭代器模式在Netty里面的应用
11-6 责任链模式在Netty里面的应用
第12章 Netty高性能并发调优
系统层面单机如何支持百万连接,如何提升应用层面性能
12-1 性能调优概述
12-2 单机百万连接模拟与瓶颈
12-3 单机百万连接调优过程
12-4 Netty应用级别性能瓶颈
12-5 Netty应用级别性能调优过程
第13章 课程总结
对本课程做一个回顾总结
13-1 课程回顾和总结

评论(0)