2012-04-11 3 views
3

У меня есть этот вопрос, я просто бросаю его туда. Я реализую небольшую функцию ведения журнала для моего сервера REST API, основанного на Spring, для регистрации всех запросов. Я ожидаю, что 1000 пользователей будут использовать этот API, поэтому с блокирующим регистратором ввода-вывода он будет замедлять все. У меня есть два подхода к решению проблемы: 1. Имейте асинхронный регистратор, используя arrylist в памяти. затем используйте планировщик весны, чтобы периодически обновлять его до файла журнала. 2. Используйте JMS и отправьте журналы в очередь. Пусть очередь обрабатывает журнал асинхронно.Асинхронный регистратор весной

Кто-нибудь сделал это раньше весной. Хотя я для варианта 2, есть ли лучшие способы сделать это? Нужна консультация экспертов. Всем спасибо !

Дополнительная информация - Я думаю, что синхронное ведение журнала будет шеей бутылки, потому что этот REST API потребляется приложением RoR переднего конца. Таким образом, один сеанс пользователя определенно приведет к появлению 100-секундных вызовов API очень часто. Я регистрирую фактический запрос вместе с JSON, отправленным в POST.

+0

Почему бы не использовать готовое решение? Вы хотите, чтобы плотник построил свой собственный молоток, подделал себе гвоздь и сшил свой собственный инструментальный инструмент, или вы хотите, чтобы он сосредоточился на строительстве дома с помощью инструментов, построенных хорошо зарекомендовавшими себя компаниями, использующими годы существующих исследований и разработок? – jmort253

+0

Я сомневаюсь, что синхронное ведение журнала окажется узким местом. Обычно, если это замедляет работу, вы должны просто уменьшить количество протоколирования. Вот почему есть уровни DEBUG, INFO и т. Д. – artbristol

+0

Спасибо, ребята. просто обновил quesiton по поводу того, почему я считаю, что синхронизация журнала будет узким местом. – gotz

ответ

3

Неужели кто-то сделал это раньше весной.

Не так странно, да - Asynchronous Logging Using Spring

В статье говорится, что, если вы не хотите какие-либо события журнала будут потеряны, JMS будет путь - в противном случае прилипания к Async имеет смысл для высоких тома.

+0

Спасибо, Райан. Это выглядит интересно. будет работать. – gotz

0

Если вы действительно хотите создать свой собственный регистратор, я предлагаю вам взглянуть на akka, это намного проще, чем создать JMS.

Вы можете использовать его локально (использование всех ядер процессора на вашем локальном компьютере) или даже с удаленными агентами.

+0

Да. и похоже, что у него есть весенняя поддержка. Благодарю. – gotz

+0

@nice_ekito У вас есть несколько учебных ресурсов по этой теме? – svlada

+0

Нет, ничего особенного для регистрации, просто официальный документ: http://doc.akka.io/docs/akka/2.1.0/ –

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