从http://www.erlang.org/doc/man/gen_tcp.html#accept-1 :
值得注意的是,接受呼叫不必从插座所有者进程发出。 使用5.5.3版和仿真器的更高,多个同时接听电话可以从不同的流程,这使得受体工艺处理传入的连接池发出。
(Q1)这是否意味着我们可以有麒麟风格的负载均衡在二郎山?
(Q2)如果是这样,是否有利用此功能的任何现有的服务器或库?
(Q3)独角兽工作,请求的处理速度快的假设下。 在相同的假设,是有可能通过在二郎山结合受体和工人,以获得更好的性能?
对于那些谁不熟悉的独角兽,它是一个传统的UNIX prefork的Web服务器。 工作进程之间的负载平衡是由操作系统内核来完成。 所有工人共用一套监听套接字和做非阻塞接受()他们。 内核将决定哪个工作进程给予插座和工人睡觉,如果没有要接受()。 对于单个监听器插座,我相信这是相同的,当工作进程不阻塞地接受()和OS内核决定了“赛跑”的结果。