API Gateway обычно используется в тех случаях, когда вы заботитесь о результате вызова API и хотите что-то сделать с ответом.В этом случае вам нужно дождаться завершения функции Lambda и вернуть результат, чтобы он мог быть передан обратно клиенту.Вам не нужна очередь, потому что Lambda будет масштабироваться и добавлять процессы для каждого запроса.Ограничением может быть 10000 запросов в секунду к API-шлюзу или пропускная способность любых нисходящих систем, таких как база данных.
Kafka предназначен для потоковой передачи данных в режиме реального времени;вещи, где вы хотите обрабатывать данные немедленно, такие как расшифровка видео.Это отличается от pub / sub.Потребители запрашивают данные у Кафки.Если процесс требует объединения данных из нескольких входных источников на постоянной основе, то Kafka подходит для этого.Другими словами, если размер входных данных не имеет верхней границы, потоковая обработка является хорошим выбором.Аналогичный сервис, доступный в AWS, - Amazon Kinesis.
Pub / sub (например, Amazon SNS, который может легко запускать лямбда-функции) лучше подходит для случаев, когда размер ввода или размерполезный пакет, может быть легко определен, но где данные должны обрабатываться практически в режиме реального времени.В пабе / подсистеме события публикуются для подписчиков, а не подписчиков, запрашивающих их.
Другой вариант - это очередь, подобная Amazon SQS, которая может быть полезна, если в системе есть узкое место, напримеремкость записи в базу данных, или ограничение параллелизма LambdaВ этой архитектуре потребители запрашивают элементы из очереди, когда они готовы их обработать, поэтому это лучше для случаев использования, когда результаты не требуются немедленно.