2016-01-26 3 views
0

У меня есть веб-сервер, который по каждому запросу создает журнал, который должен постоянно сохраняться в БД.Асинхронное ведение журнала действий на стороне сервера

Поскольку скорость запроса слишком высокая, я не могу выполнять операции БД по каждому запросу.

Я думал сделать следующее вещь:

  1. Любой запрос на веб-сервер производит журнал.
  2. Этот журнал размещен где-то в месте, где его можно быстро хранить (redis?)
  3. Другая услуга (задание cron?) Периодически сбрасывает данные с этого места, удаляет дубликаты (да, это дубликаты, которые не нужно хранить в БД) и делает один запрос MySQL для сохранения данных на постоянной основе.

Что было бы самым эффективным способом достижения этой цели?

ответ

0

Обычно вы должны использовать общую библиотеку регистрации (например, log4j), которая будет безопасно записывать ваши операторы журнала в файл. Однако вы должны отметить, что многословие журнала все еще может влиять на производительность приложения.

После того, как файл находится на диске, вы можете делать с ним все, что захотите, - это было бы абсолютно нормальным, чтобы глотать этот файл в Splunk для дальнейшей обработки и поиска/оповещения ad-hoc.

0

Если вы хотите получить более высокую производительность в этой операции, вы должны отправить свои журналы в какую-то очередь и со службой, читающей эту очередь, отправить все журналы в базу данных. Я нашел некоторую информацию о queue's в mysql. MySQL Insert Statement Queue привет.