ejabberd 如何处理大量请求

How does ejabberd handle really high number of requests

ejabberd 如何处理大量请求。例如

我假设:

-- 这个模块运行只有一个实例还是同时有多个模块运行实例 -- 如果是多个那么有多少这样的实例?

我也很好奇需要做什么才能编写自定义模块才能同时处理大量请求。

能否请您指点一下?

我对 erlang 和 ejabberd 很陌生。请帮助我了解 ejabberd 如何处理高请求。

此致,

典型的 Erlang 做事方式是为每个独立任务(或一组任务)生成一个进程。

进程产生很便宜,调度也非常轻量级,通常会自动为您处理——所以这是在 Erlang 中对大规模并发问题建模的简单方法(聊天消息是此类问题的一个完美示例) ).

所以它不是 "instances of a module" 而是 "lots of processes executing code from a module" -- 有点(具体来说,一个进程通常会在其生命周期中执行来自多个模块的代码,这是任何类型的固有的基于回调的 OTP 行为)。

为了更好地掌握这类事情,我建议您自己从头开始编写一些 Erlang 程序来处理并发用户输入。 Erlang 中的网络编程很容易。从头开始自己编写一些服务器将使您深入了解 OTP 行为为何如此工作。

我正在编写一个中级教程,该教程首先讨论可能对此有所启发的体系结构。代码的第一个(故意单一且非 OTP)迭代说明了如何处理网络请求以及如何生成进程以模拟系统的各种并发元素背后的许多基本思想。它仍在进行中,但目前存在的内容应该可以说明您有疑问的一些事情:The ErlMUD Commentary.