Какая форма архитектуры лучше всего подходит для сценария ниже - PullRequest
0 голосов
/ 18 октября 2019

У меня есть служба, которая выполняет 4 запроса R(R1, R2, R3, R4) для выполнения задачи. Предположим, что первый R1 для получения проверки доступности ресурса, второй R2 для бронирования таблицы, 3-й R3 для пакета празднования дня рождения и окончательный запрос на генерацию PNR R4. Все эти запросы R(R1, R2, R3, R4) поступают от одной службы (одного физического сервера). Представьте, что R (R1, R2, R3, R4) является синхронным запросом, где после завершения R1 инициируются запросы R2, а после завершения R2, Инициируются запросы R3 и т. Д.

Я интегрирую стороннего провайдера с правилом белого списка IP-адресов.

Правила:

  1. Если вы сделали все 4 запроса от одного и того же Ip, то сторонний провайдер удовлетворил запрос и позволил завершить поток.
  2. Если запросы поступают с другого Ip, он просто отклоняет запросы.

Моя текущая реализация и архитектура: -

Яиспользование обратного прокси-сервера squid для балансировки нагрузки и внесения в белый список нашего запроса. Текущая архитектура поясняется на приведенной ниже схеме. request data flow

Проблема: Я столкнулся с проблемой, что у NLB нет контекста относительно запроса, то есть нет способа узнать, что предыдущий подзапросприходил и шел к s1 или s2 или s3 прокси squid. Документация Aws NLB DOC , в которой предлагается использовать конфигурацию на основе IP, но это невозможно, когда я пытался это сделать.

Текущая конфигурация NLB - это TCP на порт 80 и пересылка в целевую группу.

Мой вопрос к сообществу

  1. Естьвозможно ли это с помощью NLB для достижения вышеуказанного?
  2. Если нет, то каковы все альтернативы?
  3. Это очень важный ресурс, мы хотели получить высокодоступное и экономически эффективное решение.

PS Мне известно, что alb (балансировщик 7-го уровня) обладает липкостью, и его можно включить, чтобы подзапрос мог перенаправить на соответствующий сервер squid.

...