私は、サーバー コンポーネントが完全に erlang で書かれている既存の (ゲーム) プロジェクトに参加しています。場合によっては、このシステムからデータを取得するのが非常に困難になることがあります (プレーヤー 56 がいくつのウィジェットを持っているかに興味があります)。それを所有するプロセスから取得します。データを所有するプロセスを見つけることができると仮定すると、そのプロセスにメッセージを渡してメッセージが返されるのを待つことができますが、これは複数のマシンにうまく拡張できず、応答時間が長くなります。
このゲームに存在するタスクの多くを、複数のプロセスによって頻繁にアクセスされる情報が保護された ets テーブルに格納されるシステムに置き換えることを検討してきました。テーブルの所有者は、更新メッセージ (プレーヤーが 5 つのウィジェットを使用したばかり) を受信し、それに応じてテーブルを更新するだけです。すべての例外をキャッチし、単純に次の更新メッセージに進みます。プレーヤーが愚か者を購入するのに十分なウィジェットを持っているかどうかを知りたいプロセスは、テーブルをのぞくだけで済みます。(はい、ウィジェットの数を減らすメッセージがバッファーにある可能性があることは理解していますが、その問題は制御下にあります。)
残念ながら、私の質問は質問ではなく、コメントのリクエストです。役に立ち、十分に説明または参照されているものは何でも賛成します。
そのような実装の可能性のある欠点は何ですか? 私が興味を持っているのは、ライターが 1 人で複数のリーダーがいる場合に見られる可能性が高いロック競合の詳細、これを複数のマシンに分散する際にどのような問題が発生するか、および特に:この前。