Могут ли экземпляры MarkLogic REST API масштабироваться независимо от базовой базы данных?

В документации MarkLogic указано, что каждый экземпляр REST API должен иметь собственную базу данных модулей. Насколько я понимаю, база данных Modules используется для хранения XQueries. Предполагая, что я могу жить без этого и разрабатываю базу данных MarkLogic без использования XQuery для сохранения данных, можно ли:

  • Создание нескольких приложений, указывающих на одну и ту же базу данных контента.
  • Создайте несколько экземпляров REST API, указывающих на одну и ту же базу данных контента.
  • Масштабируйте каждый экземпляр API REST независимо от связанной базы данных контента.

Чего я хотел бы добиться, так это инфраструктуры, в которой база данных контента масштабируется независимо от экземпляров REST API, которые сохраняют данные и извлекают из них данные. Это делается для управления экземплярами в Группе AWS AutoScaling, чтобы экземпляры REST API могли вызываться и удаляться в зависимости от уровня трафика.


person Paul Mooney    schedule 07.01.2014    source источник


Ответы (2)


Павел:

Для REST API требуется база данных модулей для внутреннего использования, а также расширения.

Однако это не ограничивает возможности создания нескольких серверов REST для одной и той же базы данных контента. Каждый сервер REST имеет свою собственную базу данных модулей, но база данных модулей не обязательно должна быть больше — почти всегда будет достаточно одного леса.

Если вы хотите добавлять и удалять предварительно настроенные серверы REST, вы можете внимательно изучить упаковку, которая может распространять конфигурацию для сервера REST и базы данных его модулей как а также содержимое базы данных модулей в новый кластер.

Эрик Хеннум

person ehennum    schedule 07.01.2014
comment
Спасибо. Я рассмотрю концепцию упаковки. - person Paul Mooney; 09.01.2014

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

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

Единственная проблема будет с запуском пользовательских файлов из файловой системы. Их нужно будет устанавливать на каждый хост отдельно. Это также означает, что если вы загрузите пользовательские расширения в REST API на одном из хостов, оно станет доступным и на всех остальных. Они буквально делят ресурсы. Это упрощает масштабирование, но может оказаться не тем, что вам нужно с функциональной точки зрения. В этом случае предложение Эрика по использованию упаковки может оказаться полезным.

Только если вы говорите о дублировании REST API между кластерами (или группами внутри кластера), вам действительно нужно воссоздать REST API. В руководстве REST API есть раздел по этой теме:

http://docs.marklogic.com/guide/rest-dev/migration#chapter

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

http://docs.marklogic.com/guide/cluster/distributed#chapter

ХТХ!

person grtjn    schedule 07.01.2014
comment
Большое тебе спасибо. Я рассмотрю область кластеризации, как вы предложили. - person Paul Mooney; 09.01.2014
comment
Я бы начал здесь, прежде чем смотреть на упаковку. - person Eric Bloch; 10.01.2014