Меня интересует запуск Lucene.NET для приложения, работающего в кластерах Windows. Сама проблема поиска достаточно мала, но проблема без сохранения состояния / кластера все еще требует решения.
Я понимаю, что SOLR обрабатывает мой сценарий (и многое другое), но требование контейнера сервлетов (и Java) создает для меня некоторые проблемы. Тем не менее, в зависимости от сложности подхода на основе Lucene.NET, это может быть вариант в виде пузырьков.
Теперь у меня вопрос, какие у меня есть варианты решения проблемы работы на нескольких хостах:
Сохраняться в общем хранилище, общем для всех узлов? Будет ли Lucene.NET прозрачно обрабатывать параллелизм? Будут ли серверы использовать оперативную память для кэширования, и если да, то будет ли Lucene.NET прозрачно обрабатывать ее недействительность на основе обновленных файлов?
Репликация? У каждого сервера есть своя копия всего, что ему нужно. При любом обновлении все серверы получают новую реплику (или разницу, если это достаточно просто). Существующие инструменты для этого или решать мне?
Разделение / сегментирование рабочей нагрузки? Каждый сервер обрабатывает только свои собственные данные как для чтения, так и для обновления. Инструменты для обработки этого, объединения частичных результатов и т. Д.?
Другие варианты, которые я мог упустить в моем первоначальном исследовании?
При экспериментировании с локальной версией мой каталог Lucene был порядка пары сотен мегабайт. В долгосрочной перспективе 1-5 гб увижу наверное.Если частота обновлений вызывает затруднения, я могу довольно гибко управлять этим. Ожидается, что одновременные нагрузки чтения / поиска будут очень умеренными.