我是否需要在使用它的每个微服务(模块)中或仅在根应用程序中定义数据存储索引?

Do I need to define datastore-indexes in every microservice(module) which uses it or just in root application?

我正在开发一个包含多个微服务(模块)的应用程序。我在根应用程序中定义了数据存储索引(它只包含那些 cfg 文件,如 datastore-indexes.xml 和 queue.xml 等)。我在控制台中看到那些索引 "serving"。 [编辑]所以我的错是我之前破坏了查询所以问题变化不大。在多模块应用引擎应用程序中提到的 cfg 文件的最佳策略是什么?

数据存储区索引配置是几个 app-level 配置之一,由应用程序中的所有 services/modules 共享,并且可以独立于服务本身。事实上,建议首先部署索引配置,让 GAE 获取处于 Serving 状态的那些(这可能需要一段时间,具体取决于需要索引的实体数量),然后才部署应用程序代码需要那些索引。

对于基于 GAE 的部署,索引配置是位于特定服务中还是位于应用程序的根目录中并不重要,只要它是从该位置部署的即可。

然而,本地开发服务器可能会遇到问题 运行 特定服务在该服务器的目录中没有索引配置 - 我怀疑这就是导致您悲伤的原因。为了以 DRY 精神解决这个问题,我的首选是在应用程序根目录中拥有配置文件的主副本,并将指向它的符号链接指向每个服务目录。

事情变得有点复杂,因为 Java GAE 使用 datastore-indexes.xml 配置文件,而其他语言使用 index.yaml 文件,格式不同。 Java 也支持 index.yaml 文件,但我不确定开发服务器、IDE and/or 其他本地开发工具是否同样支持该文件。

如果你所有的模块都是 Java-based 你应该没问题。但是,如果您混合使用多种语言,则可能必须尝试共享 index.yaml 等效语言。

如果这不起作用并且您被迫使用这两个文件,每个文件都符号链接到各自的语言服务目录中,您必须确保这两个文件中的索引配置一致,否则您有风险破坏了一些服务。

可能感兴趣: