クレートドキュメントロードマップツイート
portunusd 、OpenBSDのrelayd and Heirloom unix inetdに触発されたネットワークアプリケーションサーバーです。着信ネットワーク接続のために耳を傾け、着信データを意図したアプリケーションへのイルモスのドアに転送し、同様の方法で応答を返します。 portunusd 、ターゲットアプリケーションによって提供されるファイルシステムのドアに接続された各ポートをマッピングします。
Sequendediagram
参加者クライアント
参加者Portunusd
参加者のドア
参加者アプリケーション
アプリケーション - >>ドア:create /var/run/app.door
Portunusd- >>ドア:開いています
Portunusd- >> Portunusd:ポート80で聞いてください
ループはリクエストを処理します
クライアント - >>+portunusd:HTTPリクエストを送信します
portunusd- >>+アプリケーション:door_call経由のフォワードリクエスト
アプリケーション - >> - Portunusd:door_return経由で応答を送信します
portunusd- >> - クライアント:HTTP応答を送信します
終わり
portunusdの主な目標は、シングルスレッドアプリケーションのスケーリングを促進することです。 inetdモデルでは、すべてのリクエストを処理するための新しいプロセスが作成されます。ドアを活用することにより、 portunusd 、並行性の新しい高水マークに到達した場合にのみ、アプリケーションプロセスに新しいスレッドを作成できます。それ以外の場合、既存のスレッドが再利用され、後続のリクエストが処理されます。
ネットワーク向けのアプリケーションがユーザーの需要に応じて拡張することを望んでいます。アプリケーションがアイドル状態にあるときのリソースコストを最小限に抑えたいと考えており、需要の観点からコストを直線的に保ちたいと考えています。アプリケーション開発者がリソース管理に責任を負う程度を最小限に抑えたいと考えており、UNIXコマンドラインツールの馴染みのある開発環境を(可能な限り)保持したいと考えています。
例として、レールを選ぶと、Railsアプリケーションの単一のRubyアプリケーションは、一度に1つのユーザーリクエストを処理できます。複数の同時リクエストは、メモリに居住しているアプリケーションの複数のコピー(個別のルビー通訳者)なしでは処理できません。このモデルは、ユーザーの需要がほとんどない場合でも多くのメモリを消費し、ホストが他のワークロードを実行することを困難にします。ディスクの多くのページングとgnashingが続きます。
Node.jsなどの環境は、非同期性をプログラマーに対してより透明にすることにより、この問題に対処します。コンピューターの非同期性を受け入れると便利ですが、それをサポートする言語に変更を導入しています。これは単なる構文の変更ではなく、プログラムを読み、書き、理解するために使用するメンタルモデルへの些細な変更でもあります。
スペクトルのもう一方の端では、CGIアプリケーションには、各リクエストの一意のプロセスとアドレススペースが必要です。これらのアプリケーションは、アイドル時にゼロメモリ / CPU使用量に縮小するなど、ユーザーの需要に直線的にスケーリングできますが、各要求にexecv(2)を呼び出すコストはスループットを妨げる可能性があります。
ポストモダンの「サーバーレス」アプローチは、これらの基準を満たしていますが、動作システムを放棄する犠牲を払っています。これは、ソフトウェアを開発するための非常に馴染みのないアプローチであり、実行時にアプリケーションを観察およびデバッグするために使用できる多くのツールを捨てます。
ドアは、開発者が線形の同期タスクを維持および理解する責任があるネットワークアプリケーション開発の新しい(古い?)モデルを有効にしますが、オペレーティングシステム + Webサーバーはスケーリング問題で連携します
これらの品質により、シングルスレッドのUNIXコマンドラインツールのように感じるネットワークアプリケーションを開発し、アイドル時に最小限の費用を提示し、リケストごとの粒度で直線的にスケーリングすることにより、問題のステートメントに対処することができます。
もちろん、ドアだけでは、単一のオペレーティングシステムインスタンスの境界を越えたスケーリングを処理しませんが、ファイアウォールとのリレースタイルのコラボレーションにより、アプリケーションのコピーが複数のホストで利用できると仮定して、これを容易にすることができます。これがportunusd登場する場所です。
ソーシャルメディアプレビューイメージは、Loudon Dodd -own work、CC by -sa 3.0によるものです。
多くの不明瞭なイルモス /錆 /ドアの質問は、@jasonbkingによって回答されました。