我正在进入一个现有的(游戏)项目,其服务器组件完全用 erlang 编写。有时,从拥有该系统的进程中获取一条数据(我对播放器 56 有多少小部件感兴趣)可能会非常痛苦。假设我可以找到拥有数据的进程,我可以将消息传递给该进程并等待它传回消息,但这不能很好地扩展到多台机器并且它会缩短响应时间。
我一直在考虑用一个系统替换该游戏中存在的许多任务,在该系统中,多个进程经常访问的信息将存储在受保护的 ets 表中。表的所有者只会接收更新消息(玩家刚刚花费了五个小部件)并相应地更新表。它将捕获所有异常并简单地继续下一个更新消息。任何想知道玩家是否有足够的小部件来购买傻瓜的过程只需要偷看桌子。(是的,我知道缓冲区中可能有一条消息会减少小部件的数量,但我已经控制了这个问题。)
恐怕我的问题与其说是问题,不如说是征求意见。我会赞成任何既有帮助又有充分解释或参考的内容。
这种实现的可能缺点是什么?我对锁争用的细节很感兴趣,我可能会在拥有一个写者多个读者的情况下看到,在多台机器上分发它会遇到什么样的问题,尤其是:来自做过的人的输入这之前。