我想了解GraphQL最适合在微服务体系结构中使用的位置。GraphQL和微服务体系结构
关于只有1个GraphQL模式作为API网关代理到目标微服务的请求并强制响应,存在一些争议。微服务仍然会使用REST/Thrift协议来进行通信思想。
另一种方法是每个微服务都有多个GraphQL模式。拥有一个较小的API网关服务器,可将请求路由到目标微服务,并提供请求的所有信息+ GraphQL查询。
1日法
有1 GraphQL模式为API网关会在那里每次你改变你的微服务合同的输入/输出一个缺点,我们必须相应地改变GraphQL架构上API网关侧。
第二个方法
如果使用每个微服务多GraphQL架构,有意义的方式,因为GraphQL强制执行模式定义,而消费者将需要尊重从微服务给定的输入/输出。
问题
你在哪里找到GraphQL正确的适合设计微服务架构?
您将如何设计一个可能的GraphQL实现的API网关?
+1我应该把我的后一个声明,我没有与GraphQL经验,而不是响应基于在回答这个问题的研究过程中阅读一小段简短的内容。我认为这个答案更好地解决了OP的查询。 –
@helfer:这真的很有意义:)谢谢。我在这个美妙的答案之上有几个问题。 - 您是说GraphQL必须用作API网关? - 假设我有一个** Order ** Microservice,它暴露了REST或GraphQL端点。一旦我完成它,我不得不更新主要GraphQL模式以反映与微服务将暴露的完全相同的数据?它是不是听起来不重复,或者离开应该独立部署的微服务文化?对微服务的任何更改都必须反映/复制到主GraphQL架构? – Fabrizio
@Fabrizio GraphQL的好处在于即使后端REST API发生变化,只要有一种方法可以获取REST服务先前公开的数据,GraphQL模式仍然可以保持不变。如果它暴露更多的数据,那么处理这个问题的规范方法就是将新的字段/类型添加到现有的模式中。 Facebook创建GraphQL的人告诉我,他们在四年内从未对他们的模式做过任何改变。他们所做的所有更改都是附加的,这意味着新客户可以使用新功能,而老客户可以继续工作。 – helfer