【发布时间】:2019-04-09 03:18:03
【问题描述】:
我们在 Golang 和 Python 上有几个微服务,在 Golang 上我们正在编写财务操作,在 Python 在线商店逻辑上,我们想为我们的前端创建一个 API,但我们不知道该怎么做。 我已经阅读过 API 网关,如果 Golang 将创建自己的 GraphQL 服务器,Python 将创建另一个服务器,它们都将与第三个 graphql 服务器进行通信,该服务器将为前端生成 API。
【问题讨论】:
我们在 Golang 和 Python 上有几个微服务,在 Golang 上我们正在编写财务操作,在 Python 在线商店逻辑上,我们想为我们的前端创建一个 API,但我们不知道该怎么做。 我已经阅读过 API 网关,如果 Golang 将创建自己的 GraphQL 服务器,Python 将创建另一个服务器,它们都将与第三个 graphql 服务器进行通信,该服务器将为前端生成 API。
【问题讨论】:
我不太了解你们的服务细节,但我在不同项目中成功使用的伟大模式就像你提到的GraphQL gateway。
您将创建一项服务,我更喜欢在 Node.js 中创建它,所有来自前端的请求都将通过该服务。然后从GraphQL gateway 请求您的微服务。这基本上是您进入后端系统的唯一入口点。请求将经过身份验证,您可以统一对数据的访问并执行一些性能优化,例如实现数据加载器的缓存和批处理以缓解 N+1 问题。此外,您将降低拥有多个 API 的复杂性并利用 GraphQL 的所有优势。
在我的上一个项目中,我们有 7 个不同的前端,每个都使用相同的 GraphQL gateway,我对我们的方法非常满意。肯定有一些缺点,因为您需要使所有前端和GraphQL gateway 保持同步,因此您需要更加了解您的重大更改,但可以通过例如deprecated 指令和执行蓝/绿部署来解决与 Kubernetes 集群。
另一种选择是在 GraphQL 中为前端创建所谓的后端。现在我没有足够的信息哪种解决方案最适合你。您需要根据您的前端需求和业务领域做出决定,但通常我更喜欢 GraphQL 网关,因为 GraphQL 具有很大的灵活性,并且 GraphQL 功能涵盖了将您的 API 定制到前端的需求。希望对大卫有所帮助
【讨论】: