1

我正在尝试为我的社交网络构建一个聊天服务器,这是我目前提出的设计模式。

查看 user_handler 它是一个工作进程,它创建多个链接的用户进程并根据登录请求将这些进程 ID 保存到 ets 表中。

但我的问题是,如果许多并发请求来自我的 Web 服务器到我的 user_handler,那么这些消息的处理将会很慢。正确的?

就像,现在如果用户 id 2 向 3 发送消息,那么我会打电话。user_handler:send_message(SenderId = 2, SendTo = 3, Message) 然后我的用户处理程序获取 id 为 2 的用户的进程 id 并调用 user:send_message(Pid, SendTo = 3, Message)。其中 user:send_message/3 获取用户 3 的进程 id,然后检查其他条件,最后将消息发送到用户 3 的进程 id。

嗯,我不认为这是一个好的架构。

因此,任何建议都是可以理解的。

谢谢你,对不起我的英语不好。

我目前创建的模式

4

1 回答 1

1

不要将所有会话信息保存在一个进程代码中,只需将每个会话信息保存在其init状态中并删除其状态中的会话信息terminate

我不知道您在使用什么,但是如果您正在使用 TCP 套接字并且担心接受新连接,我建议使用Sockerl,在其服务器架构中,您可以有许多接受者接受每个接受者都有的一个套接字服务器的连接它自己的连接池,它接受的连接:

索克尔

于 2017-08-18T11:22:52.723 回答