Як передавати дані від звичайного сервлета без підтримки до екземпляра бекенда?

Я ніколи не використовував Google App Engine backends, і я дуже заплутався відсутністю зразків і детальної документації.

Припустимо, у мене є додаток для голосування. Я хочу зібрати голоси в регулярному сервлеті GAE без статусу, а потім передавати дані в екземпляр бекенда, який є резидентом і обробляє мої дані. Як я можу передавати дані від звичайного сервлета до серверного сервлету? Як визначити, який клас сервлетів є нормальним сервлетом і який сервлет слід обробляти тільки в екземплярі backend? Я не бачу, як я можу призначити сервлет для бекенда в config xml.

Або що, якщо я маю два backends - клас B1 і клас B2. Як я можу вибрати в коді сервлету без статусу, які бекенди зараз активні? Я чув, що я повинен використовувати URL Fetch для розмови з backend, але як? Я не знайшов, як я можу перейти через екземпляри бекенда.

Порадьте, будь ласка :)

1

1 Відповіді

You should start by reading the documentation on backends

Як я можу передавати дані від звичайного сервлета до бранд-сервлету?

У вас є кілька варіантів - передайте його опосередковано, вставивши дані в memcache або в сховище даних. Або передайте його безпосередньо, використовуючи URLFetch, щоб робити запити до ваших серверів (див. Інформацію про адресу нижче)

Як визначити, який клас сервлетів є звичайним сервлетом, і який сервлет слід обробляти лише в екземплярі backend?

Документ Backend Configuration пояснює, що ви не можете зробити це (ще), хоча їх можна позначити лише як адміністратора, щоб вони не були доступні для загальнодоступних користувачів:

Backend надає доступ до сервлетів, визначених у web.xml, з вашою основною версією програми. На даний момент неможливо налаштувати окремий набір сервлетів для кожного сервера.

Розділ "Адреси підсвічування" містить відомості про те, як підключитися до певної версії:

Екземпляр бекенда може бути націлено на запити HTTP на http://[instance]. [backend]. [app] .appspot.com або на спеціальному домені вашої програми. Якщо ви націлюєте бекенда без націлювання на примірник за допомогою 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 і Пітер, чи знаєте ви, випадково, чи є спосіб дізнатися кількість активних екземплярів на кожному сервері? Я не бачу нічого подібного в API. Я хотів би скористатися динамічними екземплярами і викликами балансу навантаження до них у front-servlet. Згідно з документацією Google може змінити кількість екземплярів на основі навантаження. З іншого боку, використання постійної кількості резидентних примірників досить дорого.
додано Автор expert, джерело
Ммм, я думаю, я можу збільшити кешований лічильник в обробнику "/ _ah/start" ..
додано Автор expert, джерело
Ну, для мене користь екземпляра backend екземпляра проти frontend екземпляра є те, що він дозволяє мені тримати щось в пам'яті протягом більш ніж 10 сек період :)
додано Автор expert, джерело
@NickJohnson, швидке питання до вас. Чи повертає com.google.appengine.api.backends.BackendService.getBackendA & zwnj; ddress() різні адреси, якщо в конфігурації встановлено кілька динамічних екземплярів? У середовищі розробки він завжди повертає IP: порт того самого екземпляра.
додано Автор expert, джерело
Я розумію, що вам не потрібно вручну завантажувати баланс. Поки ви не вкажете конкретний екземпляр, движок програми надішле ваш запит до наступного доступного сервера
додано Автор Peter Recore, джерело
Існує API для отримання URL-адреси для бекенда таким чином, що він працює між розробниками та виробництвом, а також уникає необхідності URL-адрес жорсткого коду. com/google/appengine/api/backends/пакет-резюме.html "rel =" nofollow noreferrer "> code.google.com/appengine/docs/java/javadoc/com/google/…
додано Автор Nick Johnson, джерело
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників