ポストバックを取得したときに実行される Web モジュールで、Erlang Web フレームワークである Nitrogen のevent
機能について説明します。
event
同じ Web クライアント (つまり、ブラウザー ウィンドウまたはフレーム) に対して常に同じプロセスで実行されます。
それが起こらなかったケースを少なくとも 1 つ思い出しましたが、再現できませんでした。
ポストバックを取得したときに実行される Web モジュールで、Erlang Web フレームワークである Nitrogen のevent
機能について説明します。
event
同じ Web クライアント (つまり、ブラウザー ウィンドウまたはフレーム) に対して常に同じプロセスで実行されます。
それが起こらなかったケースを少なくとも 1 つ思い出しましたが、再現できませんでした。
いいえ、窒素イベントは、現在窒素の Web リクエストを処理しているプロセスで実行されます。
Nitrogen は非常に非同期的なフレームワークであるため、複数のプロセスが同じブラウザー ウィンドウまたはフレームの複数のイベントを非同期的に処理する場合があります。これは、さまざまなイベントを別々のプロセスで処理できることを意味します。
やあみんな、私はnprocregと呼ばれる窒素のプロセスレジストリを発見しました。
アプリのフォルダー ( $NITROGEN_INSTALL_DIR/apps/nprocreg )を確認すると、
このアプリケーションでは、複数のマシンにまたがっても、複数の窒素アプリ サーバーにまたがってプロセスを生成できます。これを試すには、2 つの異なるホストで 2 つの erlang ノードを開始します。それらが接続されるようにそれらをpingします。( net_adm:ping(?OTHER_NODE)
)。ここで、両方の erlang ノードで窒素を開始します。実際には、最初に窒素を開始してから、2 つのノードに ping を
実行できます
。2 つの窒素ノードが長い名前、つまり [NAME]@IP_ADDRESS を LAN 上で使用していることを確認してください。
次に、LAN 上の 3 台目のマシンで、DNS (ネーム サーバー) を作成します。窒素アプリケーションを実行している 2 つのノードの 2 つの異なる IP アドレスに同じ名前のマッピングを配置します。窒素を実行している 2 台のコンピューターが DNS サービスの DNS IP アドレスを指すように構成します (実際には、LAN 内のすべてのコンピューターに対してこれを行います)。
LAN 上の複数のコンピューターからページ (両方の窒素アプリのドキュメント ルートにある) を要求すると、ブラウザーでマップされた名前を使用して、DNS サーバーが何らかの負荷分散を行っていることがわかります。
ここで、要求しているページがどの窒素サーバーからのものかをインターフェース上で表示できることを確認してください。wf:flash(wf:f("Some statement on the interface",[]))
このページには、2 つの異なるコンピューターでこのページを要求し、それぞれがどこから提供されているかを記録するイベントを生成するボタンが必要です。次に、1 つの窒素サーバーに移動して停止します。
先ほど停止した窒素サーバーのページを取得したブラウザーのボタンをクリックすると、まだ機能します。
これが、Rusty と友人たちが、窒素プロセスをより多くの窒素アプリに登録できれば、ロード バランサーの背後で実行すると、クラスター内の任意の窒素アプリにイベントを転送できることを発見した理由です。
もちろん、異なるマシン上の 2 つのアプリが同じページ、モジュール、およびパスの構成を持っていることを確認すれば、これはうまく機能します。これは、イベント コールバック関数がデータベース API などを呼び出している可能性があるためです。
DNS サーバーを使用した負荷分散の例は、次のように Linux または Solaris の端末から Google を「掘る」と表示されます。
www.google.com を掘るネーム サーバーの名前が複数の IP アドレスにマッピングされていることがわかります。これにより、ドメイン間の可用性が確保され、ある種の負荷分散が保証されます