Skip to content

Commit 3567829

Browse files
committed
add netty reactor readme markdown file in springboot sample
1 parent 11150a0 commit 3567829

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

springboot-netty-sample/README.md

+68
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,74 @@
2323

2424

2525

26+
#### Netty NIO 中的Reactor 开发模式
27+
28+
Netty 三种开发模式版本
29+
30+
- BIO 下是 Thread-Per-Connection
31+
32+
​ <img src="https://tva1.sinaimg.cn/large/008i3skNly1gyolp1ody6j31fy0kggpn.jpg" alt="image-20220124112504631" style="zoom:40%;" algin="left"/>
33+
34+
***Thread-Per-Connection:对应每个连接都有1个线程处理,1个线程同时处理:读取、解码、计算、编码、发送***
35+
36+
37+
38+
- NIO 下是 Reactor
39+
40+
<img src="https://tva1.sinaimg.cn/large/008i3skNly1gyolp5zqpaj316w0pmadn.jpg" alt="image-20220124112753682" style="zoom:40%;" align="left" >
41+
42+
***Reactor 多线程模式,由多个线程负责:读取、发送,由线程池负责处理:解码、计算、编码***
43+
44+
***Reactor 主从多线程模式,由单独mainReactor 单线程负责接收请求,subReactor和 Reactor 多线程模式一致***
45+
46+
47+
48+
- AIO 下是 Proactor
49+
50+
Reactor 是一种开发模式,模式的核心流程:
51+
52+
> 注册感兴趣的事件 -> 扫描是否有感兴趣的事件发生 -> 事件发生后做出相应的处理
53+
54+
55+
56+
##### Netty下使用 NIO 示范例
57+
58+
- Reactor 单线程模式
59+
60+
- ```java
61+
//线程数1
62+
EventLoopGroup eventGroup = new NioEventLoopGroup(1);
63+
64+
ServerBootStrap serverBootStrap = new ServerBootStrap();
65+
serverBootStrap.group(eventGroup);
66+
```
67+
68+
- Reactor 多线程模式
69+
70+
- ```java
71+
//多线程,不传具体的线程数时,Netty会根据CPU核心数分配
72+
EventLoopGroup eventGroup = new NioEventLoopGroup();
73+
74+
ServerBootStrap serverBootStrap = new ServerBootStrap();
75+
serverBootStrap.group(serverBootStrap);
76+
```
77+
78+
- Reactor 主从多线程模式
79+
80+
- ```java
81+
// 主线程负责接收请求 acceptor,是单线程
82+
EventLoopGroup bossGroup = new NioEventLoopGroup();
83+
// 从线程负责:读取、解码、计算、编码、发送,是多线程
84+
EventLoopGroup workerGroup = new NioEventLoopGroup();
85+
86+
SeverBootStrap serverBootStrap = new ServerBootStrap();
87+
serverBootStrap.group(bossGroup, workerGroup);
88+
```
89+
90+
91+
92+
93+
2694

2795

2896

0 commit comments

Comments
 (0)