使用erlang

时间:2017-08-17 10:22:25

标签: erlang erlangweb

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

查看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。

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

所以任何建议都是可以理解的。

谢谢你,抱歉我的英文不好。

The pattern currently i have created

1 个答案:

答案 0 :(得分:1)

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

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

Sockerl