有人告诉我 simple_one_for_one 对于聊天应用程序非常有用,因为每个聊天客户端都是一个服务器进程(gen_server)。这是正确的吗?
我想知道为什么我们需要它?为什么不只创建一个中心服务器(gen_server)来处理所有聊天客户端通信?因为可能聊天客户端的数量非常多,所以只有一台服务器无法快速处理,导致系统变慢?
我认为可能创建太多像 simple_one_for_one 这样的服务器可能会占用太多系统资源。我是一个新的 OTP 人,所以我真的需要解释这一点。
有人告诉我 simple_one_for_one 对于聊天应用程序非常有用,因为每个聊天客户端都是一个服务器进程(gen_server)。这是正确的吗?
我想知道为什么我们需要它?为什么不只创建一个中心服务器(gen_server)来处理所有聊天客户端通信?因为可能聊天客户端的数量非常多,所以只有一台服务器无法快速处理,导致系统变慢?
我认为可能创建太多像 simple_one_for_one 这样的服务器可能会占用太多系统资源。我是一个新的 OTP 人,所以我真的需要解释这一点。
是的,这个想法是每个客户端都有一个进程(gen_server)。
这使您可以将一个客户端的故障与另一个客户端隔离开来。
如果您将每个人都放在一个进程中,则必须非常小心地处理所有可能出错并导致进程崩溃的事情(因此,断开所有客户端的连接)。
每个客户端有一个进程,您可以为快乐路径编写代码,并在出现问题时让它崩溃。最坏的情况是你放弃了一个客户。
进程相当便宜(与创建线程不同)。在现代机器上,你可以拥有数百万。
如果您的用户群有数百万,我相信您最终会拥有不止一台服务器。因此,在一个盒子上可以轻松扩展到数十万到数百万的东西就足够了。