Google App Engine разделяет интерфейс и серверную часть

В зависимости от формы, в которой находится Google App Engine, запуск моего приложения может занять слишком много времени:

Caused by: com.google.apphosting.api.DeadlineExceededException: This request (d872b776bcbbfd27) started at 2012/12/04 17:35:28.861 UTC and was still executing at 2012/12/04 17:36:28.348 UTC

Приложение содержит интерфейс и различные серверные части, и кажется, что все приложение запускается один раз для каждого экземпляра, и многие фильтры, безопасность и т. Д. В любом случае не будут использоваться на серверных частях.

Можно ли разделить приложение и развернуть интерфейс и серверную часть отдельно? И как мне запустить это приложение на основе maven на моем сервере разработки?

Есть только расплывчатая документация — наиболее близкая мне удалось найти в документации Google App Engine:
https://developers.google.com/appengine/docs/java/backends/overview
You can place your backends in a separate application root directory if you want to avoid sharing code or handlers, ...

А что касается среды разработки, net.kindleit.maven-gae-plugin совершенно ничего не говорит о своих параметрах конфигурации backend и/или backendDir.

Может ли кто-нибудь предоставить более подробную информацию о том, можно ли/как это сделать?

Спасибо, Стефан


person Stefan Haebler    schedule 04.12.2012    source источник
comment
Что заставляет вас думать, что разделение внешнего интерфейса и внутреннего интерфейса ускорит запуск вашего приложения?   -  person Nick Johnson    schedule 05.12.2012
comment
Для меня документ Google звучит так, как будто можно развернуть две войны, одну для внешнего интерфейса и одну для внутреннего интерфейса, и в случае поступления запроса внешнего интерфейса не нужно запускать все серверные сервлеты, и наоборот.   -  person Stefan Haebler    schedule 07.12.2012
comment
Вы можете сделать это просто отлично, если будете избирательно относиться к тому, какой код вы вызываете в своем приложении - вам не нужны отдельные приложения или версии, Java будет загружать только те классы, которые вы запрашиваете.   -  person Nick Johnson    schedule 07.12.2012
comment
Хм... согласен. Есть ли у вас какие-либо конкретные указания относительно разделения? (Мое весеннее приложение безопасности обычно запускается за 20 секунд на интерфейсе F2, поэтому у меня там достаточно резерва.)   -  person Stefan Haebler    schedule 07.12.2012
comment
Боюсь, я недостаточно знаком с App Engine Java, чтобы сказать наверняка. Использование профилировщика было бы хорошим первым шагом.   -  person Nick Johnson    schedule 07.12.2012


Ответы (1)


Вы можете загрузить несколько версий вашего приложения. Каждая версия может быть полностью независимой от другой версии, хотя все версии используют одно и то же хранилище данных. Например, обычно вы не можете смешивать Java/Python/Go в одной среде выполнения. Однако у вас может быть одна версия на Python и другая на Java.

Ваша версия по умолчанию доступна на .appspot.com. Другие ваши версии доступны на ..appspot.com

Что вам нужно сделать, это:

1. clone your current app
2. change the version for your lean version
3. deploy lean version
4. modify the main version to access backends at <instance>.<backend-name>.<lean-version>.<appid>.appspot.com
5. deploy main version

Однако управление общим источником может быть еще одной проблемой, вы можете использовать программные ссылки.

person dragonx    schedule 07.12.2012