Netty

发布时间 2023-04-23 22:47:28作者: KLAPT

1. Netty是什么

Netty是一个高性能、异步事件驱动的网络编程框架,它基于NIO技术实现,提供了简单易用的 API,用于构建各种类型的网络应用程序。

Netty 应用场景

 

  • 服务器间高性能通信,比如RPC、HTTP、WebSocket等协议的实现
  • 分布式系统的消息传输,比如Kafka、ActiveMQ等消息队列
  • 游戏服务器,支持高并发的游戏服务端开发
  • 实时流数据的处理,比如音视频流处理、实时数据传输等
  • 其他高性能的网络应用程序开发

阿里分布式服务框架 Dubbo, 消息中间件RocketMQ都是使用 Netty 作为通讯的基础

3. Netty 核心组件、作用

 

Netty 的零拷贝、

零拷贝(Zero Copy)是一种技术,可以避免在数据传输过程中对数据的多次拷贝操作,从而提高数据传输的效率和性能。在网络编程中,零拷贝技术可以减少数据在内核空间和用户空间之间的拷贝次数,从而提高数据传输效率和降低 CPU 的使用率。

Netty 通过使用 Direct Memory  FileChannel 的方式实现零拷贝。当应用程序将数据写入 Channel 时,Netty 会将数据直接写入到内存缓冲区中,然后通过操作系统提供的 sendfile 或者 writev 等零拷贝技术,将数据从内存缓冲区中传输到网络中,从而避免了中间的多次拷贝操作。同样,当应用程序从 Channel 中读取数据时,Netty 也会将数据直接读取到内存缓冲区中,然后通过零拷贝技术将数据从内存缓冲区传输到用户空间。

通过使用零拷贝技术,Netty 可以避免在数据传输过程中对数据进行多次的拷贝操作,从而提高数据传输的效率和性能。特别是在处理大量数据传输的场景中,零拷贝技术可以大幅度减少 CPU 的使用率,降低系统的负载。