背景描述
公司内部的业务接口都是使用 gRPC 进行通信,最近接入了一些友商,他们需要调用我们的业务接口,但是他们的系统只支持 http 协议的调用,为了减少代码的侵入性,我们计划引入开源网关来充当中间层,通过网关去转发接口信息,并进行 http 与 gRPC 协议的互转。
需求
1 、支持 HTTP 转 gRPC 协议
2 、可以通过 openAPI 新增 / 删除接口、配置网关转发信息等操作,方便我们其他程序集成
3 、最好是 go 开发,我们可以自行更改代码
公司内部的业务接口都是使用 gRPC 进行通信,最近接入了一些友商,他们需要调用我们的业务接口,但是他们的系统只支持 http 协议的调用,为了减少代码的侵入性,我们计划引入开源网关来充当中间层,通过网关去转发接口信息,并进行 http 与 gRPC 协议的互转。
1 、支持 HTTP 转 gRPC 协议
2 、可以通过 openAPI 新增 / 删除接口、配置网关转发信息等操作,方便我们其他程序集成
3 、最好是 go 开发,我们可以自行更改代码
你可以考虑使用开源的grpc-gateway来实现这个需求。grpc-gateway是一个用于将RESTful API转换为gRPC的代理服务器,它可以自动生成gRPC服务的反向代理,从而使得gRPC服务可以通过HTTP/1.1协议进行访问。
使用grpc-gateway,你可以通过定义protobuf文件来定义你的gRPC服务和RESTful API,然后使用protoc编译器生成相应的代码。在生成的代码中,你可以找到一个反向代理服务器,它可以将HTTP请求转换为gRPC请求,并将gRPC响应转换为HTTP响应。
grpc-gateway支持多种语言,包括Go、Java、Python等。如果你想使用Go语言开发,可以参考grpc-gateway的官方文档:https://grpc-ecosystem.github.io/grpc-gateway/docs/。
另外,如果你想自己开发一个类似的网关,也可以参考grpc-gateway的源代码,它提供了很好的参考。
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
可以试试 Envoy