代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

在氮气中,事件总是以相同的过程运行吗?

  •  1
  • Pablo Fernandez  · 技术社区  · 15 年前

    我正在考虑 event 功能在 Nitrogen, the Erlang web framework ,在得到回发时运行的Web模块中。

    事件 始终在同一个Web客户端(即浏览器窗口或框架)的同一进程中运行。

    我记得至少有一件事没有发生,但我无法重现。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Pablo Fernandez    15 年前

    不,氮气事件以当前处理氮气Web请求的流程运行。

    因为氮气是一个非常异步的框架,所以您可能有多个进程异步地为同一浏览器窗口或框架处理多个事件。这意味着您可以让不同的事件由不同的进程处理。

        2
  •  1
  •   Muzaaya Joshua    14 年前

    嘿,伙计们,我发现了氮气的工艺注册,叫做: 原住民 .
    当你检查你的应用文件夹时( $nitrogen_安装目录/apps/procreg )

    在这个应用程序中,可以跨多个氮气应用程序服务器(甚至跨多台机器)生成进程。要对此进行实验,请在两个不同的主机上启动2个Erlang节点。对它们执行ping操作,使它们连接起来。( net_adm:ping(?OTHER_NODE) )现在,在两个二郎节点上启动氮气。你可以先启动氮气,然后ping两个节点
    确保两个氮节点使用长名称,即LAN上的[名称]@IP_地址。

    现在,在局域网上的第三台计算机上,创建一个DNS(名称服务器)。将相同的名称映射到运行氮应用程序的两个节点的两个不同IP地址上。配置运行nind-nitrogen的两台计算机,以确保它们指向DNS服务的DNS IP地址(实际上对局域网中的所有计算机都这样做)。
    您将发现,当您使用浏览器中的映射名称从局域网上的多台计算机请求一个页面(位于两个氮应用程序的Doc根目录中)时,您会看到DNS服务器执行某种负载平衡。
    现在,确保您请求的页面可以在界面上显示氮气服务器的来源。此页面必须有一个按钮,该按钮将生成 wf:flash(wf:f("Some statement on the interface",[]))
    现在,在两台不同的计算机上请求此页,并注意每个计算机的服务位置。接下来,去一台氮气服务器并停止它。
    当你现在点击浏览器上的按钮,它的页面是我们刚刚放下的氮气服务器,它仍然可以工作。
    这就是为什么,Rusty和他的朋友们发现,如果氮气过程可以在更多的氮气应用程序中注册,当在负载均衡器后面运行时,这些事件可以被转发到集群中的任何氮气应用程序。
    当然,如果您确保不同机器上的两个应用程序具有相同的页面、模块和路径配置,那么这就可以很好地工作。这是因为事件回调函数可能调用一个数据库API。
    当您从Linux或Solaris上的终端“挖掘”Google时,可以看到使用DNS服务器的负载平衡示例,如下所示:

    dig www.google.com
    
    您将看到名称服务器具有映射到多个IP地址的相同名称。这可以确保跨域的可用性,并确保某种负载平衡
    /joshmuza@gmail.com