最も成熟したオープンソース NIO フレームワーク Netty

坏嘻嘻
リリース: 2018-09-13 18:19:01
オリジナル
3042 人が閲覧しました

Netty は、高性能の非同期イベント駆動型 NIO フレームワークで、TCP、UDP、およびファイル転送をサポートします。Future-Listener メカニズムを通じて、ユーザーはすべての IO 操作を非同期で行うことができます。通知メカニズムを通じて IO 操作の結果をアクティブに取得または取得します。


JDK は豊富な NIO クラス ライブラリを提供しており、インターネット上には多くの NIO 学習ルーチンがありますが、Java NIO クラス ライブラリを直接使用して安定したライブラリを開発することは困難です。次の理由により、これは簡単ではありません:

1) NIO のクラス ライブラリと API は複雑で、使用するのが面倒です。セレクター、サーバー ソケット チャネル
SocketChannel に習熟する必要があります。 、ByteBufferなど。

2) Java マルチスレッド プログラミングに精通しているなど、基礎としてその他の追加スキルが必要です。これは、NIO プログラミングには Reactor モードが含まれるため、高品質の NIO プログラムを作成するには、マルチスレッドおよびネットワーク プログラミングに精通している必要があります。

3) 信頼性機能を完成させるには、作業量と困難が非常に大きくなります。たとえば、クライアントは、切断と再接続、ネットワークの中断、ハーフパケットの読み取りと書き込み、キャッシュの失敗、ネットワークの混雑、異常なコード ストリーム処理などの問題に直面します。NIO プログラミングの特徴は、機能開発が比較的容易であるにもかかわらず、信頼性が高いことです。能力を補う必要があり、量も難易度も非常に大きいです。

4) JDK NIO バグ。悪名高い epoll バグなど。これにより、Selector がポーリングを空にし、最終的に CPU が 100% になります。この問題はJDK16版のupdateI8で修正されたと公式は主張していますが、JDK1.7版まで問題は存在しますが、BUG発生確率は下がっているだけで、根本的な解決にはなっていません。このバグとこのバグに関連する問題チケットは、次のリンクで見つけることができます:

http://bugsjava.com/bugdatabase/viewbug.do?bugid=6403933
http:/bugs.javacom /bugdatabase /viewbugdo?bugid=2147719

オープンソースの NO フレームワークの開発に伴い、現在、以前の自社開発ソリューションを置き換えるために、オープンソースの NO フレームワークを直接統合する方法を採用する商用システムが増えています。 。最も成熟した NIO フレームワークである Netty を例に挙げます。これは何百もの商用プロジェクトによって検証されています。たとえば、Hadoop の RPC フレームワーク avro は基盤となる通信フレームワークとして Netty を使用し、リアルタイム ストリーミング コンピューティング フレームワークの Sum の基盤となる通信フレームワークも Netty を使用します。また、Twitter の内部 RPC フレームワーク Finagle も基盤となる通信フレームワークが Netty 上に構築されています。

最も成熟したオープンソース NIO フレームワーク Netty

Netty の利点をまとめると次のとおりです。

◎API が使いやすく、開発の敷居が低い。

◎強力な機能。複数のエンコードおよびデコード機能がプリセットされており、複数の主流プロトコルをサポートします。
##◎ 強力なカスタマイズ機能により、ChannelHandler を通じて通信フレームワークを柔軟に拡張できます。

◎高いパフォーマンス 業界の他の主流の NO フレームワークと比較して、Netty は総合的なパフォーマンスが最高です。

◎成熟して安定した Nety は、発見された JDK NIO のバグをすべて修正しており、ビジネス開発者は N1O のバグについて心配する必要がなくなりました。

◎コミュニティは活発で、バージョンの反復サイクルは短く、発見されたバグはすぐに修正できます。同時に、さらに新しい機能が追加されます。

◎大規模な商用アプリケーションテストを経て、その品質が検証されています。インターネット、ビッグデータ、オンライン ゲーム、エンタープライズ アプリケーション、通信ソフトウェアなどの多くの業界で商用化に成功しており、さまざまな業界の商用アプリケーションに完全に対応できることが証明されています。

Netty のパフォーマンスは非常に優れているため、当社の通信フレームワークは Netty に基づいて設計および開発されています。

この記事は、上海商学堂 Java トレーニングによってまとめられた Li Linfeng の「分散サービス フレームワークの原則と実践」を参照しています。Java 技術記事をさらに読んだり、Java 技術情報や学習ビデオを入手したりするには、このコラムに戻ってください。カスタマーサービス担当者にご連絡ください。

次の記事も読む価値があります: 「分散サービス アーキテクチャの原理と機能特性_上海 Java トレーニング」、「マイクロサービス アーキテクチャとは?」マイクロサービス アーキテクチャと SOA アーキテクチャの違い」、「RPC アーキテクチャと原則、業界の主流の RPC フレームワークの紹介」、「古典的な垂直アプリケーション フレームワーク - MVC フレームワークの紹介」

関連推奨事項:

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

Netty スレッド モデルの詳細な例

以上が最も成熟したオープンソース NIO フレームワーク Nettyの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート