Разделение службы и внешнего интерфейса в AppEngine вызывает задержку

У меня есть набор приложений Java AppEngine, структурированный следующим образом:

  • ОТДЫХА службы
  • Веб-интерфейс

Эти два компонента размещены в двух отдельных экземплярах AppEngine (платных), это стандартный способ разработки вашего приложения, и он имеет смысл для меня, поскольку я также получаю доступ к службе REST из других клиентов (мобильных приложений и т. д.), поэтому я бы нравится держать его отдельно.

Проблема, с которой я сталкиваюсь, заключается в том, что, хотя я обращаюсь к службе REST напрямую (GET из браузера или мобильных приложений), время отклика всегда хорошее, при доступе к службе REST из моего внешнего интерфейса AppEngine время отклика иногда очень неустойчиво.

Я провел кучу тестов, и при выполнении GET из браузера в службу REST всегда возвращается достаточно быстро, вызовы из моего внешнего интерфейса AppEngine в службу REST могут переходить от возврата так же быстро, как из браузера, до более чем 10 секунд. (вызывая тайм-ауты и т. д.) с не очень разумным временем отклика в целом (сек вместо 100 мсек).

Я понимаю, что если бы была задержка в целом, все в среднем занимало бы примерно одинаковое время, чтобы получить ответ, но чего я не понимаю, так это разницы между вызовом службы из любого другого места и вызовом ее из< /strong> экземпляр AppEngine.

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

Я ищу объяснение: является ли это каким-то неотъемлемым ограничением AppEngine при постановке в очередь довольно стандартных http-запросов, исходящих из экземпляра AppEngine?

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

Любые советы приветствуются.


person JohnIdol    schedule 16.01.2013    source источник
comment
Это стандартный способ разработки [вашего] приложения [требуется ссылка] — на самом деле это не так, и, как вы видите, это особенно неэффективный способ разработки вашего приложения.   -  person Nick Johnson    schedule 17.01.2013
comment
@NickJohnson Привет, Ник, почему ты такой оборонительный? Если это не лучшая практика, то, безусловно, является отраслевым стандартом для разработки вашего приложения таким образом, чтобы отделить службу от внешнего интерфейса на всех других платформах, над которыми я когда-либо работал. Время отклика при вызове службы из любого места, кроме экземпляра AppEngine, на самом деле нормальное и достаточно надежное. Мне бы хотелось, чтобы вы рассказали, почему, как я наблюдаю, это особенно неэффективно при вызове службы FROM из экземпляра AppEngine. Вы предлагаете, что единственным решением этой проблемы является размещение службы в том же экземпляре, что и внешний интерфейс?   -  person JohnIdol    schedule 17.01.2013
comment
@NickJohnson Я не согласен с вашим утверждением. Кроме того, где ваша цитата о том, что это нестандартный способ.   -  person tom    schedule 17.01.2013


Ответы (1)


я вижу 2 причины

1. Внешний доступ к вашей службе REST, кэширование оптимизировано, так как клиент(ы) являются различными версиями браузеров. Ваше приложение FrontEnd, которое внутренне обращается к службе REST, может не реализовать очень хороший механизм кэширования.

2. Выставляет ли AppEngine счет за внутренний трафик? если нет, то это может быть причиной того, что внешние IP-адреса имеют приоритет перед внутренними??

person TheWhiteRabbit    schedule 16.01.2013
comment
Спасибо за ваш ответ: 1. Я полагаю, что это нечто присущее AppEngine, поэтому оно подпадает под возможные объяснения, но я понятия не имею, так это или нет. 2. appEngine взимает плату за исходящую пропускную способность (независимо), и я связываюсь со службой через http, поэтому трафик не является внутренним. - person JohnIdol; 16.01.2013