二郎应该如何处理常见的数据(How should Erlang deal with common d

2019-07-30 06:38发布

(我有二郎几乎没有任何经验,只是看了一些书)假设我使用Erlang的构建游戏服务器。

这是很常见的循环每个用户检查的东西(例如,寻找最接近的球员),所以有一个经理类,通常。

在上述情况下,我们使用互斥锁。

据我所知二郎创建每个每个TCP连接(用户会话)新的Erlang进程正常。 那么,如何用户会话列表可循环?

如果我有需要为这些用户会话的父进程,并要求父进程,它可以是一个瓶颈?

Answer 1:

现在,在继续之前,你可以看看这些问题和答案: 二郎:分布式工作阵列上 , 二郎gen_server与长时间运行的任务 ,以及什么是Erlang的最好的,最有效,客户端池技术

现在,了解ETS表和Mnesia的 。 然后你可以或许看看GPROC 。 制作过程中保持状态数据尤其是对于游戏是危险的堂妹状态可能会丢失在进程退出时。 它很容易重新启动崩溃的过程,但它保留的数据丢失。 通常情况下,我们需要在内存中的数据保存,不能丢失,除非整个二郎山VM的状态为Down(在这种情况下,如果你需要一旦超过RAM,你需要DETS表或Mnesia的静止)。

流程字典通常劝阻,但他们仍然被证明是非常有用的。 不过,就个人而言,ETS表有很多救了我。 他们可以从一个崩溃进程被转移到下一个活着。 它们可以转储到磁盘或磁盘加载,他们可以处理大量的数据。

只是学习更多关于在二郎山使用内存存储。 它的BTW也可以使用存储二郎山VM,像Memcached的,Raik,CouchBase等。然而,在某些情况下,游戏可以细分到如同一个数据结构之外的队列 ,或列表或记录 ,数据结构可以进程字典中保存。 此外,这将取决于如何给客户游戏服务被渲染。 如果游戏使用HTTP(RESTFUL),那么你也将了解哪些二郎库申请( 受Mochiweb,雅司病等)。 只要按照这整个教程中 ,你会发现一切。



文章来源: How should Erlang deal with common data
标签: erlang