ネッティーのスレッドモデル

原子炉シングルスレッドモデル:すべてのIO操作上記のすべての完全なNIOスレッドで、NIOのスレッドが担当します。

NIOサーバーとして、クライアントは、TCP接続を受けます

NIOのクライアントは、サーバーへのTCP要求を開始したよう

読み出し要求または通信ピア・レスポンス・メッセージ

通信ピアに要求または応答メッセージを送信します

非同期の非ブロッキンググループI / Oを使用して原子炉パターンますので、すべてのI / O操作がブロッキングを起こし、理論的には、別のスレッドは、関連するすべてのI / O操作を処理することができることはありません。アーキテクチャの観点からは、本当にNIOスレッドがその職務を想定し完了することができます。例えば、リンクは正常のByteBufferを対応するディスパッチすることによって、確立されたアクセプタクラスリクエストメッセージを介してクライアントを受信するTCP接続は、指定されたハンドラ、メッセージ復号、NIOスレッドによって顧客にメッセージを送信するためにエンコードするユーザ・スレッド・メッセージに分配しました終わり。

いくつかの小容量のシナリオでは、シングルスレッドモデルを使用することができます。しかし、それは、並行性の高いシナリオは不適切で、主な理由は以下の通りである。高負荷のためです。

1:NIOリンクのハンドル百スレッドのパフォーマンスをサポートすることができない、でもCPU負荷NIOスレッド100%の場合には、読み出し及び伝送、復号化、大規模なメッセージエンコードを満たすことができません。

NIOスレッドが速度は、クライアントの接続タイムアウトの多数を引き起こす、遅くなり、処理、オーバーロードされ、タイムアウト後に再送される傾向にあり、さらに重くなる負荷NIOスレッドが最終的に多数のメッセージと、処理バックログにつながる:2残業、システム性能のボトルネックになりました

3:信頼性の問題:NIOスレッドが突然切れたら、またはループには、ノード障害を引き起こし、システム全体の通信モジュールは、外部メッセージを受信し処理するために利用可能でない引き起こし得ます

 

これらの問題、原子炉マルチスレッドモデルの進化に対処するために

最大の違い炉マルチスレッドおよびシングルスレッドモデルは、IO操作NIOを処理するスレッドのセットとモデルであります

反応器は、マルチプロセスモデルを次のようにしている特徴:

1:特別NIOスレッドのTCP接続要求--Acceptorスレッドがサーバを監視するためにそこに使用され、クライアントが受け取ります

2:ネットワークI / O操作 - 等読み出し、書き込み、責任NIOスレッドプール、スレッドプールはNを含む標準JDKスレッドプールおよび使用可能なスレッドのタスクキューを達成するために使用されてもよく、これらのスレッドは、メッセージの原因であるNIO 、読み出し復号、符号化し送信します

3:NIO Nリンクが同時に処理できるスレッドが、同時の問題からNIOのスレッドに対応するだけのリンク

  

   ほとんどのシナリオでは、原子炉のマルチスレッドモデルは、性能要件を満たすために、しかし、特別なシーンで、NIOスレッドは百万クライアントの同時接続など、監視とパフォーマンスの問題のすべてのクライアント接続してもよいアバディーンの処理を担当などで、またはサーバは、クライアントのセキュリティ認証ハンドシェイクを必要としますが、認証自体は損失性能です。そのようなシナリオでは、単一のスレッドが第3の反応器スレッディングモデル、その結果、パフォーマンスの問題を解決するために、足の問題のアクセプタ性能であることができる - リアクターマスターマルチスレッドモデルから。

 

反応器マスタ・スレーブマルチスレッドモデル

原子炉のスレッドは、マスターモデルから備えていません:クライアント接続を受信するためのサービス端末は、もはや別のスレッドNIOが、独立したNIOスレッドプールです。アクセプターがクライアントにTCP接続要求を受信し、I(アクセス認証を含んでいてもよい)が完了した後に処理を終了し、新たに作成されたSocketChannelは、I / Oスレッドプール(サブリアクタースレッドプール)そのによって/ 0スレッドにレジスタSocketChannelの仕事を読み書きやコーデックを担当します。リンクが確立されるとアクセプタスレッドプールは、クライアントのみ、ハンドシェイクと安全性の証明をログインするために使用され、リンクがフォローアップIO IO操作によって責任、IOスレッドプールスレッドのバックエンドsubReactorに登録されます。

マスタースレーブモデルを使用してNIOスレッドは、サーバーの監視スレッドが効果的にすべてのクライアント接続の不十分なパフォーマンスの問題に対処することはできません解決することができ、網状の公式サイトのデモので、スレッドモデルを使用することをお勧めします

公開された50元の記事 ウォンの賞賛2 ビュー2316

おすすめ

転載: blog.csdn.net/eafun_888/article/details/96567707