当前位置: 首页 > 知识库问答 >
问题:

在gcp中设置grpc web->特使代理->后端服务的最佳实践

公冶嘉茂
2023-03-14

我阅读了一些教程/示例,试图找出一种简单的方法来启动带有特使代理的grpc后端,为web路由流量。我成功地在本地运行此架构以进行e2e通信。

我找到了官方文件https://cloud.google.com/architecture/exposing-grpc-services-on-gke-using-envoy-proxy.但我认为我现在不需要负载平衡器。

我的目标:

  • 运行Grpc后端服务器以支持iOS/Android应用程序
  • 特使代理运行以支持web

是否有任何现有教程可以为grpc web路由部署后端服务器和特使代理?

共有1个答案

拓拔俊德
2023-03-14

1. gRPC框架使移动应用程序可以像调用本地对象一样直接调用后端服务上的方法。您可以使用gRPC使您的移动应用程序更具带宽效率,并减少您的应用程序与在Google Cloud Platform上运行的后端服务之间的延迟。

要使用特使代理设置grpc后端,我们应该使用网络负载平衡,网络负载平衡接受来自internet的传入请求(例如,来自移动客户端或公司以外的服务消费者)。网络负载平衡执行以下任务负载平衡器到池中工作节点的传入连接。流量被转发到特使Kubernetes服务,该服务在集群中的所有工作节点上公开。Kubernetes网络代理将这些连接转发给运行特使的POD。对群集中的工作节点执行HTTP运行状况检查。特使执行以下任务:终止SSL/TLS连接。通过查询内部群集DNS服务来发现运行gRPC服务的POD。将流量路由和负载平衡到gRPC服务吊舱。根据gRPC健康检查协议执行gRPC服务的健康检查。通过使用网络负载平衡公开用于健康检查的endpoint。

gRPC服务(echo gRPC和reverse gRPC)公开为Kubernetes无头服务。这意味着没有分配clusterIP地址,Kubernetes网络代理不会对POD的流量进行负载平衡。而是在群集DNS服务中创建包含pod IP地址的DNS a记录。特使从该DNS条目中发现pod IP地址,并根据特使中配置的策略在它们之间进行负载平衡。

部署特使:

创建一个Kubernetes配置图来存储特使配置文件(envegate.yaml)kubectl apply-f k8s/envegate ConfigMap。亚马尔

为特使创建Kubernetes部署:kubectl apply-f k8s/特使部署。亚马尔

验证两个特使pod正在运行:kubectl获取部署特使

如需进一步阅读,请点击以下链接:https://cloud.google.com/architecture/exposing-grpc-services-on-gke-using-envoy-proxy

有关为移动应用程序配置Grpc后端服务器的更多信息,请参阅以下链接:https://cloud.google.com/architecture/mobile-compute-engine-grpc

 类似资料:
  • 我使用Kong Bitnami GCP堆栈(版本2.2.0)作为API网关:https://console.cloud.google.com/marketplace/product/bitnami-launchpad/kong 它在HTTP端口8000和HTTPS端口8443(默认配置)下运行良好。但是,当我尝试将生产环境的HTTP/HTTPS侦听端口更改为80/443时,请遵循以下链接:http

  • 说明 当前文档是在H5 JS SDK的设置代理服务器基础之上进行的补充,请先查看H5 JS SDK中设置代理服务器的相关配置,根据H5 JS SDK配置完成之后,再继续根据当前文档进行配置。 Nginx代理服务器配置的补充 配置HTTPS 注意:应替换整个[xxx]形式,包括[]。 server { listen 443 ssl; server_name [域名];

  • 为解决浏览器中请求不同域名下的Linkface公有云接口,需要通过代理服务器进行代理转发。在代理服务器中我们可以加API_ID和API_SECRET包含在请求链接中,从而提高了客户账户的安全性。 由于在实际部署的时候,代理服务器和部署H5的服务器往往不会同域,所以用户可以在代理服务器上开启CORS。 也就是说,设置代理服务器主要是为了提高安全性以及解决前端js sdk跨域问题。 需要代理的接口列表

  • 本文向大家介绍使用nginx设置代理服务器,包括了使用nginx设置代理服务器的使用技巧和注意事项,需要的朋友参考一下 nginx可以利用其反向代理的功能来进行负载均衡的实现,同时也可以使用其正向代理的功能设置代理服务器,比如在内网的环境中,在可以连接外网的机器上运行nginx作为代理服务器,其他机器通过设定此台机器的IP和port即可通过其连接上网,本文使用nginx官方镜像,通过如下步骤即可简

  • 当您有服务器端代码(即一些)并且您的函数是异步的--因此它们返回--在等待函数时调用是否被认为是最佳做法? 我读到它的性能更好,因为它不需要将线程上下文切换回原来的线程上下文。但是,使用ASP.NET Web Api,如果请求是在一个线程上传入的,并且您等待某个函数并调用,当您返回函数的最终结果时,该函数可能会将您置于另一个线程上。 我在下面打了一个例子来说明我所说的:

  • 本文向大家介绍设计微服务的最佳实践是什么?相关面试题,主要包含被问及设计微服务的最佳实践是什么?时的应答技巧和注意事项,需要的朋友参考一下 以下是设计微服务的最佳实践: 为每个微服务分开数据存储 将代码保持在类似的成熟度等级上 为每个微服务进行单独的构建 部署到容器中 将服务器视为无状态的