据说可以产生数千个进程同时执行类似的任务,而 Erlang 擅长处理它。如果还有更多工作要做,我们可以简单安全地添加更多工作进程,这使其具有可扩展性。
我不明白的是,如果每个工作执行的工作本身就是资源密集型的,那么 Erlang 将如何处理它?例如,如果多个来源正在将条目写入表中,并且具有数百个进程的 Erlang 应用程序从表中读取行并执行某些操作,这显然可能会造成资源负担。每个工人都会尝试从表中拉出一条记录。如果这是一个不好的例子,请考虑一个必须在内存中执行高度 CPU 密集型计算的工作人员。数以千计的此类工作线程同时运行会使 CPU 过度工作。
请纠正我对 Erlang 可扩展性的理解:Erlang 进程只有在有可用工作时才能获得 CPU 的时间片。另一方面,无论它们是否空闲,操作系统进程都会获得时间片。Erlang 进程的启动和关闭时间远低于 OS 进程。
除了以上两点之外,Erlang 是否有一些东西使它具有可扩展性?
谢谢,梅尔文