Я пытаюсь изменить текущее приложение для масштабирования.
В настоящее время оно может обрабатывать не более нескольких миллионов событий в час, но ожидается, что объем увеличится в 10-100 раз при переходе наМодель SaaS, поэтому важно иметь возможность выполнять обработку в распределенном режиме.
Приложение представляет собой веб-приложение, которое в настоящий момент получает 1,2 миллиона событий / час.Он использует 2 сервера Tomcat, каждый прослушивает 500 потоков и workManager для постановки событий в очередь, а затем создает пару сотен рабочих потоков для последующей обработки событий.
Я пытаюсь отделитьзапись из обработки и перемещение обработки в распределенную среду.
Быстрая запись на диск событий.
Здесь решение может быть таким же простым, как запись в LinkedBlockingQueueи выгрузить пакеты из сотен, тысяч записей в файл или использовать хорошую библиотеку, которая уже делает это, или настроить базу данных для поддержки этого типа очередей разумным способом.
Не удается захватить последние события, еслиСистема становится недоступной, не имеет первостепенного значения, основное внимание уделяется производительности, когда сервер работает.
Переместить обработку событий в распределенную систему.
Мне нужно переместить данные в распределенную систему (например, HDFS).Какие еще есть варианты?
Обработка средней сложности (например, некоторая сложность заключается в самосоединении, которое генерирует частый набор элементов и дополнительно фильтрует этот набор, другие части включают агрегирование данных по нескольким иерархиям),В настоящее время я использую базу данных (MySql & DB2) и думаю о Hadoop.Любые другие варианты?
Сохранить результаты в системе только для быстрого чтения.
Я в настоящее время использую SOLR, какие-нибудь лучшие варианты?
Я знаю, что вопрос порождает несколько тем, любой вклад приветствуется.Дайте мне знать, если есть лучший тег, который я мог бы использовать.
Спасибо!
Себи