netty的线程模型, 调优 及 献上写过注释的源码工程

本文介绍了Netty在Http服务器、Socket与RPC、WebSocket等方面的应用,详细探讨了Reactor线程模型,包括其五大角色及工作流程。文章还分享了如何进行单机百万性能调优,包括突破文件句柄限制和应用级别调优策略。最后,作者分享了阅读Netty源码的心得体会,并提供了一份注解过的Netty源码工程。
摘要由CSDN通过智能技术生成

Netty能干什么?

Http服务器

使用Netty可以编写一个 Http服务器, 就像tomcat那样,能接受用户发送的http请求, , 只不过没有实现Servelt规范, 但是它也能解析携带的参数, 对请求的路径进行路由导航, 从而实现将不同的请求导向不同的handler进行处理

对socket与RPC的支持

Netty可是实现的第二件事就是Socket编程,也是它最为广泛的应用领域

进行微服务开发时不可丢弃的一个点, 服务和服务之间如果使用Http通信不是不行,但是http的底层使用的也是socket, 相对我们直接使用netty加持socket效果会更好 (比如阿里的Dubbo)

当然Netty能做的事还有很多比如自定义通信协议等等,,,

对WebSocket的支持

Netty对WebSocket也提供了强大的支持, netty内置的处理器会为我们做好大量的机械性麻烦性的工作, 如WebSocketServerProtocolHandler内置编解码处理, 心跳检验等, 可以让我们专注于实现自己的业务逻辑

Reactor线程模型

Reactor线程模型, 顾名思义就像核反应堆一样, 是一种很劲爆的线程模型

最经典的两种图就像下面这样

上面两种图所描述的都是Reactor线程模型

Reactor线程模型五大角色
  • handle

handle本质上表示是一种资源 , 在不同的操作系统上他们的名称又不一样, 比如在windows上成它为文件句柄 , 而在linux中称它为文件描述符, 其实我这样说, handle的概念就显得比较抽象 不容易理解 , 具体一点说handle是啥呢 ? 比如客户端向服务端发送一个连接请求,这个socket请求对操作系统来说, 本质上就是handle

在Reactor线程模型中的Handle 就是限制netty并发量的主要原因, 下面的调优主要也是为了突破这个限制

  • Synchronius Event Demultiplexer

意为同步事件分离器, 也是一看这个名字完全没有头绪它是什么, 其实, 在本质上它是一个操作系统层面的系统调用, 操作系统用它来阻塞的等待事件的发生, 具体一点它来说, 比如它可以是Linux系统上的IO多

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值