Нужно ли определять индексы хранилища данных в каждом микросервисе (модуле), который его использует, или только в корневом приложении?

Я работаю над приложением с несколькими микросервисами (модулями). Я определил индексы хранилища данных в корневом приложении (которое содержит только те файлы 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 быть родственной по отношению к не-стандартной по структуре папок?

Другие вопросы по тегам