`
gaojingsong
  • 浏览: 1211074 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Netty基础介绍】

阅读更多

 

一、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

  • 描述: 服务端
  • 大小: 77.7 KB
  • 描述: 整体架构
  • 大小: 31.4 KB
  • 描述: 客户端
  • 大小: 119.4 KB
0
3
分享到:
评论

相关推荐

    跟闪电侠学Netty:Netty即时聊天实战与底层原理-book-netty.zip

    《跟闪电侠学Netty:Netty即时聊天实战与底层原理》是一本深入浅出的Netty技术指南,旨在...通过学习这本书,你不仅可以学会Netty的基本使用,还能深入了解其设计思想和优化手段,为你的Java网络编程之路打下坚实基础。

    Netty权威指南第二版

    《Netty权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty...

    Netty权威指南 第2版 带书签目录 完整版

    《Netty权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty...

    Netty权威指南完整版高清pdf

    总的来说,《Netty权威指南》是一本全面且深入的Netty学习资料,无论你是初学者还是有经验的开发者,都能从中获益,提升你的网络编程技能,为构建高性能、低延迟的网络应用打下坚实基础。通过阅读这本书,你将能够...

    netty实战教程、netty代码demo

    以下是对 Netty 的详细介绍以及如何通过代码示例进行学习。 一、Netty 框架基础 Netty 是由 JBoss 组织开源的一个网络通信框架,基于 Java NIO(非阻塞I/O)构建,提供了一套高度抽象和优化的 API,使得开发者可以...

    Netty权威指南PDF书籍

    Netty 的设计目标是提供一个灵活且高效的基础架构,允许开发者快速构建网络服务,同时避免常见的性能瓶颈。 2. **Netty 的主要特点** - **异步事件驱动**:Netty 使用非阻塞 I/O 模型,提高了系统的并发处理能力。...

    Netty学习资料.zip

    首先,资料部分可能包含了一些关于 Netty 的基础知识介绍,比如它的设计理念、核心组件以及在实际应用中的案例。这些资料可以帮助初学者快速建立起对 Netty 的整体认识,理解其在分布式系统、游戏服务器、流媒体服务...

    Netty权威指南高清版本

    首先,Netty的基础知识包括了NIO(非阻塞I/O)的概念。NIO在Java中提供了一种不同于传统阻塞I/O的I/O模型,它允许多个连接并行处理,而非在一个连接上等待数据读写完成。Netty充分利用了NIO的特性,实现了高效的网络...

    netty-socketio api接口文档.7z

    1. **Netty基础**:Netty的核心是它的Channel和EventLoop系统。Channel是网络连接的抽象,负责读写数据。EventLoop是事件处理循环,处理I/O事件并调度任务。了解这些基础概念是理解和使用Netty的关键。 2. **...

    Netty权威指南 第2版 带书签目录 高清完整版.pdf

    《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、...

    netty in action(中英版) netty权威指南(第1,2版)

    Netty的Channel接口是整个框架的基础,代表了一个打开的连接或者一个可以读写数据的通道。 在《Netty权威指南》中,读者会了解到如何使用ChannelHandler进行事件处理。ChannelHandler是Netty中的核心组件,负责处理...

    Netty权威指南(第2版)

    《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、...

    netty4 api 中文

    这个CHM文档将详细介绍Netty 4.1的所有类、接口和方法,是深入理解Netty框架、优化网络应用性能、解决实际问题的必备手册。对于希望学习Netty的开发者,建议先熟悉Java NIO基础,然后结合这个中文API文档,逐步探索...

    netty4中文用户手册

    Netty4用户手册还介绍了如何使用Netty实现基础的网络应用,例如抛弃服务器、应答服务器、时间服务器和时间客户端。这些示例有助于用户了解Netty的核心组件和工作原理,比如 ChannelHandler、ChannelInitializer 和 ...

    netty学习教程

    1. **Netty基础** - Netty架构:理解Netty的核心组件,如EventLoop、Channel、Pipeline和Buffer。 - 异步事件驱动:讲解Netty如何通过非阻塞I/O实现高效的网络通信。 - ByteBuf:Netty自定义的字节缓冲区,比Java...

    netty原理的讲解

    在Netty讲解-基础的压缩包中,可能包含了关于Netty基本概念、Channel、EventLoop、ByteBuf、Handler、Pipeline等组件的介绍,以及如何创建简单的Netty服务器和客户端的示例代码。这些内容将帮助初学者快速理解和上手...

    Netty 4.x User Guide 中文翻译《Netty 4.x 用户指南》

    在“开始之前”,用户指南会介绍Netty的基础概念,比如事件循环模型、缓冲区管理以及网络编程中的一些基本概念。Netty中,事件循环模型是其高性能的关键所在,通过一组精心设计的事件循环线程,可以高效地处理网络...

    netty网络编程学习文档

    首先,会介绍Bootstrap类,它是Netty服务端的启动器,通过它可以配置服务器的参数,如绑定的端口、事件循环组等。接着,讲解ChannelHandler,它是处理网络事件的主要组件,可以实现自定义的业务逻辑。ChannelFuture...

    Netty权威指南PDF

    书中还会介绍如何在Netty中实现安全连接,以及如何处理证书和密钥等安全相关的问题。 最后,本书还将涉及Netty在分布式系统、微服务架构中的应用,以及如何与其他技术如Spring Boot、Dubbo等进行集成。这将帮助读者...

Global site tag (gtag.js) - Google Analytics