微服务中的分布式GraphQL

时间:2020-04-05 10:50:15

标签: spring-boot graphql microservices

我正在尝试用Java编写微服务。我已经使用graphql-spring-boot-starter实现了GraphQL端点。

现在我有一个问题,如何使其高效。

数据模型就像一棵树,我需要一次从多个服务中查询数据。问题在于如何过滤集合的成员,例如数据库中的CONTAINS,但是数据不在单独的表中,而是在单独的微服务中。也许问题在于服务之间的域分配不正确?

让我们举个例子:我有3种微服务:用户,库,书籍。每个图书馆都有用户和书籍的集合(只是标识符列表,如外键)。每本书都有名称和类型。每个图书馆都有用户借用的图书清单(也有标识符)。

问题1-图书馆是否应该托管书籍和用户列表(仅仅是标识符,如外键)?这是正确的方法吗?

问题2-我想查找其中指定用户(按姓氏)借用了特定类型书籍的图书馆。从顶部开始,我需要首先找到包含用户的库。不容易,因为我们在不同的服务中使用了不同的名称。我们需要首先查询用户,收集其标识符,现在我们可以查询库。但这还不是全部。现在,我们需要为每个用户查找书籍并检查流派-使用不同的服务。这还不是全部。我想以一种不错的方式呈现所有内容,因此应该对整个输出进行排序和分页。这迫使我从所有服务中收集所有数据,然后对其进行分页和排序,这当然不会有效。

请不要专注于这个例子,我在寻找如何解决一般方法,而不是这个例子。我尝试使用Datafetchers,但是这很麻烦,并且没有很好的调用Graphql-to-GraphQL的示例。大多数示例涵盖了调用REST端点等。

0 个答案:

没有答案