Рассмотрим управляемое событиями веб-приложение на основе микросервиса, которое должно иметь некоторые асинхронные веб-API.AFAIK предлагаемый способ достижения асинхронного http-запроса / ответа - отвечать на каждый вызов API с помощью, скажем, 202 Accepted
кода состояния и заголовка местоположения, чтобы позволить вызывающей стороне получать результаты позже.
Таким образом, мы должныгенерируйте уникальный идентификатор (например, uuid
или guid
) для каждого запроса и сохраняйте идентификатор и все связанные события в будущем в постоянном хранилище, чтобы вызывающая сторона API могла отслеживать ход выполнения своего запроса.
Мой вопрос - как реализовать этот уровень API, учитывая, что у нас может быть десятки или сотни тысяч запросов и ответов в секунду.Какова наиболее эффективная архитектура и инструменты для создания такого API с такой нагрузкой?
Одним из способов может быть сохранение всех запросов и всех связанных событий как в базе данных, так и в кеше, таком как redis (только в течение определенного ограниченного временикак 30 минут).Есть ли лучший шаблон / архитектура / инструменты?Как крупные компании и сайты решили эту проблему?Какая база данных может быть лучше для этого сценария?(MongoDB, MySQL, ...)
Я очень ценю любой полезный ответ, особенно если у вас есть некоторый опыт производства.