gpt4 book ai didi

erlang - Erlang 应该如何处理常见的数据?

转载 作者:行者123 更新时间:2023-12-01 07:42:25 25 4
gpt4 key购买 nike

假设我正在使用 Erlang 构建游戏服务器。

每个用户检查某事(例如找到最近的球员)是非常普遍的循环,因此通常有一个经理类。

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

据我所知,Erlang 通常为每个 TCP 连接(用户 session )创建新的 Erlang 进程。
那么,用户 session 的列表如何才能流通呢?

如果我有这些用户 session 的父进程并要求父进程,它可能是一个瓶颈?

最佳答案

现在,在继续之前,您可以查看以下问题和答案: Erlang: Distributed work on an array Erlang gen_server with long-running tasks What is the best, most efficient, Client pool technique with Erlang
现在,了解 ETS TablesMnesia 。然后你也许可以看看 GProc 。制作一个进程来保存状态数据,尤其是对于游戏来说是危险的,因为当进程退出时状态可能会丢失。重启崩溃的进程很容易,但它所持有的数据丢失了。通常,我们需要内存数据存储,除非整个 erlang VM 宕机,否则它不会丢失(在这种情况下,如果您需要超出 RAM 的持久性,您仍然需要 DETS Tables 或 Mnesia )。 Process Dictionaries 通常不被鼓励,但它们仍然被证明是非常有用的。然而,就个人而言,ETS Tables 为我节省了很多。它们可以从一个崩溃的进程转移到下一个活着的进程。它们可以转储到磁盘或从磁盘加载,它们可以处理大量数据。

只需研究更多关于 Erlang 中使用的 IN-Memory 存储。顺便说一句,它也可以使用 erlang VM 之外的存储,如 Memcached、Raik、CouchBase 等。然而,在某些情况下,游戏可以被分解为像 QueuesListsRecords 这样的数据结构,一种可以保存在流程字典中的数据结构。此外,这将取决于向客户端提供游戏服务的方式。如果游戏使用 HTTP (RESTFUL),那么您还将了解要应用哪些 Erlang 库(Mochiweb, Yaws 等)。只需关注整个 tutorial ,您就会发现一切。

关于erlang - Erlang 应该如何处理常见的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com