erlangサーバーを構築しています。ユーザーはhttpリクエストをサーバーに送信して、ステータスを更新します。サーバー上のhttp要求プロセスは、ユーザーステータスメッセージをメモリに保存します。サーバーは毎分、すべてのメッセージをリモートサーバーに送信し、メモリをクリアします。ユーザーが1分間に数回ステータスを更新すると、最後のメッセージが前のメッセージを上書きします。すべてのメッセージを読み取ってからクリアするまでの間、他のプロセスがステータスメッセージを書き込めないことが重要です。
それを実装するための最良の方法は何ですか?
dictを持つgen_server。キーはユーザーIDになります。dict:store / 3は、ステータスを更新または作成します。gen_serverは、「トランザクション」の問題を解決します。
ram_copiesを含むmnesiaテーブル。トランザクションを処理し、gen_serverを実装する必要はありません。このソリューションにはオーバーヘッドが多すぎますか?
より軽量でgen_serverを持つETSテーブル。ETSで取引を行うことは可能ですか?すべてのメッセージを読んでからクリアするまでの間にテーブルをロックするには?
ありがとう