本机传输
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