ejabberd如何处理非常多的请求。例如。
我假设:
- 是否只运行此模块的单个实例,或者是否同时运行了多个模块实例 - 如果多个那么多个这样的实例?
我还很好奇要编写一个自定义模块以便能够同时处理大量请求需要做些什么。
请你提供一些指示?
我对erlang和ejabberd很新。请帮助我了解ejabberd如何处理高要求。
最诚挚的问候,
答案 0 :(得分:1)
典型的Erlang处理方式是为每个独立任务(或任务集)生成一个进程。
进程产生很便宜并且调度非常轻量级并且通常自动为您处理 - 因此这是在Erlang中建模大规模并发问题的简单方法(并且聊天消息传递是这种问题的完美示例)。
所以它不是"模块的实例"它是"许多进程从模块执行代码" - 某种程度(具体而言,一个进程通常会在其生命周期中执行来自多个模块的代码,这是任何类型的基于回调的OTP行为所固有的。)
为了更好地掌握这类事情,我建议您自己从头开始编写一些Erlang程序来处理并发用户输入。 Erlang中的网络编程很简单。从头开始编写一些服务器可以让您深入了解OTP行为的工作原理。
我正在从事一个中间教学工作,这个教学开始于关于体系结构的讨论,可能会对此有所了解。代码的第一次(故意单一和非OTP)迭代说明了如何处理网络请求背后的许多基本思想,以及如何生成进程以模拟系统的各种并发元素。它仍然是一项正在进行的工作,但到目前为止存在的内容应该说明您对以下问题提出的一些问题:The ErlMUD Commentary。