本文将介绍 Netty,Java 平台上使用最广泛的 NIO 包,它是对 JDK 中的 NIO 实现的一层封装,让我们能更方便地开发 NIO 程序
其实,Netty 不仅仅是 NIO 吧,但是,基本上大家都冲着 NIO 来的。
个人感觉国内对于 Netty 的吹嘘是有点过了,主要是很多人靠它吃饭,恨不得把 Netty 吹上天去,这样读者就愿意掏钱了,这种现象也是挺不好的,反而使得初学者觉得 Netty 是什么高深的技术一样。
Netty 的源码不是很简单,因为它比较多,而且各个类之间的关系错综复杂,很多人说它的源码很好,这点我觉得一般,真要说好代码,还得 Doug Lea 的并发源码比较漂亮,一行行都是精华,不过它们是不同类型的,也没什么好对比的。Netty 源码好就好在它的接口使用比较灵活,往往接口好用的框架,源码都不会太简单。
本篇就就以实战为导向,深度解读Netty底层的核心源码以及他的架构设计!如果你能耐心看完这份Netty源码笔记,那么你将能够灵活运用Netty的特性,加深多线程实战应用、精通Netty的底层核心源码。同时你还会学习到分布式RPC与10亿级任务调度和监控引擎这两个高级项目!
由于文章的篇幅文章有限,小编只能为打击展示部分内容和大概说一下会讲到哪些内容
Netty基础部分
Netty概述
Netty服务端构建
Netty客户端的运用(Java多线程交互、Netty客户端与服务端短连接、Netty客户端与服务端长连接)
Netty原理部分
多路复用器(NIO与BIO的区别、epoll模型与select模型的区别)
Nety线程模型
编码和解码
序列化(Protobuf序列化、Kryo序列化)
零拷贝
背压(TCP窗口、Flink实时计算引擎的背压原理)
分布式RPC部分
Netty整合Spring
采用Netty实现一套RPC框架
分布式RPC的构建(服务注册与发现、动态代理)
Netty核心组件源码剖析部分
NioEventLoopGroup源码剖析
NioEventLoop源码剖析(NioEventLoop开启Selector、NioEventLoop的run0方法解读、NioEventL oop重新构建Selector和Channel的注册)
Channel源码剖析(AbstractChannel源码剖析、AbstratNioChannel源码剖析、AbstractNioByteChanel源码剖析、AsracNioMessgeChannel源码剖析、NioSocketChanel源码剖析、NioSererSocketChannel源码剖析)
Netty缓冲区ByteBuf源码剖析(AbstractByteBuf源码剖析、
AbstractReferenceCountedByteBuf源码剖析、ReferenceCountUpdater源码剖析、CompositeByteBuf源码剖析、PooledByteBuf源码剖析)
Netty内存泄漏检测机制源码剖析(内存泄漏检测原理、内存泄漏器ResourceLeakDetector源码剖析)
Netty读/写请求源码剖析部分
ServerBootstrap启动过程剖析
Netty对I/O就绪事件的处理(NioEventLoop就绪处理之OP_ ACCEPT、NioEventLoop就绪处理之OP_ READ)
Netty内存管理部分
Netty内存管理策略介绍
PoolChunk内存分配
PoolSubpage内存分配与释放
PoolArena内存管理
RecvByteBufllocator内存分配计算
Netty时间轮的高级应用部分
Netty时间轮的解读
Netty时间轮改造方案制订
时间轮高级应用之架构设计
时间轮高级应用之实战10亿级任务
Netty问题分析与性能调优部分
Netty服务在Linux服务器上的部署
Netty服务模拟秒杀压测
常见的生产问题分析
性能调优