У меня есть набор приложений Java AppEngine, структурированный следующим образом:
- ОТДЫХА службы
- Веб-интерфейс
Эти два компонента размещены в двух отдельных экземплярах AppEngine (платных), это стандартный способ разработки вашего приложения, и он имеет смысл для меня, поскольку я также получаю доступ к службе REST из других клиентов (мобильных приложений и т. д.), поэтому я бы нравится держать его отдельно.
Проблема, с которой я сталкиваюсь, заключается в том, что, хотя я обращаюсь к службе REST напрямую (GET из браузера или мобильных приложений), время отклика всегда хорошее, при доступе к службе REST из моего внешнего интерфейса AppEngine время отклика иногда очень неустойчиво.
Я провел кучу тестов, и при выполнении GET из браузера в службу REST всегда возвращается достаточно быстро, вызовы из моего внешнего интерфейса AppEngine в службу REST могут переходить от возврата так же быстро, как из браузера, до более чем 10 секунд. (вызывая тайм-ауты и т. д.) с не очень разумным временем отклика в целом (сек вместо 100 мсек).
Я понимаю, что если бы была задержка в целом, все в среднем занимало бы примерно одинаковое время, чтобы получить ответ, но чего я не понимаю, так это разницы между вызовом службы из любого другого места и вызовом ее из< /strong> экземпляр AppEngine.
Должен сказать, что это происходит не всегда, недели идут хорошо, а потом бывают очень плохие дни (сегодня на самом деле не считается, так как это был полный сбой), и хотя в целом я очень доволен движком приложения, иногда я задаюсь вопросом, не совершил ли я ошибку, инвестируя в эту платформу.
Я ищу объяснение: является ли это каким-то неотъемлемым ограничением AppEngine при постановке в очередь довольно стандартных http-запросов, исходящих из экземпляра AppEngine?
Также я думал о возможных обходных путях — возможно, мне следует разместить службу в том же экземпляре, что и внешний интерфейс, но я действительно не хочу этого делать и оставляю это в крайнем случае.
Любые советы приветствуются.