То, как мы синхронизируем наши серверы с балансировкой нагрузки, каждый из которых имеет собственную копию Lucene, - это выполнение задачи на каком-либо другом сервере, который выполняется каждые 5 минут и дает команду каждому серверу с балансировкой нагрузки обновить свой индекс до определенная отметка времени.
Например, задача отправляет отметку времени «12/1/2013 12: 35: 02.423» на все серверы с балансировкой нагрузки (задача отправляет отметку времени через строку запроса на веб-страницу на каждом сайте с балансировкой нагрузки) затем каждый сервер использует эту временную метку для запроса к базе данных всех обновлений, которые произошли с момента последнего обновления до этой временной метки, и обновляет свой локальный индекс Lucene.
Каждый сервер также хранит метку времени в БД, поэтому он знает, когда каждый сервер последний раз обновлялся. Таким образом, если сервер переходит в автономный режим, когда он возвращается в оперативный режим, в следующий раз, когда он получит команду отметки времени, он получит все пропущенные обновления, пока он был отключен.