本机传输
Netty 提供以下特定于平台的 JNI 传输
- Linux(自 4.0.16 起)
- MacOS/BSD(自 4.1.11 起)
这些 JNI 传输添加了特定于特定平台的功能,产生更少的垃圾,并且与基于 NIO 的传输相比,通常会提高性能。
请注意,您必须为依赖项指定正确的分类器,以确保包含相应的本机库。
由于本机传输与 NIO 传输兼容,因此您只需执行以下搜索和替换
- 
NioEventLoopGroup→EpollEventLoopGroup
- 
NioEventLoop→EpollEventLoop
- 
NioServerSocketChannel→EpollServerSocketChannel
- 
NioSocketChannel→EpollSocketChannel
由于本机传输不是 Netty 内核的一部分,因此您需要在 Maven pom.xml 中将 netty-transport-native-epoll 作为依赖项提取,或等效于您的构建系统
  <dependencies>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-transport-native-epoll</artifactId>
      <version>${project.version}</version>
      <classifier>linux-x86_64</classifier>
    </dependency>
    ...
  </dependencies>在上面,分类器是 linux-x86_64,这意味着依赖项中包含的本机二进制文件是为在 64 位 x86 CPU 上运行的 Linux 编译的。其他 CPU 架构和一些特定的 Linux 发行版将需要不同的分类器。
注意:所有官方 Linux 构建都链接到 GLIBC。这意味着使用 Musl 作为其 libc 实现的操作系统不受 Netty 本机传输的官方构建支持。如果您希望在不受支持的 CPU 架构或 libc 实现上使用 Netty 本机传输,则需要进行自己的构建。请参阅以下内容以了解如何执行此操作。
要在 sbt 项目中使用本机传输,请将以下行添加到您的 libraryDependencies
"io.netty" % "netty-transport-native-epoll" % "${project.version}" classifier "linux-x86_64"
由于本机传输与 NIO 传输兼容,因此您只需执行以下搜索和替换
- 
NioEventLoopGroup→KQueueEventLoopGroup
- 
NioEventLoop→KQueueEventLoop
- 
NioServerSocketChannel→KQueueServerSocketChannel
- 
NioSocketChannel→KQueueSocketChannel
由于本机传输不是 Netty 内核的一部分,因此您需要在 Maven pom.xml 中将 netty-transport-native-kqueue 作为依赖项提取
  <dependencies>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-transport-native-kqueue</artifactId>
      <version>${project.version}</version>
      <classifier>osx-x86_64</classifier>
    </dependency>
    ...
  </dependencies>要在 sbt 项目中使用本机传输,请将以下行添加到您的 libraryDependencies
"io.netty" % "netty-transport-native-kqueue" % "${project.version}" classifier "osx-x86_64"
如果您已经有了本机传输的 JAR 文件,则不需要自己构建本机传输,因为 JAR 文件已经包含必要的共享库文件(例如 .so、.dll、.dynlib),并且它们将自动加载。
要构建本机传输,您需要使用具有 64 位内核 2.6 或更高版本的 Linux。请同时安装所需的工具和库
# RHEL/CentOS/Fedora:
sudo yum install autoconf automake libtool make tar \
                 glibc-devel \
                 libgcc.i686 glibc-devel.i686
# Debian/Ubuntu:
sudo apt-get install autoconf automake libtool make tar \
                     gcc要构建本机传输,您需要使用 MacOS 10.12 或更高版本。请同时安装所需的工具和库
brew install autoconf automake libtool