【发布时间】:2012-06-17 03:48:58
【问题描述】:
我有一个托管多个游戏实例的游戏服务器。玩家可以输入一个 ID 来加入当前正在运行的游戏。为了将客户端与他们想要的游戏实例配对,我有一个 ETS 表,它将游戏 ID 映射到处理该特定游戏实例的 Erlang 进程的 PID。虽然这可行,但我不太喜欢使用 ETS,因为它会创建不受任何进程控制的全局数据。
我想知道的是:在 Erlang/OTP 中是否有惯用的方式将标识符映射到进程?在这种情况下使用 ETS 可以吗,因为数据本质上是全局的?或者我应该有一个进程来存储所有 ID 的字典来处理映射?我觉得这更像是 Erlang 风格,但可能不如高性能或并发。我在查看其他 SO 答案时也遇到了gproc,这似乎是一个改进的流程字典。但是,我的印象是使用进程字典是不受欢迎的 (according to the erlang.org web page)。
【问题讨论】:
-
gproc(rustyklophaus.com/articles/…) 很好。与内置的 Process Dictionary 相比,它已知更稳定/改进。您也可以使用mnesiaram 表,但我认为ETS也可以。
标签: architecture erlang erlang-otp