Netty简介

Netty简介

Netty是由JBOSS提供的一个Java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。和传统BIO不同,NIO是非阻塞的,和传统BIO不同,NIO相当于是线程池方式的BIO,相比BIO一个连接一个线程,NIO能支持更多的连接。BIO适合流量很高的应用,如文件传输,NIO适合流量不高,但是并发很高的应用,如聊天、推送。如果既要高并发,又要高流量的可以选择AIO。

Netty随着最近几年的发展,特别是跟着云计算大数据的流行,很多开源分布式框架都使用了Netty作为通讯框架,如:Hadoop、Storm、Spark、Facebook、Twitter、阿里巴巴都在使用的Java高性能NIO通信框架,Netty经过多年打磨,其稳定性和性能达到了非常高的程度。

Netty架构

Netty之所以能够提供高并发和高性能的通讯,主要是由以下原因形成的:

  1. 零拷贝内存池;
  2. 异步非阻塞通讯模型;
  3. 高效的Reactor线程模型;
  4. 无锁化的串行设计;
  5. 高效的并发编程;
  6. 高性能的序列化框架;

Netty三个核心组件:Buffer(缓存)、Channel(通道)和ChannelEvent(事件模型)

Netty的缓存分为堆内存(HeapByteBuf)和直接内存(DirectByteBuf)缓冲区。堆内存缓冲区的特点是分配和回收速度快,可以被JVM自动回收,缺点是进行Socket的IO读写,需要额外进行一次内存复制,将堆内存对应的缓冲区复制到内核中,性能会有一定程度的下降;直接内存缓冲区的特点是非堆内存,,它在堆外进行内存分配,相比于堆内存,它的分配和回收速度会慢一些,但是将它写入或者从Socket Channel中读取时,由于少了一次内存复制,速度比堆内存快。

Channel包括但不限于网络的读、写,客户端发起连接,主动关闭连接,链路关闭,获取通信双方的网络地址等,封装了Socket的操作。当有Socket操作发生时,会触发事件响应操作,主要操作包括channelRead、channelReadComplete、exceptionCaught等方法,还包括连接建立和断开等事件。

Netty正是通过Buffer、Channel、ChannelEvent等的封装,实现了高效率,简单易用的Socket并发方案,其编程简单,默认使用的类都具有很好的效率。

时间: 2024-10-24 03:40:09

Netty简介的相关文章

netty简介与入门

netty作为当前流行的java nio框架,已经成为在大型分布式系统中,用来达到高并发,高可用等性能要求的一种有效手段.目前netty已经支持udp,tcp,websocket,http1.1,https,ftp,smtp等通讯协议,并且支持自定义通讯协议.与此同时,netty也提供了丰富的通讯数据编码和解码器,方便开发者来实现不同的编码要求. 本文以及后续文章,将从一个开发者的视角从对netty的使用,性能调休,源码分析等方面逐一的介绍.由于笔者水平有限,难免见识短浅,权当抛砖引玉. 首先,

Netty 3.7.0 Final 第一篇

netty简介: 做游戏的都知道,netty和mina是网络层通讯流行的两种socket框架.mina出现的早些,属于apache,netty目前更新比较稳定,5暂时还处于alpha版本,本系列netty前四篇主要是介绍目前比较用的多的3系列,后面会简要的说到netty4和mina. netty是网络通讯框架,为什么要使用netty?使用netty有什么好处?基于Java nio的编程的难度其实可以参考Reactor模型,多路复用这些,监听端口,建立线程,关闭连接等等,这些想着都觉得很复杂,而我

Netty学习记录

一.Netty简介 Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞.基于事件驱动.高性能.高可靠性和高可定制性. Netty 是一个 NIO client-server(客户端服务器)框架,使用 Netty 可以快速开发网络应用,例如服务器和客户 端协议. Netty 提供了一种新的方式来使开发网络应用程序,这种新的方式使得它很容易使用和有很强的扩展性. Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API

Android 基于Netty的消息推送方案之Hello World(一)

消息推送方案(轮询.长连接) 轮询 轮询:比较简单的,最容易理解和实现的就是客户端去服务器上拉信息,信息的及时性要求越高则拉信息的频率越高.客户端拉信息的触发可以是一些事件,也可以是一个定时器,不断地去查询服务器.所以这个方案的弊端也是显而易见的,在轮询的频率较高时,服务器端的压力很大,通讯的流量也很大,并且大部分时间都是做的无用功. 长连接 长连接:客户端和服务端维持一个长连接,服务端在有信息推送的时候,借助这个连接把信息发送到客户端.这个方案的优点是信息推送的及时性很高,基本是实时的,并且除

Android 基于Netty的消息推送方案(一)

消息推送方案(轮询.长连接) 轮询 轮询:比较简单的,最容易理解和实现的就是客户端去服务器上拉信息,信息的及时性要求越高则拉信息的频率越高.客户端拉信息的触发可以是一些事件,也可以是一个定时器,不断地去查询服务器.所以这个方案的弊端也是显而易见的,在轮询的频率较高时,服务器端的压力很大,通讯的流量也很大,并且大部分时间都是做的无用功. 长连接 长连接:客户端和服务端维持一个长连接,服务端在有信息推送的时候,借助这个连接把信息发送到客户端.这个方案的优点是信息推送的及时性很高,基本是实时的,并且除

Netty初探

匠心零度 转载请注明原创出处,谢谢! 说在前面 为什么我们需要学习netty?谈谈自己的看法,由于本人水平有限,如果有那里不对,希望各位大佬积极指出,欢迎在留言区进行评论交流.探讨. 由于移动互联网的爆发性的增长,带来了很多机遇与挑战,其中一项就是把有些http协议调用修改为基于TCP自定义协议方式的长连接调用了,让我想起来了一句话:天下武功无坚不破 唯快不破.,所有的出发点都是为了快,并且现在很多互联网上面的项目比如Dubbo.Hadoop系列,MQ等都在使用netty了,如果没有使用到这些使

Netty原理剖析

1. Netty简介 Netty是一个高性能.异步事件驱动的NIO框架,基于JAVA NIO提供的API实现.它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果. 作为当前最流行的NIO框架,Netty在互联网领域.大数据分布式计算领域.游戏行业.通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建. 2. Nett

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introduction/ netty是基于NIO实现的异步事件驱动的网络编程框架,学完NIO以后,应该看看netty的实现,netty框架涉及的内容特别多,这里只介绍netty的基本使用和实现原理,更多扩展的内容将在以后推出. 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎

Netty实战入门详解——让你彻底记住什么是Netty(看不懂你来找我)

一.Netty 简介 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使用 Netty 可以快速开发网络应用,Netty 提供了高层次的抽象来简化 TCP 和 UDP 服务器的编程,但是你仍然可以使用底层的 API. Netty 的内部实现是很复杂的,但是 Netty 提供了简单易用的API从网络处理代码中解耦业务逻辑.Netty 是完全基于 NIO 实现的,所以整个 Netty 都是异步的. Netty 是最流行的 NIO 框架,它已经得到成百上千的商业.商用项目验证,许多