2011-08-02 9 views
5

私はScalaとAkkaを初めて使用しており、問題を解決するためにそれを使用することを検討しています。計算エンジン(ソリューションを検索する)があるとします。私は、各ノード上の各CPUに独自のエンジンインスタンスを与えることで、CPUとノード間で検索を並列化したいと考えています。大きな共有状態のためのscala/akka/stmデザイン?

エンジン入力は、少数のスカラー入力と非常に大きなハッシュテーブルで構成されています。各エンジンインスタンスはスカラー入力を使用して、ハッシュテーブルへの小さなローカル変更を行い、良さを計算し、その変更を破棄します(他のエンジンインスタンスがコミット/参照する必要はありません)。グッドネス値は、結果の中から選択するコーディネーターに返されます。

私はSTM TransactionalMapについて、共有状態の手段として読んでいました。これは理想的ですが、共有状態として使用している完全な例は実際にはありません。

質問:

  • は、俳優/ STMモデルでは、この問題のために右のように見えるのか?
  • 共有状態の配布方法の具体例を表示できますか? (それは文献である[TransactionalMap [、]]メッセージとして?
  • は、異なるノード間では対照的に、ノード内の共有状態の配布について異なるものはありますか?

探究心は

、知りたいですそれはあなたがハッシュテーブルの共有コピーにコミットするエンジンインスタンスで行われた変更をしたくないので、ここでは右の適合になりSTMのような音はありませんメモリを共有取り扱いの面で

アラン

答えて

1

代わりにimmutable HashMapが適しています。マップ内で変更されない要素は、エンジンインスタンスによって共有され、各マップ内の差分のみが追加のメモリ空間を占有します。

俳優のモデルは、あなたがしたいことに非常によく合います。必要なエンジンインスタンスごとに1つのアクタを設定し、スカラー値とハッシュマップを含むメッセージを渡します。その後、結果をコーディネーターに返します。

関連する問題