Перенаправление запросов к экземпляру в облаке Google

#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. Похоже, это может быть ближе всего к тому, что я хочу, спасибо