Самый эффективный способ передачи журналов веб-маяков в Apache Flume?
Настройка
Я установил простой сервер Nginx, который регистрирует (в формате JSON), который затем передается в корзину S3 с Apache Flume. Все, что делает сервер Nginx, это отвечает пикселем отслеживания веб-маяка и записывает в файл журнала. Пока все круто.
Эта проблема
Однако было бы неплохо выполнить еще пару шагов обработки на этом уровне конвейера:
- Преобразуйте параметры строки запроса в фактический JSON в записях событий.
- Установите UUID cookie для отслеживания
- Увеличьте некоторые счетчики в локальной базе данных (в конечном итоге все данные будут обработаны с помощью Map/Reduce)
Похоже, мне понадобится специальный приемник Flume для преобразования параметров строки запроса и серверная часть в nginx, чтобы установить cookie и обновить базу данных. Кажется очень неэффективным иметь здесь несколько систем, особенно при оптимизации пропускной способности для сотен запросов в секунду.
Возможные решения
Моей первой мыслью было использовать NodeJS, который мог бы справиться со всеми этими задачами (и даже заменить nginx?), Но мне не нравится, что он однопоточный (возможно, порождает детей?).
Тогда я подумал, что, возможно, обработка должна происходить на уровне агента Flume, и Java-программа может справиться со всем (какое-либо преимущество в производительности здесь из-за написания Flume на Java?)
Вопросы
- Правильно ли я поступаю по этому поводу или переосмысливаю это?
- Как бы вы порекомендовали объединить все в один или два процесса?