netty入门-1 概述

入门部分内容

本文主要讲一些Netty的优点
后续入门部分会有NettyEventLoopChannelFutureHandlerPipelineByteBuf等概念。

Netty是什么?

Netty是用于开发网络应用的NIO应用框架
首先它是基于Java NIO的,并作出了改进。
我的理解是,NIO是对Socket编程的封装,即从更复杂的Socket编程中跳出来,使用更易用的NIO。Netty同样对NIO做出优化,更加易用。

所以它优点有哪些?

Netty的优点

首先,上面说了他是对NIO的改进
其中一个优点,就是弥补了NIO的缺陷
其次,它拥有高性能,低延迟的特点
最后,它的资源消耗较低
下面我们一个一个来说

对比NIO的优势

  • 易用性。这个易用性体现在哪些地方呢。比如之前使用NIO时我们要自己处理粘包拆包,Netty本身就替我们解决了这个问题。Netty对一些Api做了增强,ByteBuffer有增强版本ByteBuf,等等其他增强。
  • 稳定性。主要是NIO本身有许多BUG和问题,Netty修复了许多问题
  • 可定制性。大部分时候开发者主要关注ChannelHandler的业务逻辑处理即可,在其中可以做许多扩展性操作。

高性能 低延迟

高性能 低延迟主要得益于NettyIO模型
NettyIO模型底层是NIOSelector,多路复用IO
多路复用的事件分发器使用Reactor模式实现
Reactor单线程中运行,监听并把事件分发到对应的处理程序(事先注册的处理函数或者回调函数),本身并不处理事件,只做分发。
且不仅有一个Reactor。是主从 Reactor 多线程模型。

简单来说就是多路复用IO加上使用的分发器模型。
这块可能我自己理解没有很透彻,等后面文章学到我还会再写。
本处仅仅介绍优点,把主从 Reactor 多线程模型都说了就有些偏题了。

资源消耗更低

网络通信框架,当然要处理大量的连接,即相关网络对象与数据。
所以我们要进行优化,减少JVM GC的压力

  • 对象池复用技术。 Netty 通过复用对象,避免频繁创建和销毁带来的开销。
  • 零拷贝技术。 除了操作系统级别的零拷贝技术外,Netty 提供了更多面向用户态的零拷贝技术,例如 NettyI/O 读写时直接使用 DirectBuffer,从而避免了数据在堆内存和堆外内存之间的拷贝。(这个零拷贝实际上NIO就有)

与Tomcat的区别

Tomcat也是常见的网络框架。
它主要针对HTTP ,做一个HTTPserver
Netty不仅支持HTTP 还支持SSHTLS等多种协议。还可以自定义协议

实现一个HTTP Server,还是用Tomcat
但对于面向TCP的网络应用开发,Netty一般更好。

结语

简单说说Netty的优点。
接下来入门部分主要对NettyEventLoopChannelFutureHandlerPipelineByteBuf这些基本概念做整理。
进阶部分就是Netty的一些应用了。

over,感谢阅读。有错误还请批评指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值