「リーダー/フォロワー」パターンを説明する 質問する

「リーダー/フォロワー」パターンを説明する 質問する

「リーダー/フォロワー」パターンについて、分かりやすくわかりやすい説明が見つからないようです。すべての説明は、以下のように全く意味をなさないものです。1

誰か説明できますか?メカニックこのパターンがどのように機能するか、また、従来の非同期 IO モデルに比べてパフォーマンスが向上する理由と方法について教えてください。例や図へのリンクも歓迎します。

ベストアンサー1

ご存知のとおり、このパターンは、ThreadPool、HandleSet、Handle、ConcreteEventHandler (EventHandler インターフェイスを実装) の 4 つのコンポーネントで構成されています。

夜のタクシー乗り場のようなもので、リーダー以外の運転手は全員寝ています。ThreadPool は、多数のスレッド (タクシー) を管理するステーションです。

リーダーは、ドライバーがクライアントを待機するのと同じように、HandleSet 上の IO イベントを待機しています。

クライアントが到着すると (IO イベントを識別するハンドルの形式で)、リーダー ドライバーは別のドライバーを起動して次のリーダーにし、パッセンジャーからの要求に応えます。

リーダーがクライアントを指定されたアドレスまで運んでいる間 (ConcreteEventHandler を呼び出して、それに Handle を渡します)、次のリーダーは同時に別の乗客にサービスを提供できます。

運転手は仕事を終えると、タクシーを駅まで戻し、駅が空いていなければ眠りにつく。そうでない場合は、運転手がリーダーになる。

このパターンの利点は次のとおりです。

  • スレッド間の通信は必要なく、同期も共有メモリ (ロック、ミューテックス) も必要ありません。
  • 他のEventHandlerに影響を与えずに、さらにConcreteEventHandlerを追加できます。
  • 複数のスレッドによりレイテンシを最小限に抑えます

欠点は次のとおりです。

  • 複雑な
  • ネットワークIOがボトルネックになる可能性がある

おすすめ記事