2009-06-18 4 views
2

У меня есть веб-приложение asp.net, размещенное на веб-сервере (IIS 7). Оно использует Lucene для поиска. Запросы поиска Lucene обслуживаются службами .Net WCF, расположенными на двух серверах приложений (IIS 7). 2 сервера приложений сбалансированы по нагрузке, используя «netscaler».Синхронизация индексов Lucene на двух серверах приложений

Оба этих сервера содержат службу Windows .net, которая ежедневно обновляет индексы поиска на соответствующих серверах в ночное время.

Мне нужно синхронизировать поисковые индексы на этих двух серверах, чтобы в любой момент времени на обоих серверах были индексированы индексы. Я думал, что может быть лучшей стратегией архитектуры/дизайна, чтобы сделать это, учитывая тот факт, что любой из 2 серверов приложений может обслуживать поисковый запрос в зависимости от его доступности.

Любые входы, пожалуйста?

Спасибо за чтение!

+1

Duplicate: http://stackoverflow.com/questions/944166 – itsadok

+0

Это похоже, но не дубликат: этот вопрос говорит об инкрементальных обновлениях. Здесь обновления ночные. Это требует различных стратегий. –

+0

ОП получил ответ от дублирующего вопроса. –

ответ

1

В основном вам нужны две идентичные копии одного и того же индекса Lucene - по одному для каждого сервера IIS. Я считаю, что самый простой способ - создать обновленный индекс на одной машине, оптимизировать его и затем скопировать на другую машину. В Linux я бы использовал rsync, но я не знаю эквивалентов Windows. См. Jeff Atwood's ideas for Windows rsync alternatives. В качестве альтернативы вы можете опубликовать те же команды обновления индекса для обоих индексов Lucene и убедиться, что они были обработаны должным образом. Это сложнее технически и полезно только при более частых обновлениях. Пожалуйста, см. Scaling Lucene and Solr для более широкого обсуждения распределенных индексов Lucene.

Смежные вопросы