我的计划是让React应用程序与Kubernetes上部署的gRPC微服务集(使用Istio和Envoy)进行对话。但是经过几次尝试使用不同的库(例如grpc-gateway,grpc-web)后,...似乎这些库并不完全支持gRPC。每个库都缺少某些功能,这些功能是基于HTTP的传统XML / JSON中的“标准”。
我的问题的重点是:
答案 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代理,因此可以利用其其他功能,从而可以将跟踪,身份验证,服务发现和其他问题从应用程序代码中移出,因此您可以专注于业务逻辑。