阿夫纳·利维(Avner Levy)
我已经阅读了很多关于使用GraphQL作为微服务前端的API网关的信息。但是我想知道GraphQL相对于Rest的所有优势是否也与微服务之间的通信不相关。任何输入,优点/缺点和成功使用示例都将受到赞赏。
Lior酒吧
考虑r的主要注意事项:
- GraphQL不是万能的,也不是比REST“更好”的。只是不同而已。
- 您绝对可以同时使用两者,因此两者都不是。
- 根据特定的用途,GraphQL(或REST)的规模可以大到大。
- GraphQL和REST并非完全替代:
- GraphQL是一种查询语言,规范和工具集合,旨在通过HTTP在单个端点上运行,以优化性能和灵活性。
- REST是一种架构样式/方法,用于利用其所存在协议的统一接口进行常规通信。
避免在微服务之间共同使用GraphQL的一些原因:
当客户端需要一个灵活的响应而无需更改服务器代码即可控制时,GraphQL尤其有用。
- 当您授予客户端服务对进入的数据的控制权时,它可能导致公开过多的数据,从而损害正在服务的服务上的封装。这是系统可维护性和变更能力的长期风险。
在微服务之间,延迟远没有客户端服务器之间的问题大,聚集功能也是如此。
当您有许多服务时,统一接口确实非常有用-但是graphQL可能会适得其反。
QueryQL定义的灵活查询在性能优化方面可能更具挑战性。
一次更新对象的层次结构(graphQL自然结构)可能会增加原子性,幂等性,错误报告等方面的复杂性。
回顾一下:
- GraphQL对于服务器到服务器的通信确实非常有用,但是很可能在很小的用例中就很合适。
- 您在服务之间是否有API网关的用例?也许这是您应该问自己的问题。GraphQL只是一个(流行的)工具。
- 像往常一样,最好将问题与工具匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句