通常のステートレスなサーブレットからバックエンドインスタンスにデータを渡すには?

私はGoogle App Engineのバックエンドを使ったことは一度もありませんでした。サンプルが不足していることやドキュメントの詳細がわかりません。

投票アプリがあるとします。私は、通常のステートレスGAEサーブレットで投票を収集し、そのデータを常駐するバックエンドインスタンスに渡して、自分のデータを処理します。通常のサーブレットからバックエンドサーブレットにデータを渡すにはどうしたらいいですか?どのサーブレットクラスが通常のサーブレットであり、どのサーブレットがバックエンドインスタンスでのみ処理されるべきかをどのようにして割り当てるのですか? config xmlでバックエンドにサーブレットを割り当てる方法がわかりません。

または、クラスB1とクラスB2の2つのバックエンドがある場合はどうなりますか?ステートレス・サーブレットのコードで、どのバックエンドが現在アクティブであるかを選択するにはどうすればよいですか?私はバックエンドと話すのにURL Fetchを使うべきだと聞いたが、どうだった?私はバックエンドのインスタンスをどのように反復できるのか分かりませんでした。

お知らせ下さい :)

1

1 答え

You should start by reading the documentation on backends

通常のサーブレットからバックエンドサーブレットにデータを渡すにはどうすればよいですか?

いくつかのオプションがあります - memcacheまたはデータストアにデータを固定して間接的に渡します。または、URLFetchを使用して直接バックエンドにリクエストを送信します(下記のアドレス情報を参照)

どのサーブレットクラスが通常のサーブレットであり、どのサーブレットがバックエンドインスタンスでのみ処理されるべきかを指定するにはどうすればいいですか?

バックエンド設定のドキュメントでは、そのことができないことが説明されています(まだ)ですが、管理者としてマークすることはできますので、一般公開されていません。

バックエンドは、web.xmlに定義されているサーブレットのセットをメインアプリケーションのバージョンと共有します。現時点では、バックエンドごとに別々のサーブレットを設定することはできません。

「バックエンドのアドレス指定」セクションには、特定のバックエンドに接続する方法に関する情報が含まれています。

バックエンドインスタンスは、http:// [instance]。[backend]。[app] .appspot.com、またはアプリケーションのカスタムドメインでのHTTPリクエストを対象にすることができます。 http:// [backend]。[app] .appspot.comを使用してインスタンスをターゲティングせずにバックエンドをターゲティングする場合、App Engineはバックエンドの最初に使用可能なインスタンスを選択します。

When you configure your backends , you give them names, which go into the [backend] slot in the url scheme described above. If you wanted to send a http request to the first available B1 instance, you would use something like http://B1.ruslansapp.appspot.com/dosomething/

3
追加された
@NickJohnsonとPeter、与えられたバックエンドごとにアクティブなインスタンスの量を調べる方法があれば、何か偶然知っていますか? APIのようなものは私には見られません。私がしたいのは、動的インスタンスを使用し、フロントエンドサーブレットでそれらにロードバランス呼び出しを行うことです。ドキュメントによると、Googleは負荷に基づいてインスタンスの量を変更する可能性があります。もう1つは常駐インスタンスの一定量を使用していたのはかなり高価です。
追加された 著者 expert,
うーん、私は "/ _ah/start"のハンドラでキャッシュカウンタを増やすことができると思う。
追加された 著者 expert,
さて、バックエンドインスタンスとフロントエンドステートレスインスタンスの利点は、私が10秒以上の期間、メモリ内に何かを保持できることです。
追加された 著者 expert,
@NickJohnson、あなたに簡単な質問。 configに複数の動的インスタンスが設定されている場合、 com.google.appengine.api.backends.BackendService.getBackendA‌ ddress()は異なるアドレスを返しますか?開発環境では、常に同じインスタンスのIP:portを返します。
追加された 著者 expert,
バックエンドの負荷を手動で調整する必要はありません。特定のインスタンスを指定しない限り、アプリエンジンはリクエストを次の利用可能なバックエンドに送信します。
追加された 著者 Peter Recore,
デベロッパーとプロダクション全体で動作するようにバックエンドのURLを取得するためのAPIがあり、URLをハードコードする必要はありません。 code.google.com/appengine/docs/java/javadoc/com/google/&hellip
追加された 著者 Nick Johnson,