用GO编写的gRPC服务集合与Javascript客户端之间进行通信的最佳解决方案是什么?

时间:2019-12-07 02:04:26

标签: reactjs go kubernetes microservices grpc

我的计划是让React应用程序与Kubernetes上部署的gRPC微服务集(使用Istio和Envoy)进行对话。但是经过几次尝试使用不同的库(例如grpc-gateway,grpc-web)后,...似乎这些库并不完全支持gRPC。每个库都缺少某些功能,这些功能是基于HTTP的传统XML / JSON中的“标准”。

我的问题的重点是:

  1. gRPC是否真的可以投入生产?
  2. 对于使用gRPC与Web客户端通信在Go中实现微服务,您有任何建议吗?

1 个答案:

答案 0 :(得分:0)

如果使用的是Istio,则应使用grpc-web,因为Istio会自动将您的http / 1请求代理到grpc服务可以理解的http / 2请求中。

gRPC已准备好投入生产,并被许多公司使用。

我的建议是将代码保留在monorepo中,使用Bazel作为构建系统,并使用Istio作为服务网格。

monorepo方法使您能够避免处理gRPC / protobufs时最痛苦的方面之一-跨语言/客户端/服务边界共享proto文件。 (有一些Bazel规则可从您的原型文件以各种语言创建库)。截至2019年11月,JavaScript规则均为Beta质量,但它们很快就会成熟。

由于您已经将Istio用作gRPC代理,因此可以利用其其他功能,从而可以将跟踪,身份验证,服务发现和其他问题从应用程序代码中移出,因此您可以专注于业务逻辑。