|
|
@ -1,5 +1,56 @@
|
|
|
|
# Netty
|
|
|
|
# Netty
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 主要方案
|
|
|
|
|
|
|
|
- 完美应用示例(十万级): 线程池异步业务 + (Linux 句柄) + 单机Netty + 日志
|
|
|
|
|
|
|
|
- 异步化完美方案(百万级): 线程池异步业务 + (Linux 句柄) + HA高可用 + 日志
|
|
|
|
|
|
|
|
- 多服务端解决方案(千万级): Disruptor异步业务 + (Linux 句柄) + HA高可用 + 日志
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 参考资料
|
|
|
|
|
|
|
|
- https://www.imooc.com/t/6224286 慕课网牛人教程
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty基本组件
|
|
|
|
|
|
|
|
- NioEventLoop,Channel,ByteBuf,Pipeline,ChannelHandler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty服务端启动
|
|
|
|
|
|
|
|
- 分析服务端启动流程,包括服务端Channel的创建,初始化,以及注册到selector
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## NioEventLoop
|
|
|
|
|
|
|
|
- 分析Netty reactor线程处理过程,包括事件监听,事件处理,常规任务处理和定时任务处理
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 新连接接入
|
|
|
|
|
|
|
|
- 分析新连接接入以及绑定reactor线程,绑定到selector的过程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## pipeline
|
|
|
|
|
|
|
|
- 分析pipeline的创建,初始化,添加和删除ChannelHandler,事件传播机制,异常传播机制
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## ByteBuf
|
|
|
|
|
|
|
|
- 详细分析ByteBuf种类,如何减少多线程内存分配竞争,不同大小内存是如何分配的
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty解码
|
|
|
|
|
|
|
|
- 详细分析Netty解码原理,解码器抽象,以及几种常见的解码器
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty编码及writeAndFlush()
|
|
|
|
|
|
|
|
- writeAndFlush传播流程,编码器抽象,writeAndFlush详细流程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty性能优化工具类解析
|
|
|
|
|
|
|
|
- 详细分析Netty里面最高频使用的两个性能优化类FastThreadLocal以及轻量级对象池Recycler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty设计模式应用
|
|
|
|
|
|
|
|
- 分析各类常见设计模式以及在Netty中的应用
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty高性能并发调优
|
|
|
|
|
|
|
|
- 系统层面单机如何支持百万连接,如何提升应用层面性能
|
|
|
|
|
|
|
|
- 单机通过修改Linux句柄数目限制提升
|
|
|
|
|
|
|
|
- 应用层主要是通过线程池和异步方式进行调优
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Netty调优
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 实战及应用
|
|
|
|
|
|
|
|
- 开源软件中的应用
|
|
|
|
|
|
|
|
- 实现 RPC
|
|
|
|
|
|
|
|
|
|
|
|
## 数据可靠性通信场景分析与架构设计 - 实际场景
|
|
|
|
## 数据可靠性通信场景分析与架构设计 - 实际场景
|
|
|
|
- 数据通信要求实时性高, 且高性能, 异构系统
|
|
|
|
- 数据通信要求实时性高, 且高性能, 异构系统
|
|
|
|
- 需要保障不同的业务请求对应不同的实现
|
|
|
|
- 需要保障不同的业务请求对应不同的实现
|
|
|
@ -18,9 +69,13 @@
|
|
|
|
- Message 的格式是通用的
|
|
|
|
- Message 的格式是通用的
|
|
|
|
- 只需要把业务相关的数据格式进行定义即可,就是对应的什么模型类
|
|
|
|
- 只需要把业务相关的数据格式进行定义即可,就是对应的什么模型类
|
|
|
|
|
|
|
|
|
|
|
|
### 3 整合 SpringBoot - 定义注解
|
|
|
|
### 3 整合 SpringBoot - 思路
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 高可用 Netty 架构分析
|
|
|
|
|
|
|
|
![Netty高可用架构](pic/Netty架构设计.png)
|
|
|
|
|
|
|
|
- 常见的负载均衡策略 : LBS / Haproxy + Keepalived / Nginx
|
|
|
|
|
|
|
|
- 选择最小连接数的策略
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|