diff --git a/longpolling/demo/demo3/dev-protocol-netty-server/src/main/java/com/baiye/netty/server/MainConfig.java b/longpolling/demo/demo3/dev-protocol-netty-server/src/main/java/com/baiye/netty/server/MainConfig.java index 5fcebdf..f2a2b76 100644 --- a/longpolling/demo/demo3/dev-protocol-netty-server/src/main/java/com/baiye/netty/server/MainConfig.java +++ b/longpolling/demo/demo3/dev-protocol-netty-server/src/main/java/com/baiye/netty/server/MainConfig.java @@ -4,7 +4,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan(basePackages = {"com.bfxy.*"}) +@ComponentScan(basePackages = {"com.baiye.*"}) public class MainConfig { diff --git a/longpolling/netty/README.md b/longpolling/netty/README.md index 50ee539..bbfb489 100644 --- a/longpolling/netty/README.md +++ b/longpolling/netty/README.md @@ -1,5 +1,56 @@ # 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 的格式是通用的 - 只需要把业务相关的数据格式进行定义即可,就是对应的什么模型类 -### 3 整合 SpringBoot - 定义注解 -- +### 3 整合 SpringBoot - 思路 + +### 4. 高可用 Netty 架构分析 +![Netty高可用架构](pic/Netty架构设计.png) +- 常见的负载均衡策略 : LBS / Haproxy + Keepalived / Nginx +- 选择最小连接数的策略 diff --git a/longpolling/netty/pic/Netty架构设计.png b/longpolling/netty/pic/Netty架构设计.png new file mode 100644 index 0000000..3f8085c Binary files /dev/null and b/longpolling/netty/pic/Netty架构设计.png differ