2015-05-07 6 views
0

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

Кроме того, мы используем красное смещение для запроса данных. Благодаря

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

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

+0

Задержка сети длинна миллисекунды. Я не думаю, что это возможно. – duffymo

+0

Мы можем жить с задержкой в ​​несколько секунд (для другой услуги) – AJ222

ответ

3

Amazon имеет идеальный продукт для вашего прецедента. Kinesis

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

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

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

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

+0

Звучит неплохо, но дорого. – duffymo

+0

Где вы видите, что это дорого? Как вы подсчитали? – AJ222

+0

Цена здесь. http://aws.amazon.com/kinesis/pricing/ Для 1 осколка, который я описал в 1000 PUT в секунду, цена ~ $ 86.15/мес. Теперь, если вы поддерживаете 1000 записей в секунду за каждую секунду всего месяца, а ваш размер составляет 1 кбит.Стоимость базового щита составляет 11,16 доллара США в месяц, тогда вы платите за PUT сверху. «Дорогая» - все относительная ». Особенно, если вы делаете 1000 запросов больше запросов в секунду. –

1

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

1

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

Смежные вопросы