【发布时间】:2021-05-20 08:03:32
【问题描述】:
在我的公司,我们即将建立一个新的微服务架构,但我们仍在尝试确定哪种协议最适合我们的用例。
在我们的例子中,我们有一些服务在内部被其他服务调用,但也通过 GraphQL API 网关向我们的客户公开。
选项 1:gRPC
gRPC 似乎因其性能和效率而成为微服务内部通信的热门选择。
但是,gRPC 使查询关系数据变得更加困难,并且需要做更多工作才能连接到我们的 API 网关。
选项 2:GraphQL
另一种选择是让每个微服务实现自己的 GraphQL 架构,以便使用 API 网关中的 Apollo Federation 轻松地将它们拼接在一起。
这种方法将使查询更加灵活,但由于缺少协议缓冲区,内部请求的性能会降低。
选项 3:两者都有?
也许另一种选择是通过在 gRPC 中实现突变和在 GraphQL 中实现查询来利用两全其美。或者只是创建两个 API,一个面向网关客户端,一个用于服务之间的通信。
问题
- 我们如何决定使用哪种方法?
- 是否有我们应该考虑的重要(不利)优势?例如。在易用性、可维护性、可扩展性、性能等方面?
- 此用例有更好的替代方案吗?
【问题讨论】:
-
你的问题没有错。有人不只是感觉对!
标签: architecture graphql microservices grpc rpc