そのため、現在、Scala コードを複数のマシンに分散して大きなグラフ (質問の「パート 1」 ) を作成する作業を行っており、現在、アクターとリモーティングを使用することを期待して Akka フレームワークを使用しています。
ドキュメントhereを読みましたが、例の実行方法を拡張して、やりたいことを実行できるようですが、この方法に関していくつか懸念があります...
1) 作成するアクターのインスタンスの数をどのように決定しますか? どちらが最適かを判断するために試行錯誤を行う必要がありますか、それとももっと直感的な方法がありますか?
2) 例が行われた方法と同様にタスクを実行することを考えています - 複数のワーカーを生成し、ケース クラスをメッセージとして使用して通信するマスターを使用します。私がやりたいことは、すべてのペアについて、頂点のペア (ランダム ウォーク) 間のメトリックを見つけることです。2 つの頂点を指定してメトリックを計算するメソッドを実装するグラフ クラスがあります。
各ワーカーに 2 つの頂点 'u' と 'v' を与えてメトリックを計算し、ワーカーに値を返させます。
メトリクスを計算するためにマスターがワーカーにメッセージを送信するとき、ワーカーはグラフ構造を必要とします - メッセージにグラフ構造 (つまり、HashMap である隣接リスト) を含めるだけでこれを行うことができますか? これにより、毎回グラフ構造をコピーすることでオーバーヘッドが発生しますか、それともすべてのワーカーがそのグラフを共有するだけですか?
3) 頂点のペア間のメトリックを計算するためのアルゴリズムを拡張された Actor クラスに再実装する必要がありますか、または個々のアクタが同じグラフ構造にアクセスしてメソッドを呼び出す方法はありますか (これはグラフ構造全体をメッセージの一部として渡すことに関する上記の質問)?
ありがとう!よろしく、 -kstruct