内部跨服务通信-订阅还是其他?

时间:2020-01-22 12:54:22

标签: graphql graphql-subscriptions

我有一个架构问题,很想听听您的经验。 在微服务环境中。当2个需要通过某种pub-sub机制彼此通信的graphql API微服务异步时。您会选择graphql订阅吗?或类似kafka / rabitmq / etc类型的系统。 我应该遵循什么架构规则?这种决定有什么标准吗? 感谢您的评论!

1 个答案:

答案 0 :(得分:0)

GraphQL不一定是服务间通信的选择,但这不是GraphQL设计和优化的。特别是对于pub-sub,Kafka和RabbitMQ都是受欢迎的选择。 GraphQL订阅理论上可以在诸如Kafka的队列上实现,但是与仅使用Kafka相比,这会增加一些复杂性。 GraphQL规范在应如何实现订阅方面并没有太多发言,并且开源支持不如查询和变异那么完整。

服务-服务pub-sub的订阅优点:

  • GraphQL为您提供了一个指定消息形状的工具(这可以 也可以通过诸如Avro或Protobufs之类的模式来完成。
  • GraphQL订阅允许订阅者自定义有效负载, 他们收到

缺点:

  • 与直接使用Kafka客户端相比,它增加了系统的复杂性
  • 您将需要更多的工程周期

要考虑的一些问题:

  • 与使用现成的代码相比,您想花多少时间来创建自己的解决方案?
  • 您将从GraphQL的哪些方面受益?