最近、私はアクター/エージェント/シェアード・ナッシング・アーキテクチャーをサポートする代替言語になっています。 scala、clojureなど(clojureは共有状態もサポートしています)。エージェント/アクターベースのコンカレント・デザインのデザイン・パターン
私が読んだドキュメントのほとんどは、イントロレベルに焦点を当てています。私が探しているのは、4人のギャングに沿ったより高度なドキュメントですが、代わりに何も共有していません。
なぜですか?デザイン思考の変化を突き詰めるのに役立ちます。簡単な例は簡単ですが、実際のJavaアプリケーション(シングルスレッド)では、複雑な関係を持つメンバーが1000人のオブジェクトグラフを持つことができます。しかし、エージェントベースの同時実行性開発では、大規模なシステムを設計する際に理解するための全く新しい考え方が導入されています。すなわち、エージェントの細分性 - あるエージェントが管理するべき状態の数 - パフォーマンスへの影響など、または共有状態オブジェクトグラフをエージェントベースのシステムにマッピングするための良いパターンです。ドメインモデルを設計するためのヒント技術に関する議論ではなく、設計でこの技術をどのように最善に活用するか(実世界の複雑な例は素晴らしいでしょう)。
Facebookのチャットは面白いと聞こえます。チャット/ PBXデザインの問題を見ると、インタラクションは大部分が国家(パーティー、各パーティーなどのためのfsm)に含まれるため、 "インタラクション"オブジェクトは良い "エージェント"を作ります。彼らが賢明に設計したものを見てうれしいです。 – nso1