Запись и передача событий между сервисами (AWS)

У нас есть служба php, которая должна очень быстро регистрировать данные (обрабатывает 1000 клиентов в секунду. Каждый из них записывает запись в журнал. Таким образом, 1000 записей в секунду), а затем отправлять эти зарегистрированные данные почти в реальном времени в другой сервис. Мы используем AWS. Как бы вы перенесли данные в другой сервис Amazon?
Должны ли мы использовать базу данных (синхронная запись блокирует запросы php, нет?) Должны ли мы использовать что-то вроде amazon SQS или любое другое решение amazon?

Также мы используем красное смещение для запроса данных.
Спасибо

Таким образом, как предложено здесь людьми, мы видим несколько возможных решений:
1. Node.js с амазонским кинезисом
2. Node.js с амазонками
3. Node.js пишет в s3 с лямбда-обработкой
4. На одном из наших серверов мы используем решение для записи на локальный mongodb и массового сброса каждые несколько минут на s3 (мы можем изменить его на секунды)

Каковы плюсы / минусы каждого решения?
Спасибо!

0

Решение

У Amazon есть идеальный продукт для вашего случая использования. кинез

Amazon Kinesis может непрерывно захватывать и хранить терабайты данных
в час из сотен тысяч источников, таких как веб-сайт
клики, финансовые транзакции, социальные сети, журналы ИТ и
события отслеживания местоположения.

Источник: http://aws.amazon.com/kinesis/

Ваши 1000 записей в секунду — это базовый блок, осколок. Возможно, вы могли бы начать с 1, а затем добавить 2, если ваш спрос увеличивается.

Осколок является базовой единицей пропускной способности потока Amazon Kinesis. Один
шард обеспечивает пропускную способность 1 МБ / с и 2 МБ / с.
выход. Один осколок может поддерживать до 1000 записей PUT в секунду. Вы
укажите количество шардов, необходимых в вашем потоке, на основе вашего
требования к пропускной способности. Вы платите за каждый осколок в час
темп.

3

Другие решения

Вы можете использовать несколько шагов, например, у вас может быть очень простая служба node.js, установленная локально на веб-сервере, которая принимает записи журнала (это даст вам минимальную задержку и максимальную пропускную способность). Затем служба node.js может передавать записи журнала в нужное вам место (db, SQS, SNS и т. Д.).

1

Вы можете использовать комбинацию s3 и лямбды.
Все записывают данные в s3, и для каждого объекта, добавленного в корзину s3, вы можете запустить лямбда-функцию для ее обработки. Обе услуги очень дешевые и легко масштабируемые.

1