4

也许这个问题不是那么容易回答......但你的意见是什么?我应该使用非阻塞方法(例如 libevent)还是使用 erlang 轻量级进程来:

  1. 在给定数量的 RAM 上实现尽可能多的连接
  2. 在给定的 CPU 数量下实现尽可能多的吞吐量

背景是,我计划编写一个 pub/sub-Server,但我无法决定应该使用哪种方法。

4

2 回答 2

2

在底层,Erlang VM 使用非阻塞 IO。如果您使用 Erlang 轻量级进程块,则 VM 不会真正进行内核级线程上下文切换。大多数时候,它只会唤醒同一个操作系统线程上的另一个 LWP(因此,它不是正确意义上的“阻塞”)。

您甚至可以使用 +A 参数启动虚拟机,并指定要分配多少 IO 事件循环线程(AFAIK,Node.js 仍然是单线程的,如果回调函数挂起,您的虚拟机就完成了)

于 2011-05-12T09:02:19.863 回答
2

一篇关于使用 Mochiweb 制作百万用户 Comet 应用程序的文章,您可以在此处阅读。但我认为稳定性、灵活性和可维护性在大多数时候会更重要。牢记这一点,即使会有一些性能更好的解决方案,我也不会考虑 Erlang 以外的任何东西。

于 2011-05-12T11:46:01.360 回答