关于netty的一些你需要知道的内容(3)

简介: 关于netty的一些你需要知道的内容(3)

本篇我们继续来看一下关于Netty必须知道的内容。


问题【1】什么是 Netty 的零拷贝?

Netty 的零拷贝主要包含三个方面:


Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS,使用堆外直接内存进行 Socket 读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行 Socket 读写,JVM 会将堆内存 Buffer 拷贝一份到直接内存中,然后才写入 Socket 中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。


Netty 提供了组合 Buffer 对象,可以聚合多个 ByteBuffer 对象,用户可以像操作一个 Buffer 那样方便的对组合 Buffer 进行操作,避免了传统通过内存拷贝的方式将几个小 Buffer 合并成一个大的 Buffer。


Netty 的文件传输采用了 transferTo 方法,它可以直接将文件缓冲区的数据发送到目标 Channel,避免了传统通过循环 write 方式导致的内存拷贝问题。


问题【2】Netty 高性能表现在哪些方面?

IO 线程模型:同步非阻塞,用最少的资源做更多的事。


内存零拷贝:尽量减少不必要的内存拷贝,实现了更高效率的传输。


内存池设计:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查找树管理内存分配情况。


串形化处理读写:避免使用锁带来的性能开销。


高性能序列化协议:支持 protobuf 等高性能序列化协议。


问题【3】Java 网络编程框架中的Netty的具体概念是什么?

Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的,它封装了jdk的nio,让我们使用起来更加方法灵活。

相关文章
|
网络协议 前端开发 Java
Netty实战(二)第一个Netty程序
这只是一个简单的应用程序,但是**它可以伸缩到支持数千个并发连接**——每秒可以比普通的基于套接字的 Java 应用程序处理多得多的消息。
147 0
|
编解码 前端开发 Java
Netty实战(三)Netty的组件和设计
对于 Channel、EventLoop 和 ChannelFuture 类进行的讨论
119 0
|
容器
关于netty的一些你需要知道的内容(2)
关于netty的一些你需要知道的内容(2)
关于netty的一些你需要知道的内容(超简单)
关于netty的一些你需要知道的内容(超简单)
|
编解码 安全 Java
关于netty的一些你需要知道的内容(4)
关于netty的一些你需要知道的内容(4)
|
消息中间件 分布式计算 前端开发
03、Netty学习笔记—(Netty组件学习)
03、Netty学习笔记—(Netty组件学习)
03、Netty学习笔记—(Netty组件学习)
|
存储 Java API
03、Netty学习笔记—(Netty组件学习)(一)
03、Netty学习笔记—(Netty组件学习)(一)
03、Netty学习笔记—(Netty组件学习)(一)
|
分布式计算 Dubbo 网络协议
关于netty的一些你需要知道的内容(5)
关于netty的一些你需要知道的内容(5)
|
安全 搜索推荐 Java
窥探 Netty 源码!Netty 中的 MpscLinkedQueue 究竟是什么鬼?
该文所涉及的 netty 源码版本为 4.1.6。
372 0
|
JSON 缓存 分布式计算
Netty入门 -- 什么是Netty?
Netty入门 -- 什么是Netty?
229 0
Netty入门 -- 什么是Netty?