Как сохранить данные из Redis в MySQL в приложении Node.js. - PullRequest
0 голосов
/ 03 июня 2019

Работа над новым прототипом для приложения, которое должно быть способно обрабатывать 20 000+ входящих запросов в минуту в течение короткого периода времени (например, 20-30 минут) и возвращать результаты в реальном времени пользователю.

Пример: я показываю вопрос «да / нет», и вы должны иметь возможность опубликовать голосование «ДА» / «НЕТ» в нашем API, и наш API должен обработать его и предоставить информацию в реальном времени о том, сколько проголосовало «за» и сколько проголосовал №.

Все эти запросы необходимо сохранить в нашей базе данных MySQL.

Я не думаю, что разумно было бы напрямую сохранять эти 20К-запросы в реальном времени в базу данных, поскольку это создаст огромную нагрузку на базу данных, особенно учитывая, что нам нужны данные в реальном времени.

Так что моя идея заключалась в том, чтобы поместить Redis в качестве среднего слоя. API пишет в Redis, Redis возвращает счет в реальном времени.

Но мне все еще нужно сохранять данные. Можно ли сказать Redis записывать все строки в MySQL, когда есть свободные ресурсы?

Или вы бы предложили совершенно другой подход?

Я также изучил RabbitMQ, чтобы ставить в очередь все вставки и обрабатывать их, когда это возможно, но, насколько я знаю, это не может возвращать данные в реальном времени

У меня пока нет кода, так как я сначала рассматриваю инструменты, необходимые для реализации этого.

1 Ответ

0 голосов
/ 03 июня 2019

Вы можете использовать оба способа

1.Добавьте Redis в качестве среднего слоя с возможностью сохранения.

Redis предоставляет различный диапазон параметров персистентности. Если вы не используете опцию персистентности вообще. При перезапуске сервера Redis все данные будут потеряны.

Вы можете настроить Redis для сохранения данных при различных событиях, таких как

  • автоматически время от времени
  • при ручном вызове команды BGSAVE

  • когда Redis выключается

Узнайте больше о Redis Persistence здесь .

  1. Вы также можете использовать Redis с RabbitMQ.

Redis для отображения результатов в реальном времени для пользователя.

RabbitMQ для добавления данных в очередь и сохранения данных в любой базе данных.

RabbitMQ выдерживает нагрузку в часы пик. Таким образом, все вызовы сохранения будут в очереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...