6

これは、「どのような技術が利用可能か」という一般的な質問です。

私の会社では、RESTful API を使用した Web アプリケーションを提供しています。ただし、私のニーズには遅すぎます。結果の一部は扱いにくい形式になっています。

ここに画像の説明を入力

Restful サーバーをプロキシ/アダプター サーバーでラップしたいので、プロキシに接続すると RESTful API を取得できます

ここに画像の説明を入力

したがって、いくつかのことを行う必要があります。

  • ほとんどのリクエストをパススルー
  • 一部のリクエストをキャッシュする
  • 元のサーバーで追加のリクエストを実行して、リクエストがキャッシュ可能かどうかを検出します

ここに画像の説明を入力

たとえば、レコード内のフィールドに対するリクエストがあります: GET /records/id/field は遅いかもしれませんが、指紋リクエスト GET /records/id/fingerprint は常に高速です。フィンガープリントの GET /records/1/field2 のキャッシュが存在する場合、キャッシュされたバージョンを提供する前に feedbeef、元のサーバーにまだフィンガープリントがあることを確認する必要があります。feed beef

  • 一部の応答のヘッダーを修正 - パスに基づいて content-type など
  • たとえば、いくつかの大きなコンテンツでストリーム処理を行う

GET /records/id/attachments/1234

ここに画像の説明を入力

100Mb のログ ファイルをテキスト形式で返します

ファイルからヌル文字を削除 オプションでログを再コード化して無関係な行を除外し、クライアント キャッシュの負荷を後のリクエスト用にフィルタリングされたバージョンに軽減します。


クライアントを変更してこの機能を実現することはできますが、そのようなコードは他のクライアント (異なる言語) では再利用できず、クライアント ロジックが複雑になります。


clojure/ring がそれを実行できるかどうか調べてみたところ、小さなプロキシ ミドルウェアがありますが、私が知る限り、それはストリーミング コンテンツを処理しません。100Mb 全体をダウンロードする必要があります。また、キャッシュロジックはまだ含まれていません。


squid でできるかどうか調べてみましたが、私はその技術に詳しくなく、リクエストをその場で変更するのではなく、リクエストを通過させることに主に関心があるようです。


これを実装するための正しいテクノロジを見つけるヒントを探しています。新しい言語を学ぶことで本当に簡単な方法にアクセスできる場合、私はほとんど言語にとらわれません。

4

3 に答える 3

1

カスタム ビジネス ロジックを実装しやすいプラットフォームを選択する必要があると思います。次の Web アプリケーション フレームワークは、REST API との簡単な接続を提供し、REST プロキシとして機能する Web アプリケーションを作成できるようにします。

私は Play の方がよく知っています。Play には、役に立つと思われるキャッシング用のユーティリティが用意されており、多くのプラグインによって拡張可能であることも知っています。

Scala に精通している場合は、Finagleも参照してください。これは、プロトコルに依存しない接続を提供するために Twitter のインフラストラクチャ チームによって構築されたフレームワークです。REST から REST へのプロキシとしてはやり過ぎかもしれませんが、便利な抽象化を提供します。

プログラムで (lua で) プロキシを作成できるApitoolsなどのサードパーティ サービスを確認することもできます。Apiriseは同様のサービス (私は共同設立者です) であり、ユーザー フレンドリーな UI で同様の機能を提供することを目的としています。

于 2014-04-25T11:38:28.863 に答える
0

https://github.com/nodejitsu/node-http-proxyは便利そうですが、トランスコーディングのプロセスをストリーミングできるかどうかはまだわかりません。

于 2013-07-03T17:57:50.553 に答える