开局之前
这玩意我用过
但是reactor 劳资不会。。。
如何实现一个线程处理多个连接—reactor模型?
核心类就是reactor
netty中的EventLoop就是reactor
网络连接和reactor是多对一的关系,reactor只能对应到一个Java线程,所以一个网络连接对应一个Java线程
netty中有多少个EventLoop
- 如果 NettybossGroup 只监听一个端口,那 bossGroup 只需要 1 个 EventLoop 就可以了,多了纯属浪费。
- 默认情况下,Netty 会创建“2*CPU 核数”个 EventLoop,由于网络连接与 EventLoop 有稳定的关系,所以事件处理器在处理网络事件的时候是不能有阻塞操作的,否则很容易导致请求大面积超时。如果实在无法避免使用阻塞操作,那可以通过线程池来异步处理。
为何需要bossgroup和workergroup
处理 TCP 连接请求和读写请求是通过两个不同的 socket 完成的
bossGroup 处理完连接请求后,会将这个连接提交给 workerGroup 来处理, workerGroup 里面有多个 EventLoop,使用轮询来决定使用哪个EventLoop?