最近、私はアクター/エージェント/シェアード ナッシング アーキテクチャをサポートする代替言語に取り掛かっています。scala、clojure など (clojure は共有状態もサポートしています)。
これまでに読んだドキュメンテーションのほとんどは、イントロ レベルに焦点を当てています。私が探しているのは、4 つのギャングに沿ったより高度なドキュメントですが、代わりに何も共有されていません。
なんで ?デザイン思考の変化を理解するのに役立ちます。単純な例は簡単ですが、実際の Java アプリケーション (シングル スレッド) では、複雑な関係を持つ数千のメンバーを持つオブジェクト グラフを作成できます。しかし、エージェント ベースの同時実行開発では、大規模なシステムを設計するときに理解すべきまったく新しい一連のアイデアが導入されます。すなわち。エージェントの粒度 - 1 つのエージェントが管理する状態の量 - パフォーマンスなどへの影響、または共有状態オブジェクト グラフをエージェント ベースのシステムにマッピングするための適切なパターンです。ドメイン モデルを設計にマッピングするためのヒント。技術についてではなく、設計で技術を最大限に活用する方法についての議論 (現実世界の「複雑な」例は素晴らしいでしょう)。