一、Netty介绍
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。
“快速”和“简单”并不意味着会让你的最终应用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项目,最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。
二、Netty新特性
处理大容量数据流更简单
处理协议编码和单元测试更简单
I/O超时和idle状态检测
应用程序的关闭更简单,更安全
更可靠的OutOfMemoryError预防
三、Netty新的传输方式
1、基于BIO和NIO的UDP传输
2、本地传输(又名 in-VM传输)
3、HTTP通道,可绕过防火墙
四、Netty新的编码器
1、HTTP客户端和服务器端
2、用于实现各种专有协议的工具
五、序列化方式问题:
Java序列化存在如下几个典型问题:
1) Java序列化机制是Java内部的一种对象编解码技术,无法跨语言使用;例如对于异构系统之间的对接,Java序列化后的码流需要能够通过其它语言反序列化成原始对象(副本),目前很难支持;
2) 相比于其它开源的序列化框架,Java序列化后的码流太大,无论是网络传输还是持久化到磁盘,都会导致额外的资源占用;
3) 序列化性能差(CPU资源占用高)。
线程模型问题:由于采用同步阻塞IO,这会导致每个TCP连接都占用1个线程,由于线程资源是JVM虚拟机非常宝贵的资源,当IO读写阻塞导致线程无法及时释放时,会导致系统性能急剧下降,严重的甚至会导致虚拟机无法创建新的线程。
六、高性能的三个主题
1) 传输:用什么样的通道将数据发送给对方,BIO、NIO或者AIO,IO模型在很大程度上决定了框架的性能。
2) 协议:采用什么样的通信协议,HTTP或者内部私有协议。协议的选择不同,性能模型也不同。相比于公有协议,内部私有协议的性能通常可以被设计的更优。
3) 线程:数据报如何读取?读取之后的编解码在哪个线程进行,编解码后的消息如何派发,Reactor线程模型的不同,对性能的影响也非常大。
七、Netty的“零拷贝”主要体现在如下三个方面:
1) Netty的接收和发送ByteBuffer采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行Socket读写,JVM会将堆内存Buffer拷贝一份到直接内存中,然后才写入Socket中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。
2) Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象,用户可以像操作一个Buffer那样方便的对组合Buffer进行操作,避免了传统通过内存拷贝的方式将几个小Buffer合并成一个大的Buffer。
3) Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题。
八、其他技术整合编辑
1、Google Protocol Buffers
2、JBoss Microcontainer, OSGi, Guice以及Spring
相关推荐
《跟闪电侠学Netty:Netty即时聊天实战与底层原理》是一本深入浅出的Netty技术指南,旨在...通过学习这本书,你不仅可以学会Netty的基本使用,还能深入了解其设计思想和优化手段,为你的Java网络编程之路打下坚实基础。
《Netty权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty...
《Netty权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty...
总的来说,《Netty权威指南》是一本全面且深入的Netty学习资料,无论你是初学者还是有经验的开发者,都能从中获益,提升你的网络编程技能,为构建高性能、低延迟的网络应用打下坚实基础。通过阅读这本书,你将能够...
以下是对 Netty 的详细介绍以及如何通过代码示例进行学习。 一、Netty 框架基础 Netty 是由 JBoss 组织开源的一个网络通信框架,基于 Java NIO(非阻塞I/O)构建,提供了一套高度抽象和优化的 API,使得开发者可以...
Netty 的设计目标是提供一个灵活且高效的基础架构,允许开发者快速构建网络服务,同时避免常见的性能瓶颈。 2. **Netty 的主要特点** - **异步事件驱动**:Netty 使用非阻塞 I/O 模型,提高了系统的并发处理能力。...
首先,Netty的基础知识包括了NIO(非阻塞I/O)的概念。NIO在Java中提供了一种不同于传统阻塞I/O的I/O模型,它允许多个连接并行处理,而非在一个连接上等待数据读写完成。Netty充分利用了NIO的特性,实现了高效的网络...
1. **Netty基础**:Netty的核心是它的Channel和EventLoop系统。Channel是网络连接的抽象,负责读写数据。EventLoop是事件处理循环,处理I/O事件并调度任务。了解这些基础概念是理解和使用Netty的关键。 2. **...
《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、...
Netty的Channel接口是整个框架的基础,代表了一个打开的连接或者一个可以读写数据的通道。 在《Netty权威指南》中,读者会了解到如何使用ChannelHandler进行事件处理。ChannelHandler是Netty中的核心组件,负责处理...
《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、...
这个CHM文档将详细介绍Netty 4.1的所有类、接口和方法,是深入理解Netty框架、优化网络应用性能、解决实际问题的必备手册。对于希望学习Netty的开发者,建议先熟悉Java NIO基础,然后结合这个中文API文档,逐步探索...
Netty4用户手册还介绍了如何使用Netty实现基础的网络应用,例如抛弃服务器、应答服务器、时间服务器和时间客户端。这些示例有助于用户了解Netty的核心组件和工作原理,比如 ChannelHandler、ChannelInitializer 和 ...
1. **Netty基础** - Netty架构:理解Netty的核心组件,如EventLoop、Channel、Pipeline和Buffer。 - 异步事件驱动:讲解Netty如何通过非阻塞I/O实现高效的网络通信。 - ByteBuf:Netty自定义的字节缓冲区,比Java...
在Netty讲解-基础的压缩包中,可能包含了关于Netty基本概念、Channel、EventLoop、ByteBuf、Handler、Pipeline等组件的介绍,以及如何创建简单的Netty服务器和客户端的示例代码。这些内容将帮助初学者快速理解和上手...
在“开始之前”,用户指南会介绍Netty的基础概念,比如事件循环模型、缓冲区管理以及网络编程中的一些基本概念。Netty中,事件循环模型是其高性能的关键所在,通过一组精心设计的事件循环线程,可以高效地处理网络...
首先,会介绍Bootstrap类,它是Netty服务端的启动器,通过它可以配置服务器的参数,如绑定的端口、事件循环组等。接着,讲解ChannelHandler,它是处理网络事件的主要组件,可以实现自定义的业务逻辑。ChannelFuture...
书中还会介绍如何在Netty中实现安全连接,以及如何处理证书和密钥等安全相关的问题。 最后,本书还将涉及Netty在分布式系统、微服务架构中的应用,以及如何与其他技术如Spring Boot、Dubbo等进行集成。这将帮助读者...
《Netty in Action》中文版是一本专注于Java网络编程框架Netty的专业书籍,它深入浅出地介绍了如何利用Netty构建高性能、可扩展的网络应用。Netty是基于非阻塞I/O(NIO,Non-blocking I/O)模型的开源框架,广泛应用...