Comet的最佳方法? (非阻塞IO与Erlang)

时间:2011-05-12 07:11:51

标签: erlang comet nonblocking libevent

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

  1. 在给定数量的RAM中实现尽可能多的连接
  2. 在给定的CPU量下实现尽可能多的吞吐量
  3. 背景是,我计划编写一个pub / sub-Server,我无法决定应该使用哪种方法。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

关于制作A Million-user Comet Application with Mochiweb的一篇文章,你可以在那里阅读。但我认为稳定性,灵活性和可维护性在大多数时候都会更为重要。牢记这一点,除了Erlang之外,我不会考虑任何其他事情,即使会有更好的解决方案。