Запись 3000 событий в секунду из программы c
Каковы мои лучшие варианты для записи 3k событий в секунду из файла AC? Следующие варианты, которые приходят мне в голову. Не в состоянии решить, какое решение будет надежным с меньшим количеством точек отказа, более высокой надежностью и меньшей задержкой.
Используйте сервер обмена сообщениями для передачи событий по мере их возникновения
Используйте системный журнал для регистрации
Используйте Unix pipe
Использование агентов регистрации, таких как свободно, которые будут отправлять события на сервер анализа
Напишите файл журнала локально, а затем периодически вращайте его, вращайте на сервере анализа, используя что-то вроде rsync.
1 ответ
Попробуйте системный журнал. Нет причин делать это слишком сложным. С помощью syslog-ng вы можете выполнять локальное ведение журнала через UDP, а затем настроить локальный syslogd для пересылки всего через TCP на центральный сервер syslog. Возможно, вам придется работать без fsync на центральном сервере системных журналов, чтобы справиться с этой нагрузкой (но сначала протестируйте), но это можно уменьшить, перенаправив все на две отдельные машины. Это дает вам асинхронную производительность локально и достаточную надежность, чтобы вы почти никогда не теряли события.
Другой вариант, который я сделал, - это регистрировать события в Redis, Riak или каком-либо другом хранилище данных nosql (я обычно не рекомендую их для чего-то сложного, но ведение журнала событий находится на их пути). Настройте зеркалирование для избыточности, и они должны быть в состоянии поддерживать скорость более 3 тыс. Событий в секунду.