8

StackExchange用のGoogleChrome拡張機能を作成しています。これは、評判を追跡し、StackExchangeサイトでコメントの通知を受け取ることができるシンプルな拡張機能です。

現在、自分では対処できない問題がいくつか発生しています。私の拡張機能は、バックエンドとしてGoogle App Engineを使用して、StackExchangeAPIへの外部リクエストを行います。単一サイトでの新しいコメントに対する拡張機能からの各単一クライアント要求により、非スキートユーザーに対しても応答を準備するためにAPIエンドポイントに多くの要求が発生する可能性があります。平均的なユーザーは、Stack Exchangeネットワークの少なくとも3つのサイトにアカウントを持っており、10を超えるサイトもあります。

Stack Exchange APIにはリクエスト制限が
あります。1つのIPアドレスは、1日あたり特定の数(10,000)のAPIリクエストしか作成できません。
単一のIPアドレスから5秒間に30を超えるリクエストを行うと、APIはリクエストを遮断します。

すべてのリクエストを5秒あたり30にスロットルする必要があることは明らかです。現在、memcachedを使用した分散ロックに基づくリクエストスロットルロジックを実装しています。memcachedを単純なロックマネージャーとして使用して、GAEインスタンスのアクティビティを調整し、UrlFetchリクエストを抑制しています。
しかし、このような強力なインフラストラクチャを制限して、5秒あたり30を超えるリクエストを発行しないようにすることは大きな失敗だと思います。このようなAPIリクエスト率では、新しくて便利で便利な機能の開発を続けることができず、いつの日か正しく機能しなくなります。
現在、私のアプリには90人のユーザーがいて成長しており、リクエスト率を最大化する方法を考え出す必要があります。

既知のとおり、App Engineは、異なるIPの同じプールを介して外部UrlFetchリクエストを作成します。私の目標は、リクエストスロットル機能を記述して、APIの利用規約に確実に準拠し、GAE分散機能を利用することです。

したがって、私の質問は、APIの使用条件に準拠し、GAE分散機能を利用しながら、実用的なAPIスループットを最大化する方法です。

別のプラットフォーム/ホスト/プロキシを使用するようにアドバイスすることは、私の頭の中では役に立たないだけです。

4

2 に答える 2

4

Google App Engine の共有 IP プールをプログラムで管理する方法を探しているのであれば、運が悪いと確信しています。

とにかく、よくある質問の一部であるこのアドバイスを引用すると、素晴らしいアプリを実行し続けるチャンスがたくさんあると思います

1 日にさらに多くのリクエストが必要な場合はどうすればよいですか?

特定の種類のアプリケーション (サービスと Web サイトの 2 つを挙げます) では、通常のアプリケーションよりも 1 日あたりの要求要件がはるかに高くなることがあります。より高いリクエスト クォータの必要性を証明できる場合は、お問い合わせください。

編集:
私は間違っていました、実際にはあなたにはチャンスがありません。
Google App Engine [アプリ] は運命づけられています。

于 2010-10-16T20:45:51.903 に答える
2

最初に: 私はあなたの拡張機能を使用しています。

memcachedを使用して結果をキャッシュすることを検討しましたか?
API から直接結果を取得する代わりに、使用されている場合はまずキャッシュで検索し、使用されていない場合は取得してキャッシュし、X 分後に有効期限が切れるようにします。

2 番目に、1 人のユーザーの評判を尋ねるのではなく、複数のユーザーの評判を一緒に尋ねるのではなく、ユーザーの要求をまとめてみてください。

于 2010-10-16T18:03:57.673 に答える