2017-05-03 8 views
0

ocamlを使用してWebサーバーを作成します。これはRESTインターフェースを持ち、依存関係はなく(プロセス起動時にRAMにロードされた一定のデータを検索するだけで)、読み取り専用の問合せ(すべてのノードから提供可能 - 結果も同じ)を提供します。ocamlを使用したマルチプロセスWebサーバー

私はOCamlが大好きですが、スレッドごとに一度にしか処理できないという問題が1つあります。

nginxを前に置いて、同じサーバー上の異なるポート上で実行されている複数のプロセスインスタンスに対して負荷分散を行うだけでスケーリングを行うと思います。

私はこの問題に遭遇している唯一の人だとは思わないが、一度にいくつかのocamlプロセスを稼働させておくことが最善のツールとなり、クラッシュした場合に再起動し、異なるポートを使用して(それらの間の負荷分散を行う)

私は標準的なLinuxサービスについて考えていましたが、4つのハードコードされたレコードを作成し、それぞれにservice start webserver1を呼びたくありません。

+1

何についてhttps://blogs.janestreet.com/async-parallel/? (私は個人的にそれを使用したことはありません)。 –

+0

それを見て、それは私が必要とする正確な問題に対処しているようです –

+0

これは、私には、従業員プロセスのためのシリアライズ/デシリアライズ構造ですので、マスタープロセスは、より多くのオーバーヘッドを...見ています...すべてのプロセスは独立していません私は今、http://supervisord.org/ –

答えて

0

複数のオペレーティングシステムプロセスが必要ですか?それ以外の場合は、cohttpのようなものをlwtまたはasyncと一緒に使用して、複数のスレッド(およびイベントループ)を使用して、同じOSプロセスで同時要求を処理することができます。あなたはRESTを述べたように

、あなたはcohttpに基づいて、よくコメント例が付属しているocaml-webmachineに興味があるかもしれません。

+0

を調査しています。私はそれが複数のネイティブスレッド、1つのOCamlプロセスが利用できるとは思わない(何かをシリアル化する必要はありません)私が信じる時に1つのCPUコア? –

関連する問題