どのpidがどのユーザーに属しているかのマッピングを保存するためにレジストリを必要とするElixirアプリを書いています。監視対象のアプリで、ユーザーごとに GenServer を用意します。ETS を使用して 1 つのノードで動作する基本的な例がありますが、2 つ以上のノードでは、クラスタリング/レプリケーションをサポートしていないため、ETS を使用できません。分散キャッシュを使用するためのその他のオプションは何ですか? いくつかの調査を行った結果、私のオプションは、Redis などのデータベースを使用するか、Amensia を使用することです。
1154 次
1 に答える
3
クラスター全体で重複したくない場合は、各 GenServer をグローバルに登録するだけです。
GenServer.start_link(__MODULE__, args, [name: {:global, user_id}]
次に、単に検索:global.whereis_name(user_id)
してpidを取得できます。プロセスが終了すると、自動的に登録解除されます。Erlang のグローバル モジュール のドキュメントは次のとおりです。
于 2016-03-11T02:04:17.473 に答える