Подтвердить что ты не робот

Запуск Solr в память?

Однажды ночью я пил пинту в местном баре и заговорил с парнем рядом со мной. Как оказалось, он не только был разработчиком, но и использовал Солра. Когда мы добрались до разговоров о том, как удивительный Солр, он упомянул то, что я никогда не мог понять. Он сказал: "Способ сделать Solr действительно выполненным - это запустить его в память".

Увы, я не получил его имени и, несмотря на поиск в Google, я никогда не нашел ничего конкретного. Как вы думаете, что он имел в виду под этим?

4b9b3361

Ответ 1

Запуск SOLR в памяти действительно бессмыслен. SOLR предназначен для веб-сервера, где клиенты могут запрашивать с помощью RESTless api. Вы можете настроить репликацию, чтобы компенсировать высокий трафик. SOLR обертывает Луцен. Если вы хотите запустить SOLR в памяти, вы в основном используете Lucene в памяти. Поэтому я бы предложил просто запустить экземпляр Lucene и иметь диск в памяти. Мне любопытно узнать, что думают другие, но запуск SOLR в памяти действительно не предназначен для использования. С Lucene существует Directory, реализованная в памяти под названием RAMDirectory.

В то же время был аналогичный вопрос о запуске встроенного режима SOLR, но через некоторое время Apache устарел от встроенного сервера, потому что на самом деле это была Lucene.

Ответ 2

Для тех, кто хочет сделать это с целью ускорения тестов:

Если у вас есть отдельный ядро ​​для вашего тестового индекса, вы можете изменить атрибут directoryFactory в solrconfig.xml на:

<directoryFactory name="DirectoryFactory" class="solr.RAMDirectoryFactory"/>

Излишне говорить, что не рекомендуется хранить производственные данные только в памяти.

Ответ 3

Возможно, он имел в виду наличие достаточного дискового кэша для хранения всего индекса. Это очень рекомендуемый способ обеспечения быстрых небольших случайных IO-считываний (и объемных записей при индексировании), что необходимо для хорошей производительности Solr: https://wiki.apache.org/solr/SolrPerformanceProblems#OS_Disk_Cache

Для меньших индексов, где дополнительная стоимость ОЗУ относительно низкая, это прекрасный совет. По мере того, как индексы растут, вероятно, лучше инвестировать больше времени на тестирование и экспериментировать с другими аппаратными настройками, поскольку SSD являются очевидной возможностью.

Ответ 4

Хотя скорость является хорошей причиной для запуска RAMDirectory, вам придется в конечном итоге сохранить каталог на диск. Вероятно, вы могли бы написать простую оболочку, чем обернуть RAMDirectory и FSDirectory и зеркально отразить вызовы для обоих. Все запросы будут выходить из RAMDirectory, но изменения будут применены к обоим.

Но еще одна очень хорошая причина сделать это будет для шифрования в покое. Шифрование данных отстой, если вы действительно хотите использовать его, потому что вам нужно оплатить накладные расходы на дешифрование, чтобы запросить его. Нецелесообразно использовать зашифрованные данные в покое, но если вы расшифровали содержимое в память и закрепили его, это было бы очень быстро.