Параметры кластеризации Lucene.NET?

Меня интересует запуск Lucene.NET для приложения, работающего в кластерах Windows. Сама проблема поиска достаточно мала, но проблема без сохранения состояния / кластера все еще требует решения.

Я понимаю, что SOLR обрабатывает мой сценарий (и многое другое), но требование контейнера сервлетов (и Java) создает для меня некоторые проблемы. Тем не менее, в зависимости от сложности подхода на основе Lucene.NET, это может быть вариант в виде пузырьков.

Теперь у меня вопрос, какие у меня есть варианты решения проблемы работы на нескольких хостах:

  • Сохраняться в общем хранилище, общем для всех узлов? Будет ли Lucene.NET прозрачно обрабатывать параллелизм? Будут ли серверы использовать оперативную память для кэширования, и если да, то будет ли Lucene.NET прозрачно обрабатывать ее недействительность на основе обновленных файлов?

  • Репликация? У каждого сервера есть своя копия всего, что ему нужно. При любом обновлении все серверы получают новую реплику (или разницу, если это достаточно просто). Существующие инструменты для этого или решать мне?

  • Разделение / сегментирование рабочей нагрузки? Каждый сервер обрабатывает только свои собственные данные как для чтения, так и для обновления. Инструменты для обработки этого, объединения частичных результатов и т. Д.?

  • Другие варианты, которые я мог упустить в моем первоначальном исследовании?

При экспериментировании с локальной версией мой каталог Lucene был порядка пары сотен мегабайт. В долгосрочной перспективе 1-5 гб увижу наверное.Если частота обновлений вызывает затруднения, я могу довольно гибко управлять этим. Ожидается, что одновременные нагрузки чтения / поиска будут очень умеренными.

7
задан Amro 2 July 2012 в 08:53
поделиться