最近、InfoQ で Erlang に関するビデオを見ました。そのビデオでは、作成者の 1 人がメッセージ ループの動作を置き換える方法を紹介していました。
彼は単純にメッセージ ループ コードの新しいバージョンのラムダを含むメッセージを送信し、古いループを再度呼び出す代わりに呼び出しました。
そのコードは、Erlang で参照されているホットスワップですか? それとも、他のよりネイティブな機能ですか?
最近、InfoQ で Erlang に関するビデオを見ました。そのビデオでは、作成者の 1 人がメッセージ ループの動作を置き換える方法を紹介していました。
彼は単純にメッセージ ループ コードの新しいバージョンのラムダを含むメッセージを送信し、古いループを再度呼び出す代わりに呼び出しました。
そのコードは、Erlang で参照されているホットスワップですか? それとも、他のよりネイティブな機能ですか?
はい、erlang サーバーでのホットスワップは通常、この機能を指します。これについては、stackoverflow の質問Achifying code swapping in Erlang's gen_serverと、このすてきなErlang Generic Server チュートリアルまたはこの小さなチュートリアルでもよく説明されています。
Erlang/OTPモジュールは、コールバック モジュールに関数をgen_server
実装することで、ホット スワップを実現する一般的な方法を提供します。Module:code_change/3
このようにして、サーバー コードをシャットダウンせずにアップグレードしたり、何かが期待どおりに機能しない場合は以前の実装にフォールバックしたりできます。一般に、ホット スワップは、ジェネリックリリース ハンドラを使用して配置する必要があります。