ホームページ  >  記事  >  Java  >  NIO に基づく Netty ネットワーク フレームワーク (詳細な画像とテキストの説明)

NIO に基づく Netty ネットワーク フレームワーク (詳細な画像とテキストの説明)

怪我咯
怪我咯オリジナル
2017-06-25 10:22:243107ブラウズ

Netty は、高性能の非同期イベント駆動型 NIO フレームワークであり、Netty のすべての IO 操作は非同期であり、Future-Listener メカニズムを通じてプロアクティブに実行できます。通知メカニズムを通じて IO 操作の結果を取得または取得します。

Netty の利点は、

a、豊富な機能、組み込みの複数のデータのエンコードおよびデコード機能、および複数のネットワーク プロトコルのサポートです。

b. 高いパフォーマンス。他の主流の NIO ネットワーク フレームワークと比較して、最高の全体的なパフォーマンスを備えています。

c. 拡張性に優れ、提供する ChannelHandler コンポーネントを通じてネットワーク通信を柔軟に拡張できます。

d、使いやすさ、使いやすい API。

e. 多くの商用アプリケーションのテストに合格し、インターネット、オンライン ゲーム、ビッグデータ、通信ソフトウェアなどの多くの業界で商用化に成功しています。

Netty は、典型的な 3 層ネットワーク アーキテクチャを設計に採用しています。論理アーキテクチャ図は次のとおりです。

最初の層: Reactor 通信スケジューリング層。この層の主な役割は、ネットワーク接続と読み取りおよび書き込み操作を監視することです。また、ネットワーク層データをメモリ バッファに読み取り、接続の作成、接続のアクティブ化、読み取りイベント、書き込みイベントなどのさまざまなネットワーク イベントをトリガーする役割を担います。これらのイベントをパイプラインにトリガーすると、パイプラインは後続の処理に対する一連の責任として機能します。

2 番目の層: 責任チェーン パイプライン層。責任チェーン内のイベントの秩序ある前方 (後方) 伝播を担当し、責任チェーンの動的なオーケストレーションも担当します。パイプラインは、関心のあるイベントをリッスンして処理することを選択できます。

3 番目の層: ビジネス ロジック処理層。一般に、次の 2 つのカテゴリに分類できます。 a. ログや注文処理などの純粋なビジネス ロジック処理。 b. HTTP(S) プロトコル、FTP プロトコルなどのアプリケーション層プロトコル管理。

ネットワーク サービスの通信パフォーマンスに影響を与える主な要因は、ネットワーク I/O モデル、スレッド (プロセス) スケジューリング モデル、データのシリアル化方法であることは誰もが知っています。

ネットワーク I/O モデルに関して、Netty はノンブロッキング I/O に基づく実装を採用しており、基礎となる層は JDKNIO フレームワークのセレクターに依存しています。

スレッド スケジューリング モデルに関しては、Netty は Reactor スレッド モデルを採用しています。一般的に使用される Reactor スレッド モデルは 3 つあります。つまり、

a、Reactor シングルスレッド モデル: Reactor シングルスレッド モデルは、すべての I/O 操作が同じ NIO スレッドで完了することを意味します。一部の小容量アプリケーション シナリオでは、シングルスレッド モデルを使用できます。

b. Reactor マルチスレッド モデル: Rector マルチスレッド モデルとシングルスレッド モデルの最大の違いは、I/O 操作を処理する一連の NIO スレッドがあることです。主に、同時実行性が高く、ビジネス量が多いシナリオで使用されます。

c. マスター/スレーブ Reactor マルチスレッド モデル: マスター/スレーブ Reactor スレッド モデルの特徴は、サーバーがクライアント接続を受信するための個別の NIO スレッドではなく、独立した NIO スレッド プールであることです。マスター/スレーブ NIO スレッド モデルを使用すると、すべてのクライアント接続を効果的に処理できないサーバー側のリスニング スレッドのパフォーマンスが不十分であるという問題を解決できます。 Netty スレッド モデルは固定されておらず、3 つの Reactor スレッド モデルをサポートできます。

データのシリアル化に関して、シリアル化のパフォーマンスに影響を与える主な要因は次のとおりです:

a. シリアル化後のコード ストリームのサイズ (ネットワーク帯域幅の占有)。

b. シリアル化および逆シリアル化操作のパフォーマンス (CPU リソース使用量)。

c. 同時通話時のパフォーマンス: 安定性、直線的な成長など。

Netty はデフォルトで GoogleProtobuf バイナリ シリアル化フレームワークのサポートを提供しますが、Netty のエンコードおよびデコード インターフェイスを拡張することで、Avro や Thrift の圧縮バイナリ エンコードおよびデコード フレームワークなど、他の高性能シリアル化フレームワークを実装できます。

以上がNIO に基づく Netty ネットワーク フレームワーク (詳細な画像とテキストの説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。