導入されたコア成分の網状網状分析

ブートストラップ、ServerBootstrap

ブートストラップのガイド手段、通常ネッティーブートストラップの適用開始により、主な役割は、直列に全体ネッティープログラム、さまざまなコンポーネントを構成することで、ブートストラップネッティーブートクラスは、ServerBootstrapブートクラスのサービスエンドクライアントプログラムのクラスです。

一般的な方法:

メソッド名 説明
公共ServerBootstrapグループ(EventLoopGroup parentGroup、EventLoopGroup childGroup) 2 EventLoopGroupを提供するサーバー、
パブリックB群(EventLoopGroup基) EventLoopGroupを提供し、クライアント、
公共のBチャネル(クラス<?延びC> channelClass) 達成するために、トンネルのサービス終了を設定します。
パブリックBオプション(ChannelOptionオプション、T値) ServerChannelに設定を追加するには
公共ServerBootstrap childOption(ChannelOption childOption、T値) 受信チャンネル構成に追加するには
公共ServerBootstrap childHandler(ChannelHandler childHandler) ビジネスクラスを設定するための処理
公共ChannelFutureバインド(int型inetPort) セットサービスポート番号へ
公共ChannelFuture接続(文字列inetHost、int型inetPort) サーバーに接続されたクライアント

将来、ChannelFuture

ネッティーすべてのIO操作は、非同期でメッセージが正しく処理されているかどうかをすぐに知ることができません。しかし、しばらくすると、それが完了するか、直接実行できるようにすると、リスナーの具体的な実装は今後とChannelFutures経由で登録し、彼らは監視の操作の成功または失敗は自動的にイベントをリッスンするために、登録トリガされたときに、リスナーを登録することができます。

一般的な方法:

メソッド名 説明
チャンネルチャンネル() IO操作をされている現在のチャンネルを返します。
ChannelFuture同期() 非同期操作が完了するのを待っています

チャネル

チャネルアセンブリ網状ネットワーク通信で、ネットワークは、I / O操作を実行するために使用することができます。
利用可能なチャネルネットワーク接続を介してチャネル電流の状態。
設定パラメータには、任意のI / Oの呼び出しが可能になることを非同期呼び出し手段、チャネルネットワークは、非同期I / O操作を提供する(例えば、接続を確立するために、リーディング、ライティング、バインドされたポート)、利用可能なチャネルネットワーク接続によって(例えば、サイズを受信バッファ)すぐに戻り、が要求されたI / O操作が完了したの呼び出しの終わりで保証されていません。
コールバック通知がすぐにChannelFutureにリスナーを登録することで、発信者ChannelFuture例にコールを返し、あなたは成功したI / O操作することができ、キャンセルするか失敗します。処理手順に対応するI / O操作を関連付けられたサポートチャネル、異なるプロトコル、チャネルタイプをブロックする接続の異なるタイプの対応する異なる、共通チャネルタイプを持っています。

  • NioSocketChannel:非同期クライアントTCPソケット接続
  • NioServerSocketChannel:非同期サーバー側のTCPソケット接続
  • NioDatagramChannel:非同期UDP接続
  • NioSctpChannel:非同期クライアントSCTP接続
  • NioSctpServerChannel:非同期SCTPサーバ接続、チャンネルはUDPとTCPネットワークファイルIOとIOをカバーしています。

セレクタ

I / OマルチプレクサのSelectorオブジェクトネッティーベースは、スレッドは、接続イベントのチャンネルセレクター複数経由して聴取することができます。
セレクタは、チャンネルを登録する場合は、内部機構セレクタは自動的ので、これらは(などのネットワーク接続が完了するように、読み取り、書き込み、など、)チャネル対応のI / Oイベントに登録されているかどうか(選択)クエリに続けることができますプログラムは、単に効率的に複数のチャンネルを管理するためにスレッドを使用することができます。

ChannelHandler

I / OイベントまたはインターセプトI / O操作を処理するためのインターフェース、および転送しChannelPipeline(サービス処理チェーン)次の処理プログラムに加えたれます。
多くの方法が実装するために、このインタフェースの必要性があるので、それはピリオドを使用して簡単に、自分自身に多くの方法を提供していない、そのサブクラスを継承することができます。

共通インタフェース:

  • ChannelInboundHandler:インバウンドI / O処理のためのイベント。
  • ChannelOutboundHandler:I / O操作を処理するための駅。

共通のサブカテゴリー:

  • ChannelInboundHandlerAdapter:インバウンドI / O処理のためのイベント。
  • ChannelOutboundHandlerAdapter:I / O操作を処理するための駅。
  • ChannelDuplexHandler:処理のためのインバウンドとアウトバウンドのイベント。

パイプライン、ChannelPipeline

ChannelPipelineは、チェーン全体ネッティーと同等の処理および切片インバウンドまたはアウトバウンドのイベントや事業を担当してハンドラのコレクション、です。(理解することができる。ChannelPipeline ChannelHandlerは、操作チャンネルのインバウンドとアウトバウンドのイベントを処理するか、遮断する、リストに格納されます)。

ChannelPipelineが実装遮断フィルタモードの高度なフォームは、ユーザーがフルコントロールのイベント処理を持ち、どのように相互に対話ChannelHandlerの各チャンネル。

各チャネルは、1つおよび網状でChannelPipeline、下に示すように、その組成上の関係に対応する一方のみを有しています。
ここに画像を挿入説明

プロセスの分析:

  • Aチャンネルは、彼はまた、ChannelHandlerContextが作曲二重リンクリストを保持ChannelPipeline、およびChannelPipelineが含まれており、順番にそれぞれがChannelHandlerContext ChannelHandlerに関連しています

  • 二重にリンクされたリストで、インバウンドとアウトバウンドのイベントイベントは、リストからの着信イベントがハンドラインバウンドの最後の頭に戻って渡されます、前方尾駅のほとんどのうち、2前のハンドラに渡されたリストからの発信イベントハンドラの各タイプを乱すことなく、

一般的な方法:

メソッド名 説明
ChannelPipeline addFirst(ChannelHandler ...ハンドラ) クラス(ハンドラ)を処理するサービスは、チェーン内の最初の位置に追加されました
ChannelPipeline addLast(ChannelHandler ...ハンドラ) クラス(ハンドラ)を処理するサービスは、チェーン内の最終位置に加え

ChannelHandlerContext

チャンネルを保存されているすべての関連するコンテキスト情報は、ChannelHandler関連するオブジェクトながら、すなわちChannelHandlerContextはChannelHandlerContextもバインドされたパイプラインながら、特定のイベントハンドラChannelHandlerが含まれており、簡単にChannelHandlerコールに情報チャンネルを、対応します。

一般的な方法:

メソッド名 説明
ChannelFutureのクローズ() チャネルを閉じます
ChannelOutboundInvokerフラッシュ() リフレッシュ
ChannelFuture writeAndFlush(オブジェクトMSG) 次の現在ChannelPipeline ChannelHandler ChannelHandler開始処理にデータを書き込む(アウトバウンド)

ChannelOption

次のようにネッティーチャンネルインスタンスを作成した後、一般的にパラメータを設定ChannelOptionに必要な、一般的なパラメータは次のとおりです。

パラメータ名 説明
ChannelOption.SO_BACKLOG TCP / IPプロトコルに対応するバックログパラメータの機能を聞き、サーバーは接続キューのサイズを初期化するために使用することができます。処理サーバーのクライアント接続要求が同時にクライアント接続を処理できるようにすることを、順番に処理されます。複数のクライアントは、サーバーが処理されるのを待っているキュー内のクライアント接続要求を処理しません場合は、backlogパラメータは、キューのサイズを指定します
ChannelOption.SO_KEEPALIVE 常にアクティブな接続

EventLoopGroup、NioEventLoopGroup

EventLoopGroupはインターフェースである、NioEventLoopGroup抽象EventLoopGroupのサブクラス、EventLoopGroupイベントループが基であり、より良好な一般同時に複数のイベントループを有する、網状マルチコアCPUのリソースを利用するために、各インスタンスイベントループは、セレクタを維持します。

EventLoopGroup次のイベントループがタスクを処理するために一定の規則に従ったグループから得ることができるインタフェースを提供します。ネッティープログラミング、サーバー側では、我々は一般的なBossEventLoopGroupとWorkerEventLoopGroupとして、2 EventLoopGroupを提供するために必要とされます。

通常、セレクターとイベントループスレッドへのServerSocketChannel対応しているサービスポート。以下に示すように、クライアントを受信する責任BossEventLoopが接続されたSocketChannel WorkerEventLoopGroup IO処理が行われます。
ここに画像を挿入説明

BossEventLoopGroupは通常、イベントループシングルスレッド、イベントループは、接続イベントを分離する絶えずポーリングセレクタセレクタインスタンスBossEventLoopのServerSocketChannelのレジスタを維持します

通常次にWorkerEventLoopGroupにSocketChannelへの受信OP_ACCEPTイベント、
WorkerEventLoopGroupは、そのメンテナンスセレクタとその後続の処理IOイベントにこのイベントループのSocketChannelに登録されるの次により選択されるであろう

一般的な方法:

パラメータ名 説明
公共NioEventLoopGroup() コンストラクタ
公共フューチャー<?> shutdownGracefully() 切断、スレッドを閉じます

Unpooledクラス

Unpooled網状はバッファ動作(すなわち、網状データコンテナ)ツールを提供するように設計されています。

一般的な方法:

パラメータ名 説明
パブリック静的ByteBuf copiedBuffer(CharSequence引数の文字列、文字セットの文字セット) 所与のデータオブジェクトを返すことによりByteBuf文字コードと類似しているがNIOのByteBufferに区別されます
公開された107元の記事 ウォン称賛19 ビュー20000 +

おすすめ

転載: blog.csdn.net/chen_changying/article/details/104167857