ネイティブトランスポート
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に対してリンクされています。これは、libc実装としてMuslを使用するオペレーティングシステムは、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