#google-app-engine #google-cloud-platform
#google-app-engine #google-облачная платформа
Вопрос:
Возможно ли группировать определенные запросы вместе на основе их URL, гарантируя, что похожие запросы отправляются в один и тот же экземпляр?
Например, для моего движка приложений существует несколько экземпляров
myurl.com?foo=abc // Несколько пользователей, вводящих этот URL, все попадут в один и тот же экземпляр
myurl.com // Мне все равно, к какому из них это относится
Комментарии:
1. Просто чтобы убедиться, что я правильно понимаю ваши вопросы, вы хотите выполнить балансировку нагрузки на основе параметров запроса в URL?
2. В принципе, да. Немного больше контекста — моя программа имеет дело с обработкой в памяти, которая, как я понимаю, теперь завершается неудачей при наличии нескольких сбоев. Я мог бы переписать код, я бы предпочел посмотреть, возможен ли такой вариант.
3. Понял, ваш сайт — это API или веб-страница?
4. Каков вариант использования для этого? Учитывая, что экземпляры в AppEngine эфемерны, я не думаю, что это хороший подход.
5. Согласен с GAEfan, однако, если ваше приложение не будет получать много трафика, вы можете использовать несколько сервисов в своем приложении и использовать ручное масштабирование для одного экземпляра, и это теоретически сохранит запросы к одному и тому же сервису в одном экземпляре. Не рекомендуется, поскольку ручное масштабирование может вызвать другие проблемы при масштабировании вашего трафика
Ответ №1:
Я не думаю, что вы можете контролировать, какой instance
обрабатывает шаблон URL.
Если вы хотите отправить определенные URL-адреса определенному service
, вам нужен a dispatch.yaml
, который делает именно это. Вы можете использовать регулярное выражение, чтобы настроить его по своему усмотрению. При определенной стратегии вы могли бы сопоставлять URL-адреса с (группами) экземпляров, хотя они были бы в отдельных сервисах. Если ваш сайт не получает большого трафика, вы могли бы, по сути, иметь по одному экземпляру на сервис и выполнять то, что вы хотите.
dispatch:
# don't forget: gcloud app deploy dispatch.yaml after changes !!!
- url: "*/some/high/memory/urls/*"
service: my_high_memory_service
- url: "*/some/fast/cpu/url"
service: my_fast_cpu_service
- url: "*/.*"
service: default
Подробнее на:https://cloud.google.com/appengine/docs/standard/python/reference/dispatch-yaml
Комментарии:
1. Похоже, это может быть ближе всего к тому, что я хочу, спасибо