《Java架构师的第一性原理》26Java基础之Netty源码剖析与实战(极客时间 傅健)

极客时间 98.Netty源码剖析与实战

课程名称:极客时间《Netty源码剖析与实战》

讲师简介

傅健,Netty 源码贡献者。

思科中国研发中心平台软件工程师,毕业后一直在思科工作,已有 9 年。做过很多项目,从移动端应用到文档存储系统、从消息系统到电话接入系统,接触过很多不同类型的开源软件且很喜欢深究原理,所以现在也是 Netty、Jedis、Spring Data Redis、influxdb–java、Jenkins 等很多开源项目的 Contributor 。

第一章 初识Netty

1.1 课程内容

Netty是最易用最强大的Java网络框架

学习netty难点

  • Java高阶知识
  • 网络知识
  • 算法优化策略

学习方法

  • 抓住netty的主线
  • 带着问题去学习

学习一个技术的过程

  • 知道这个技术本质和位置了解过去现在与未来
  • 了解原理,会使用这个技术
  • 尝试改造这个技术,添砖加瓦

知识点:Cassada、Dubbo源码解析、社区贡献代码

成果:

  • 掌握Java网络编程基本知识和原理
  • 使用Netty构建一个能推向产品线的Java网络服务器
  • 熟悉Netty核心源码以及其深层原理
  • 能够熟练诊断、分析并排查netty使用中的各种故障

1.2 内容综述

  • [Netty 初识]
  • [Netty 源码:领域知识(必备知识) - 7 个]
  • [Netty 源码:主线分析(核心逻辑) - 7 个]
  • [Netty 优化方案]
  • [Netty 实践]
  • [Netty 源码深入]
  • [Netty 其它问题]

1.3 解开Netty面纱

Netty 由 Trustin Lee(韩国,Line 公司)2004年开发。

Netty是什么?

  • 本质:网络应用程序框架
  • 实现:异步、事件驱动
  • 特性:高性能、可维护、快速开发
  • 用途:开发服务器和客户端

两个demo

EchoServer
EchoClient

HttpHelloWorldServer
HttpHelloWorldServerHandler

1.4 为什么不直接用JDK NIO

Netty做的更多:

  • 支持常用应用层协议
  • 解决传输问题:粘包、半包现象
  • 支持流量整形
  • 完善的断链、Idle等异常处理等

 

1.5 为什么独选Netty?

1.6 Netty的前尘往事

1.7 Netty的现状与趋势

第二章 Netty 源码:从“点”(领域知识)的角度剖析

第三章 Netty 源码:从“线”(请求处理)的角度剖析 

第四章 Netty实战入门:写一个“玩具项目”

第五章 Netty实战进阶:把“玩具”变成产品

第六章 成长为Netty的贡献者

 

[Netty 初识]

[1.0 Netty 怎么学]

[1.1 Netty 面试题精选]

 

[Netty 源码:领域知识(必备知识) - 7 个] 

[2.1 三种 I/O 模式:BIO/NIO/AIO]

2.2 三种 Reactor 模式:主从模式

[2.3 TCP 粘包与拆包:固定长度、固定分隔符、指定长度]

[2.4 二次编解码:protobuf/MessagePack/json/...]

[2.5 空闲监测:keepalive 与 idle 监测]

[2.6 玩转内存:堆内和堆外内存]

[2.7 其它方面:锁粒度、并发类、对象大小...]

 

[Netty 源码:主线分析(核心逻辑) - 7 个]

 

3.1 启动服务:NioServerSocketChannel 是什么时候激活的

3.2 构建连接:NioSocketChannel 是什么时候激活的

3.3 接收数据:自适应缓冲区和连接读是为了解决什么问题

3.4 处理业务:事件是如何在 pipeline 中传播的

3.5 发送数据:自适应写和连接写同样是为了解决什么问题

3.6 关闭连接:本质是取消 Channel 在 Selelctor 的注册

[3.7 关闭服务:如何优雅关闭服务]

 

[Netty 优化方案]

 

[4.1.1 参数调优:系统参数和 Netty 参数优化]

[4.2.1 跟踪诊断(上):完善日志]

[4.2.2 跟踪诊断(中):流量数据可视化]

4.2.3 跟踪诊断(下):内存泄露跟踪

[4.3.1 优化使用:线程整改]

[4.3.2 优化使用:延迟刷新 - 多次写一次刷新]

[4.3.3 优化使用:流量整形]

[4.3.4 优化使用:开启 Native 模式]

[4.3.5 优化使用:其它优化措施]

[4.4.1 安全增强:高低水位线 - 防止 OOM]

[4.4.2 安全增强:空闲检测 - 避免恶意连接只占坑不干活]

[4.4.3 安全增强:黑白名单]

[4.4.4 安全增强:SSL]

...

 

[Netty 实践]

 

[5.1 Dubbo 如何使用 Netty]

[5.2 Hadoop 如何使用 Netty]

[5.3 Cassandra 如何使用 Netty]

...

 

[Netty 源码深入]

Netty 核心组件

Netty 三大组件(上) Channel

[Netty 三大组件(中) ChannelPipleLine]

Netty 三大组件(下) NioEventLoop

Netty 对零拷贝的改进

Netty 工具类(01) Promise 异步框架的设计

Netty 工具类(02) FastThreadLocal 框架的设计

Netty 工具类(03) Recycler 对象池的设计

[Netty 其它问题]

 

99 直接读这些牛人的原文

 

posted @ 2023-12-21 13:59  沙漏哟  阅读(22)  评论(0编辑  收藏  举报