Netty的设计架构

什么是Netty

上一篇文章 一文读懂NIO 中,我们介绍了NIO, Java的NIO类库与API都相当复杂,想要写好一个高质量的NIO的程序,你必须精通网络编程与多线程的知识。在这个背景下Netty诞生了,只要进行简单的编码就能开发出一个可靠、高性能的NIO程序。

Reactor模式

Reactor模型是一个事件驱动的模型,也是Netty参照的模型。

Reactor的组成:

1.Reactor

作为一个合格的资本家,你要懂得压缩成本。还记得 《3分钟了解linux网络IO模型》里的 多路复用吗,因为系统发不出工资,只留下一个盯梢的,把其他人毕业向社会输送人才。Reactor模式里面,Reactor就是那个被留下的幸运儿。

2.Handler

就是干杂活的社畜,实际上的读、写操作都是他们在干。

Reactor的3种模式:

1.单线程模式

client发出请求,Reactor通过acceptor接收请求后,就创建一个handler去干活。这个模式很简单,但是一个社畜(handler)的工作能力是有限的,一旦它阻塞住了,Reactor就接不了客了。这也是redis的设计模型。

2.多线模式

公司业务规模扩大了,老板觉得只有一个社畜有点忙不过来,就找了多个社畜一起干活,这就是多线程模式。这个阶段handler也从单线程这个创业初期解放出来了,具体干活的事情就丢给线程池中某个线程去干,它只要结果,然后给出反馈。

3.主从Reactor模型

公司规模再度扩大后,Reactor这个管理者开始忙不过来,他既要去接待客户(client),又要下发任务给社畜(handler)。所以老板又找了个人来进行职能切分,主Reactor用来接待所有来访的客户,把需求通过acceptor提给子Reactor。子Reactor开始指挥下面的社畜干活。

这种模式在业界广泛应用,如Nginx的主从多进程模式,Netty的主从多线程模式。

Netty的主从多线程模式

Netty的主从模式就是改造至Reactor的主从多线程模式

Boss Group

它是个线程池,专门用来接收客户端的连接请求

Worker Group

它也是个线程池,专门用来处理网络的读写操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值