【发布时间】:2011-01-10 09:28:45
【问题描述】:
我正在构建一个 erlang 服务器。 用户向服务器发送 http 请求以更新其状态。 服务器上的 http 请求进程将用户状态消息保存在内存中。 服务器每分钟将所有消息发送到远程服务器并清除内存。 如果用户在一分钟内多次更新他的状态,最后一条消息将覆盖前一条消息。 重要的是,在阅读所有消息和清除它们之间,没有其他进程将 能够编写状态消息。
实现它的最佳方法是什么?
带有字典的gen_server。密钥将是用户 ID。 dict:store/3 将更新或创建状态。 gen_server 解决了“事务”问题。
带有 ram_copies 的 mnesia 表。处理事务,我不需要实现 gen_server。此解决方案是否存在过多开销?
ETS 表更轻量并且有一个 gen_server。是否可以在 ETS 中进行交易?在读取所有消息和清除消息之间锁定表格?
谢谢
【问题讨论】:
-
这已在 erlang-questions 邮件列表中讨论过。
-
这里是讨论的链接,对于像我这样首先发现stackoverflow的人:erlang.2086793.n4.nabble.com/…
标签: erlang dictionary gen-server ets