(我几乎没有使用Erlang的经验,只读过一些书)假设我正在使用Erlang构建游戏服务器.
每个用户检查一些东西是非常普遍的(例如,找到最接近的玩家),所以通常会有一个经理类.
在上面的例子中,我们使用互斥锁.
据我所知,Erlang通常会为每个TCP连接(用户会话)创建新的Erlang进程.那么,如何传播用户会话列表?
如果我有这些用户会话的父进程并询问父进程,它可能是一个瓶颈?
Muz*_*hua 12
现在,在继续之前,您可以看一下这些问题和答案:Erlang:分布在数组上的工作, 具有长期运行任务的Erlang gen_server,以及使用Erlang Now 的最佳,最有效的客户端池技术,了解ETS表和Mnesia.然后你也许可以看看GProc.制作一个特别为游戏保存状态数据的过程是危险的,因为状态可能会在进程退出时丢失.它很容易重新启动崩溃的进程,但它所持有的数据丢失了.通常情况下,我们需要内存数据存储,它不会丢失,除非整个erlang VM发生故障(在这种情况下,如果你需要超出RAM的持久性,你还需要DETS Tables或Mnesia).流程词典通常是不鼓励的,但它们仍然被证明是非常有用的.但是,就个人而言,ETS表已经为我节省了很多.它们可以从一个崩溃过程转移到下一个崩溃过程.它们可以转储到磁盘或从磁盘加载,它们可以处理大量数据.
只需研究Erlang中使用的IN-Memory存储.它的BTW也可以使用erlang VM之外的存储,如Memcached,Raik,CouchBase等.但是,在某些情况下,游戏可以分解为数据结构,如队列,或列表或记录,这是一种数据结构,可以保存在流程词典中.此外,它还取决于如何呈现客户端的游戏服务.如果游戏使用HTTP(RESTFUL),那么您还将了解要应用的Erlang库(Mochiweb,Yaws等).只需按照整个教程,您就会发现一切.
| 归档时间: |
|
| 查看次数: |
887 次 |
| 最近记录: |