如何在具有共享数据库的 Graphql 微服务之间获取数据?
How to get data between Graphql Microservices with Shared Database?
在为我们的应用程序开发 Graphql API 的过程中,我们决定采用微服务架构,并决定我们应该有另一个 API 用于支付(这也是一个 Graphql API) 这样我们就可以开始解耦我们的应用程序了。我们使用 MongoDB 作为我们的 Mongoose 数据库。我们目前面临的问题是,为了处理付款,我们需要获取用户数据,但我们的付款 API 没有我们可以查询用户数据的 Mongoose 模型。我们想知道解决这个问题的最佳方法是什么。我们是否从第一个 API 复制我们需要查询的模型?我们在这里做错了什么?在微服务架构中共享数据库是完全错误的做法吗?
GraphQL 的整体理念是拥有单一端点。这降低了“front-end”开发人员(API 消费者)的复杂性。
因此您将拥有一个管理数据库访问的 GraphQL 端点服务。
通常“micro-services”有自己的数据库。
您仍然可以将业务逻辑放在微服务中,但您需要让这些服务联系您的 GraphQL 服务以访问数据库。
但是,如果您在系统前端使用 GraphQL API,那么您将创建一个端点。
要像您描述的那样拥有这些离散的微服务,您通常会为消费者制作它们 REST 或 gRPC。
在为我们的应用程序开发 Graphql API 的过程中,我们决定采用微服务架构,并决定我们应该有另一个 API 用于支付(这也是一个 Graphql API) 这样我们就可以开始解耦我们的应用程序了。我们使用 MongoDB 作为我们的 Mongoose 数据库。我们目前面临的问题是,为了处理付款,我们需要获取用户数据,但我们的付款 API 没有我们可以查询用户数据的 Mongoose 模型。我们想知道解决这个问题的最佳方法是什么。我们是否从第一个 API 复制我们需要查询的模型?我们在这里做错了什么?在微服务架构中共享数据库是完全错误的做法吗?
GraphQL 的整体理念是拥有单一端点。这降低了“front-end”开发人员(API 消费者)的复杂性。
因此您将拥有一个管理数据库访问的 GraphQL 端点服务。
通常“micro-services”有自己的数据库。
您仍然可以将业务逻辑放在微服务中,但您需要让这些服务联系您的 GraphQL 服务以访问数据库。
但是,如果您在系统前端使用 GraphQL API,那么您将创建一个端点。
要像您描述的那样拥有这些离散的微服务,您通常会为消费者制作它们 REST 或 gRPC。