Erlang/OTP で、軽量プロセス、アクター モデル、およびスーパーバイザーが信頼できるサービスを作成する上でいかに重要であるかを読みました。これは OpenResty (マスター/ワーカー、非同期 IO、組み込み Lua) と比べてどうですか?
OpenResty が Erlang/OTP と一緒に (または代わりに) どのように使用されるかをよりよく理解するために、主な概念に関する一般的なアーキテクチャの概要に興味があります。
Erlang/OTP で、軽量プロセス、アクター モデル、およびスーパーバイザーが信頼できるサービスを作成する上でいかに重要であるかを読みました。これは OpenResty (マスター/ワーカー、非同期 IO、組み込み Lua) と比べてどうですか?
OpenResty が Erlang/OTP と一緒に (または代わりに) どのように使用されるかをよりよく理解するために、主な概念に関する一般的なアーキテクチャの概要に興味があります。
これらの 2 つのリンクは、質問に部分的に答えます。
https://github.com/openresty/lua-nginx-module/blob/master/README.markdown
Lua インタープリターまたは LuaJIT インスタンスは、単一の nginx ワーカー プロセス内のすべてのリクエストで共有されますが、リクエスト コンテキストは軽量の Lua コルーチンを使用して分離されます。
ロードされた Lua モジュールは nginx ワーカー プロセス レベルで保持されるため、メモリ フットプリントが小さくなります...
https://github.com/openresty/lua-nginx-module/wiki/はじめに
...着信リクエストごとに、 lua-nginx-module はコルーチンを作成してユーザーコードを実行し、リクエストを処理します。コルーチンは、リクエスト処理プロセスが完了すると破棄されます。すべてのコルーチンには独自の独立したグローバル環境があり、共有された読み取り専用の共通データを継承します。
... lua-nginx-module は、非常に低いメモリ オーバーヘッドで数万の同時リクエストを処理できます。私たちのテストによると、lua-nginx-module の各リクエストのメモリ オーバーヘッドはわずか 2 KB で、LuaJIT を使用した場合は半分以下です。