分散 API リクエストの実験に取り組んでいます。ユーザーがサーバーに代わってリクエストを作成できるようにする Web サイトを PHP で構築しています。これにより、リクエストをすべてのユーザーに分散し、大量のトラフィックがあってもアプリケーションのスケーラビリティを維持できるはずです。
私の最終的な目標は、ブラウザに API リクエストを作成させ、レスポンスを解析して、解析したデータをサーバーに送信することです。これにより、アプリケーションが現在苦しんでいるパフォーマンスのボトルネックが解消されます。しかし、このシステムを構築する方法に問題があります。
私が想定したシステムの仕組みは次のとおりです。
- ユーザーがウェブサイトにアクセス
- API リクエスト キューは、作業のリストから読み込まれます
- ブラウザは作業キューから複数の API リクエストを作成し、レスポンスを解析します
- ブラウザは解析したデータを AJAX 経由でサーバーに送信します
- サーバーは古いデータを更新し、タイムスタンプを追加し、作業キューからリクエストを削除します
- 所定の TTL 作業が再びキューに追加され、プロセスが繰り返された後
ここに私の懸念があります:
- API リクエストがサーバーと同じドメインで行われていません。ユーザーのブラウザーからデータを要求するときに、これが問題を引き起こすことを理解しています (同一生成元ポリシーのため)。プロキシ PHP ファイルの使用を検討しましたが、これもいくつかの懸念を引き起こしました。次の箇条書きを参照してください。
- 解析の配布は問題の一部に過ぎず、他の問題は私の要求を調整することです。1 秒あたりに実行できるリクエストの数が制限されており、スケーラビリティの問題が発生しています。リクエストを作成するためにプロキシ ファイルを作成することで、リクエストが技術的にはまだプロキシ ファイル経由でサーバーから発信されているため、リクエストのスロットリングによってまだ制限されているのではないかと心配しています。
- ブラウザーは応答を解析してサーバーに送信しているため、誰かが AJAX 呼び出しを介してサーバーに悪意のあるデータを挿入できる可能性があります。
そして最後に私の質問:
- 私の要件に基づいて、プロキシ PHP ファイルを使用することは、これらの要求を行うための最良の方法ですか?
- プロキシ ファイルを使用することが最善の方法である場合、要求のスロットリングによって引き続き制限されるのでしょうか、それとも要求 (およびその結果としてスロットリングの制限) がクライアントに渡されるのでしょうか?
- 標準的なセキュリティ対策 (文字列のエスケープ、スラッシュの削除、SSL の使用) 以外に、AJAX からサーバーへの通信で行うべき予防策はありますか?
- 誰かがすでにこれを行っていますか?もしそうなら、私が従うことができる例はありますか? すべての結果が私の要件とは無関係であるため、検索の言葉遣いが間違っているに違いありません。
- そして最後に、いくつかの任意の意見の質問... この方法論についてどう思いますか? この構造は致命的な欠陥ですか?私がやろうとしていることを達成するためのより良い方法はありますか?
よろしくお願いします。