最も成熟したオープンソース NIO フレームワーク Netty
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 上に構築されています。
Netty の利点をまとめると次のとおりです。
◎API が使いやすく、開発の敷居が低い。
◎強力な機能。複数のエンコードおよびデコード機能がプリセットされており、複数の主流プロトコルをサポートします。
##◎ 強力なカスタマイズ機能により、ChannelHandler を通じて通信フレームワークを柔軟に拡張できます。
◎高いパフォーマンス 業界の他の主流の NO フレームワークと比較して、Netty は総合的なパフォーマンスが最高です。
◎成熟して安定した Nety は、発見された JDK NIO のバグをすべて修正しており、ビジネス開発者は N1O のバグについて心配する必要がなくなりました。
◎コミュニティは活発で、バージョンの反復サイクルは短く、発見されたバグはすぐに修正できます。同時に、さらに新しい機能が追加されます。
◎大規模な商用アプリケーションテストを経て、その品質が検証されています。インターネット、ビッグデータ、オンライン ゲーム、エンタープライズ アプリケーション、通信ソフトウェアなどの多くの業界で商用化に成功しており、さまざまな業界の商用アプリケーションに完全に対応できることが証明されています。
Netty のパフォーマンスは非常に優れているため、当社の通信フレームワークは Netty に基づいて設計および開発されています。
この記事は、上海商学堂 Java トレーニングによってまとめられた Li Linfeng の「分散サービス フレームワークの原則と実践」を参照しています。Java 技術記事をさらに読んだり、Java 技術情報や学習ビデオを入手したりするには、このコラムに戻ってください。カスタマーサービス担当者にご連絡ください。
次の記事も読む価値があります: 「分散サービス アーキテクチャの原理と機能特性_上海 Java トレーニング」、「マイクロサービス アーキテクチャとは?」マイクロサービス アーキテクチャと SOA アーキテクチャの違い」、「RPC アーキテクチャと原則、業界の主流の RPC フレームワークの紹介」、「古典的な垂直アプリケーション フレームワーク - MVC フレームワークの紹介」
NIO に基づく Netty ネットワーク フレームワーク (詳細なグラフィックとテキストの説明)
以上が最も成熟したオープンソース NIO フレームワーク Nettyの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
