我正在编写一个 Elixir 应用程序,它需要一个注册表来存储哪个 pid 属于哪个用户的映射。我将在受监督的应用程序中为每个用户提供一个 GenServer。我有一个使用 ETS 处理一个节点但有 2 个以上节点的基本示例,我不能使用 ETS,因为它不支持集群/复制。拥有分布式缓存还有哪些其他选择?通过一些研究,我的选择是使用 Redis 等数据库或使用 Amensia。
问问题
1154 次
1 回答
3
假设您不希望在整个集群中重复,您可以简单地全局注册每个 GenServer。
GenServer.start_link(__MODULE__, args, [name: {:global, user_id}]
然后,您可以简单地查找:global.whereis_name(user_id)
以获取 pid。如果进程终止,它会自动取消注册。这是Erlang 的 global module的文档。
于 2016-03-11T02:04:17.473 回答