在不同的主机上代理GRPC请求

2022-01-27 01:43:11 标签 linuxgonginxgrpcgrpc-go

我们使用golang实现了GRPC API,现在需要一些机制在两个不同的主机(prod/stage)上路由请求。问题是路由规则必须依赖于grpc元数据而不是报头。实际上我们在元数据参数传递iOS版本。据我所知,比如Nginx就不能做到这一点。我们没有k8之类的东西,只是简单的API守护进程监听某个端口。

authConf := viper.GetStringMapString("auth")
creds, err := credentials.NewServerTLSFromFile(authConf["certfile"], authConf["keyfile"])
if err != nil {
    panic(err)
}
lis, err := net.Listen("tcp", ":"+viper.GetString("port"))
if err != nil {
    panic(err)
}

###你可以使用envoy,它是一个代理,就像NginX。

它支持gRPC(看看gRPC -web),它允许你定义多个路由并将流量重定向到不同的主机。我使用它重定向到基于URL(包含gRPC包/函数名)的不同服务,但它也应该可以对头或元数据做同样的事情。

不过,在StackOverflow上,提供一个实际的使者配置来完成这一操作已经超出了范围。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码