4

次のような構造の Java AppEngine アプリのセットがあります。

  • REST サービス
  • ウェブフロントエンド

これら 2 つのコンポーネントは、2 つの個別の AppEngine インスタンス (有料) でホストされます。これは、アプリケーションを設計する標準的な方法であり、他のクライアント (モバイル アプリなど) からも REST サービスにアクセスするので、私にとっては理にかなっています。別々にしておくのが好きです。

私が抱えている問題は、REST サービスに直接アクセスした場合 (ブラウザーまたはモバイル アプリから GET) の応答性は常に良好であっても、AppEngine フロントエンドから REST サービスにアクセスすると応答時間が非常に不安定になることがあることです。

一連のテストを実行したところ、ブラウザーから REST サービスへの GET を実行すると常にかなり高速に返されますが、AppEngine フロントエンドから REST サービスへの呼び出しは、ブラウザーからの呼び出しと同じ速さから 10 秒以上かかる場合があります。 (タイムアウトなどの原因となります)一般的にあまり合理的な応答時間ではありません(数百ミリ秒ではなく数秒)。

一般的にレイテンシーがあった場合、応答を取得するのに平均してほぼ同じ時間がかかることは理解できますが、他の場所からサービスを呼び出す場合とAppEngine インスタンスからサービスを呼び出す場合のこの違いは理解できません。

これは常に発生するとは限らず、数週間はうまくいき、その後非常に悪い日がいくつかあります(今日は完全な停止だったため、実際にはカウントされません)。一般的にはアプリに非常に満足していますが-エンジン、このプラットフォームへの投資を間違えたのではないかと時々思います。

私は説明を探しています:これは、AppEngineインスタンスから送信されるこの種のかなり標準的なhttpリクエストをキューに入れるときの、ある種の固有のAppEngine制限ですか?

また、可能な回避策についても考えていました。サービスをフロントエンドと同じインスタンスにホストする必要があるかもしれませんが、実際にはそうしたくなく、最後の手段として残しています。

アドバイスをいただければ幸いです。

4

1 に答える 1

0

私は2つの理由を見ることができます

1. REST サービスへの外部アクセス。クライアントはさまざまなバージョンのブラウザーであるため、キャッシングが最適化されます。内部で REST サービスにアクセスしているフロントエンド アプリケーションは、適切なキャッシュ メカニズムを実装していない可能性があります。

2.AppEngine は内部トラフィックに対して課金しますか? そうでない場合、それが内部 IP よりも外部 IP を優先する理由になるのでしょうか??

于 2013-01-16T05:33:01.197 に答える