我要去 event 功能在 氮,Erlang网络框架, ,在您获得寄回时运行的Web模块中。

event 始终在同一Web客户端(即浏览器窗口或帧)中运行相同的过程。

我记得至少有一个没有发生的情况,但我不能再现。

有帮助吗?

解决方案

不,氮事件在当前正在处理氮请求的任何过程中都可以运行。

由于氮是一个非常异步的框架,因此您可能有多个过程来处理同一浏览器窗口或框架的多个事件。这意味着您很可能会通过单独的过程来处理不同的事件。

其他提示

大家好,我发现了氮的过程注册表称为: nProcreg.
当您检查应用程序文件夹时( $ nitrogen_install_dir/apps/nprocreg ).

在此应用程序中,即使在多个机器上,也可以在多个氮气应用程序服务器上产生过程。为了实验,请在两个不同的宿主上启动2个Erlang节点。 ping他们以使它们连接。 ((net_adm:ping(?OTHER_NODE))。现在,在两个Erlang节点上启动氮。实际上,您可以首先开始氮气,然后ping两个节点
确保两个氮节点使用长名,即[name] @ip_address在LAN上。

现在,在LAN上的第三台计算机上,创建DNS(名称服务器)。将相同的名称映射到运行氮应用的两个节点的两个不同的IP地址上。配置两台计算机运行氮,以确保它们指向DNS服务的DNS IP地址(实际上是为LAN中的所有计算机执行此操作)。
您会发现,当您使用LAN上的几台计算机中的几台计算机中请求页面(驻留在两个氮应用程序的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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top