Нужно ли определять индексы хранилища данных в каждом микросервисе (модуле), который его использует, или только в корневом приложении?
Я работаю над приложением с несколькими микросервисами (модулями). Я определил индексы хранилища данных в корневом приложении (которое содержит только те файлы cfg, как datastore-indexes.xml, queue.xml и т. Д.). Я вижу эти индексы, "обслуживающие" в консоли. [править], так что моя вина, что я сломал запрос раньше, поэтому вопрос мало меняется. Какова лучшая стратегия с упомянутыми файлами cfg в мультимодульном приложении appengine?
1 ответ
Конфигурация индекса хранилища данных - это одна из нескольких конфигураций уровня приложения, которая используется всеми службами / модулями приложения и может быть развернута независимо от самих служб. На самом деле рекомендуется сначала развернуть конфигурацию индексов, пусть GAE получит их в Serving
состояние (которое может занять некоторое время, в зависимости от количества объектов, которые должны быть проиндексированы) и только после этого развертывать код приложения, нуждающийся в этих индексах.
Для развертывания в целях GAE на самом деле не имеет значения, находится ли конфигурация индекса в конкретной службе или в корне приложения, если она развернута из этого расположения.
Однако локальный сервер разработки может иметь проблемы с запуском определенной службы без конфигурации индекса в каталоге этого сервера - я подозреваю, что это вызывает у вас горе. Чтобы решить эту проблему в духе СУХОЙ, я предпочитаю иметь мастер-копию файла конфигурации в корневом каталоге приложения и символические ссылки, указывающие на него, в каждый из каталогов служб.
Все становится немного сложнее, потому что Java GAE использует datastore-indexes.xml
файл конфигурации, в то время как другие языки используют index.yaml
файл, в разных форматах. Java также поддерживает index.yaml
файл, но я не уверен, что это одинаково хорошо поддерживается на сервере разработки, IDE и / или других локальных инструментах разработки.
Если все ваши модули основаны на Java, вы должны быть в порядке. Но если у вас есть сочетание языков, вам, вероятно, придется index.yaml
эквивалент.
Если это не сработает, и вы вынуждены использовать оба файла, каждый из которых содержит ссылки на соответствующие каталоги языковых служб, вам необходимо убедиться, что конфиги индекса в этих 2 файлах согласованы, в противном случае вы рискуете сломать некоторые из служб,
Потенциально представляет интерес: может ли служба / модуль по умолчанию в приложении Google App Engine быть родственной по отношению к не-стандартной по структуре папок?