Normal durum bilgisi olmayan sunucu uygulamasından arka uç örneğine nasıl geçilir?

Google App Engine backends'ı hiç kullanmadım ve örnekler ve ayrıntılı belgeler eksikliğinden dolayı kafam çok karışık.

Bir oylama uygulamasına sahip olduğumu varsayalım. Normal vatansız GAE servletinde oy toplamak ve ardından verileri yerleşik olan arka plan örneğine iletmek ve verileri işler halde tutmak istiyorum. Verileri normal sunucudan arka uç sunucusuna nasıl geçirebilirim? Servlet sınıfının normal servleti ve yalnızca arka uç örneğinde hangi sunucu uygulamasının işleneceğini nasıl atayabilirim? Yapılandırma xml'de arka plana nasıl servlet atayabileceğimi göremiyorum.

Ya da iki arka uçlarım varsa - B1 sınıfı ve B2 sınıfı. Şu anda hangi arka uçların etkin durumda olduğu, durum bilgisi olmayan sunucu uygulamasının kodunu nasıl seçebilirim? Arka uçlarla konuşmak için URL Getirisini kullanmam gerektiğini duydum ama nasıl? Arka uç örnekleriyle nasıl yineleyebileceğimi bulamadım.

Tavsiye lütfen :)

1

1 cevap

You should start by reading the documentation on backends

Verileri normal sunucudan arka uç sunucusuna nasıl geçirebilirim?

Birkaç seçeneğiniz var - memcache veya veri deposundaki verileri yapıştırarak dolaylı olarak aktarın. Veya doğrudan arka planınıza istekte bulunmak için URLFetch'i kullanarak iletin (aşağıdaki adres bilgisine bakın)

Hangi servlet sınıfının normal sunucu uygulaması olduğunu ve yalnızca arka uç örneğinde hangi sunucu uygulamasının işleneceğini nasıl atayabilirim?

Arka Plan Yapılandırması belgesindeki doküman, bunu yapamayacağınızı açıklar. (henüz), onları yalnızca yönetici olarak işaretleyebilmenize rağmen, herkese açık olmayanlar:

Backends, web.xml'de tanımlanan ana sunucu setini ana uygulama sürümünüzle paylaşır. Şu anda her bir arka uç için ayrı bir sunucu kümesi yapılandırmak mümkün değildir.

"Arka Plan Adresleme" bölümü, belirli bir arka uça nasıl bağlanacağınız hakkında bilgi içerir:

Bir arka uç örneği, http://[instance]. [backend]. [app] .appspot.com veya uygulamanızın özel alan adında HTTP istekleriyle hedeflenebilir. Http://[arka uç]. [Uygulama] .appspot.com'u kullanarak bir örneği hedeflemeden bir arka uç hedeflerseniz, App Engine arka uçun kullanılabilir ilk örneğini seçer.

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
katma
@NickJohnson ve Peter, herhangi bir arka uç başına aktif örneklerin miktarını bulmak için bir yol varsa, herhangi bir şans ile biliyor musunuz? API’da böyle bir şey görmüyorum. Yapmak istediğim şey, ön uç sunucudaki dinamik örnekleri ve yük dengesi çağrılarını kullanmaktır. Belgelere göre Google, yüke dayanan örneklerin miktarını değiştirebilir. Öte yandan sabit miktarlarda yerleşik örnekleri kullanmak oldukça pahalı.
katma yazar expert, kaynak
Hmmm, sanırım "/ _ah/start" işleyicisinin önbelleğe alınmış sayacını artırabilirim.
katma yazar expert, kaynak
Eh, bana backend örneği ön cansız vatansız örneğinin yararına 10 saniyeden daha uzun bir süre bellekte bir şey tutmak için izin vermesidir :)
katma yazar expert, kaynak
@NickJohnson, size hızlı bir soru. com.google.appengine.api.backends.BackendService.getBackendA & zwnj; ddress() yapılandırmasında birden fazla dinamik örnek ayarlandığında farklı adresler döndürüyor mu? Geliştirme ortamında her zaman aynı örneğin IP: portu döner.
katma yazar expert, kaynak
Benim anlayışım, arka uçları dengelemeye gerek duymamanız gerektiğidir. Belirli bir örneği belirtmediğiniz sürece, uygulama motoru isteğinizi bir sonraki kullanılabilir arka uça gönderir.
katma yazar Peter Recore, kaynak
Devre ve üretim genelinde çalışan bir arka uç URL'si almak için bir API vardır ve URL'leri kodlama gereğini ortadan kaldırır:
katma yazar Nick Johnson, kaynak