Короче говоря, меня интересует создание слабосвязанных микросервисов, подключенных через SNS (по большей части) для обработки запросов API в режиме реального времени.Использование API Gateway под управлением Lambda Функции, которые связывают между Microservices с использованием SNS
Предпосылка
- Нужно все это происходит в пределах одного тела ответа запроса POST
- Не можете попросить клиента потянуть за загрузку успеха и/или успешной маршрутизации.
AWS API шлюза Конечные точки
- POST/API/документы/uploadAndRouteDownWorkflow, выполняет documents.upload и получает комбинированный ответ от documents.upload и workflows.routeDocument функций с указанием полного успеха (загрузка и маршрут работал), частичный успех (но не загружать маршрут), или полный отказ (сбой при загрузке)
лямбда-функции (execut ред в порядке):
- documents.upload
- Вызванный из API шлюза конечной
- Закачивает документы к (Система управления документами DMS)
- Создает сообщение SNS к микропроцессор рабочего процесса для маршрутизации документа
- workflows.routeDocument
- Вызванный из подписанной SNS тему
- Маршруты документ/документы в SNS сообщении
- Возвращает успех/провал на первоначальный запрос АНИ
предостережений, почему документы. загрузка не вызывает workflows.routeDocument внутренне
- Microservices не слабосвязанная в малейшей
- Двойной процессорного времени для обеих функций лямбда, если принуждая синхронными (возможно)
Возможно ли это закономерность?
Спасибо!
Итак, если я правильно понял, мне нужно будет поддерживать некоторый тип синхронного потока, чтобы вернуть результат, указывающий на неудачу неудачи в исходном запросе POST? На этом, если я хочу, чтобы эти штуки были слабо связаны, мне нужно было бы посмотреть на другое решение вне AWS. Чтение в RPC-шаблоне в RabbitMQ через Direct Reply-to (https://www.rabbitmq.com/direct-reply-to.html) похоже на то, что мне интересно делать). Есть ли другой способ в AWS держать вещи слабо связанными, сохраняя синхронное поведение? –
Шаблон RabbitMQ RPC может быть реализован также с помощью SQS от Amazon. Однако вам нужно понять, что RabbitMQ все еще использует очереди и опросы для передачи ответа. В любом полностью разобранном решении у вас будет длинная функция 'documents.upload', опросив базу данных или очередь или что-то ожидающее ответа, который генерируется функцией' workflows.routeDocument'. –
@DavidGarza Возможно, вас заинтересует сегодняшняя анонс AWS: https://aws.amazon.com/about-aws/whats-new/2017/02/amazon-api-gateway-integration-with-aws-step-functions/ –