学习使用netty

本文详细介绍了Netty,一个高性能的异步事件驱动的NIO框架,包括Netty的特性、与BIO和NIO的区别、核心组件如Channel、EventLoop、ChannelHandler和ChannelPipeline的详解,以及引导程序ServerBootstrap和Bootstrap的使用。Netty在高并发场景下表现出色,通过内存池、零拷贝等技术提升了性能,并提供了丰富的API和解码器/编码器支持。
摘要由CSDN通过智能技术生成

学习使用netty

netty详细介绍1:https://www.infoq.cn/article/netty-high-performance/#anch111813
netty详细介绍2:https://blog.csdn.net/sun7545526/category_7685695.html
netty使用:https://blog.csdn.net/haoyuyang/article/details/53243785

1. netty简介

Netty 是一个高性能、异步事件驱动的 NIO 框架,它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。

作为当前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于 Netty 的 NIO 框架构建。

Netty有很多重要的特性,主要特性如下:

  • 优雅的设计
  • 统一的API接口,支持多种传输类型,例如OIO,NIO
  • 简单而强大的线程模型
  • 丰富的文档
  • 卓越的性能
  • 拥有比原生Java API 更高的性能与更低的延迟
  • 基于池化和复用技术,使资源消耗更低
  • 安全性
  • 完整的SSL/TLS以及StartTLS支持
  • 可用于受限环境,如Applet以及OSGI

Netty的以上特性,比较适合客户端数据较大的请求/处理场景,例如web服务器等,要想知道有哪些系统使用了Netty,可以参考:http://netty.io/wiki/adopters.html

2. bio和nio已经netty

BIO:阻塞io:在早期的java中使用:
https://blog.csdn.net/sqlgao22/article/details/102858119

NIO:非阻塞io:在java4引入
https://blog.csdn.net/sqlgao22/article/details/103087676
NIO相比于BIO,该模型有以下特点:
1.使用较少的线程便可以处理许多连接,因此也减少了内存管理和上下文切换所带来开销
2.当没有 I/O 操作需要处理的时候,线程也可以被用于其他任务.

虽然Java 的NIO在性能上比BIO已经相当的优秀,但是要做到如此正确和安全并
不容易。特别是,在高负载下可靠和高效地处理和调度 I/O 操作是一项繁琐而且容易出错的任务,此时就时Netty上场的时间了。

netty
Netty对NIO的API进行了封装,通过以下手段让性能又得到了一定程度的提升
1.使用多路复用技术,提高处理连接的并发性
2.零拷贝:Netty的接收和发送数据采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝,并且Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象进行一次操作
3.Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题
4. 内存池:为了减少堆外直接内存的分配和回收产生的资源损耗问题,Netty提供了基于内存池的缓冲区重用机制
5.使用主从Reactor多线程模型,提高并发性
6.采用了串行无锁化设计,在IO线程内部进行串行操作,避免多线程竞争导致的性能下降
7. 默认使用Protobuf的序列化框架
8. 灵活的TCP参数配置

详细说明,可参考: http://www.infoq.com/cn/articles/netty-high-performance#anch11181

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值