Worker Threadパターン

ワーカーという考え

概要

WorkerThreadパターンとは

  • workerというのは「作業者」。ワーカースレッドが仕事を一つずつ取りに行き、処理実施
  • 仕事がなかったら、ワーカスレッドはくるまで待つ
  • ワーカーは管理者にリクエストを出して、管理者がワーカを管理して仕事を返す

登場人物

Client

  • 仕事のリクエストをRequest役として作成し、Channelに送信

Channel

  • ClientからRequestを受け取り、Workerに送信

Worker

  • ChannelからRequestを取得、その仕事を実行。
  • 仕事が終り次第、次のRequest取得

Request

  • 仕事を表すモデル。その仕事を実行するのに必要な情報を保持

具体的な効果

仕事効率の向上

  • Thread-Per-Messageパターンと違ってWorkerThreadパターンではスレッドを使いまわす
  • リサイクルしてスループットを上げる

invocationとexecutionの分離

  • メソッドの起動と実行を分離している。
  • 起動はinvocation、実行はexecution
  • Worker ThreadパターンやThread-Per-Messageパターンは、メソッドのinvocationとexecutionを分離している

効果

  • 応答性の向上
  • executionに時間がかかても、invocationをした方は先に進んでいくことができる

  • 実行順序の制御(スケジューリング)

  • Request役に優先順位を設け、Channel役がWorker役にRequest役を渡す順番を制御

  • キャンセル可能・繰り返し実行可能

  • invocationしたがexecuionはキャンセル可能

分散処理

  • invokeするコンピュータとexecueするスレッド分離