我在项目中创建了 3 个微服务,并实现了 GraphQL Netflix DGS 联邦框架。 https://netflix.github.io/dgs/ 作为一家公司,我们拥有来自不同团队的不同微服务的 30 多个模式。但是,如果模式类型名称在不同的微服务中相互重复,我们就会在 Apollo 网关中收到运行时错误。 我想知道如何验证架构?是否有任何引擎/库/概念来验证多个微服务等上的 Federated GraphQL 模式?我正在检查架构注册表,但看起来它是用于存储架构和版本控制等,而不完全是为了验证架构。 示例架构和错误: 服务 1 中的架构:
type Query{
Status:status
}
type status{
id:String
Information:Info
}
type Info{
location:String
birthDate:String
gender:String
}
服务 2 中的架构:
type Query{
Books:Book
}
type Book{
name:String
Information:Info
}
type Info{
author:String
Rating:String
}
在上述两个架构中,两个微服务中的架构类型“Info”是相同的。通过 ApolloGateway 实现这两个服务后,它会抛出运行时错误: " 此数据图缺少有效的配置。无法组成有效的架构。发现以下组成错误:只能有一种名为“Info”的类型
如果Info是非共享类型,我建议你将其命名为BookInfo或AnotherInfo
如果您想共享信息类型。你应该使用指令
https://www.apollographql.com/docs/federation/enterprise-guide/federated-schema-design/
您应该尝试使用流动站。它会在合并到超图之前内省子图并检查其兼容性。另外,让您在超级架构更新期间实现零停机。
您也可以在组合模式验证运行期间使用 https://the-guild.dev/blog/open-source-apollo-federation 组合多个服务。仅供参考,模式注册表不仅涉及版本控制和存储模式,还执行组合和验证(一个示例)。