私は、いくつかのパラメータ(AとB)を取り、いくつかの結果を計算する(グラフでAからBへの最適なパスを見つけ、グラフは読み取り専用です)Python(まあ、今はphpですが、書き直しています)関数を持っています一般的なシナリオでは、1 回の呼び出しが完了するまでに 0.1 秒から 0.9 秒かかります。この関数は、単純な REST Web サービス (GET bestpath.php?from=A&to=B) としてユーザーによってアクセスされます。現在の実装は非常にばかげています - これは単純な php スクリプト + apache + mod_php + APC であり、すべてのリクエストですべてのデータ (php 配列で 12MB 以上) をロードし、すべての構造を作成し、パスを計算して終了する必要があります。変えたい。
N 個の独立したワーカー (サーバーごとに Y サーバーの X) を使用したセットアップが必要です。各ワーカーは、ループ (要求の取得 -> 処理 -> 返信の送信 -> 要求の取得...) で実行される Python アプリであり、各ワーカーは処理できます。一度に 1 つの要求。フロントエンドとして機能するものが必要です。ユーザーからリクエストを取得し、リクエストのキューを管理し (構成可能なタイムアウトで)、ワーカーに一度に 1 つのリクエストを供給します。
これにアプローチする方法は?セットアップを提案できますか?nginx + fcgi または wsgi または何か他のもの? ハプロキシ?ご覧のとおり、私は Python やリバース プロキシなどの初心者です。アーキテクチャ (およびデータ フロー) についての出発点が必要なだけです。
ところで。ワーカーは読み取り専用データを使用しているため、ワーカー間のロックと通信を維持する必要はありません