找一个支持 http 与 gRPC 协议互转的开源网关,最好是 go 语言的

2023-03-20 11:38:40 +08:00
 Coser

背景描述

公司内部的业务接口都是使用 gRPC 进行通信,最近接入了一些友商,他们需要调用我们的业务接口,但是他们的系统只支持 http 协议的调用,为了减少代码的侵入性,我们计划引入开源网关来充当中间层,通过网关去转发接口信息,并进行 http 与 gRPC 协议的互转。

需求

1 、支持 HTTP 转 gRPC 协议 2 、可以通过 openAPI 新增 /删除接口、配置网关转发信息等操作,方便我们其他程序集成 3 、最好是 go 开发,我们可以自行更改代码

3810 次点击
所在节点    程序员
19 条回复
iyear
2023-03-20 11:43:01 +08:00
不熟悉具体那几个需求,grpc 和 http 互转的话用的是 grpc gateway
guoooo00oohao
2023-03-20 11:44:08 +08:00
1. 用 go 开发的 apigateway 且能让你改核心代码, 且经过大规模生产检验我看没有.
2. 对于你的需求, 可以尝试 apisix, 有插件支持 grpc 到 http 转化, 支持插件开发. 不过 golang 的 plugin 看上去还不成熟, lua 的可以.
richangfan
2023-03-20 11:48:41 +08:00
写个 http 服务,在路由层映射一下不就行了
echoless
2023-03-20 11:53:56 +08:00
@iyear #1 一楼正解 https://github.com/grpc-ecosystem/grpc-gateway

前雇主用过, 还行.没有出现过 gateway 层面的问题.
niuroumian
2023-03-20 12:28:02 +08:00
https://armeria.dev/

不过是 Java 的
GopherDaily
2023-03-20 13:15:04 +08:00
- grpc 本身就是基于 http/2 的,你路子野点直接让对面用 http 调用你也行,但是不建议
- 将 json 格式的 grpc 请求转到 protobuf 格式的 grpc 请求基本是都有的功能了,可以直接选你们的反向代理对应的
- 比如 nginx: http://nginx.org/en/docs/http/ngx_http_grpc_module.html
DotLiu
2023-03-20 14:45:39 +08:00
你可以了解一下国产的开源网关 Apinto

仓库地址: https://github.com/eolinker/apinto

目前已经支持了多协议透传,包括 HTTP 、gRPC 、Dubbo2 协议,并且支持协议间的转换

提供 Cli 命令及 openAPI 操作,方便系统集成

拓展性也强,通过自定义插件丰富网关功能和特性
kaf
2023-03-20 15:30:58 +08:00
csh995426531
2023-03-20 19:38:12 +08:00
一楼正解
jooks
2023-03-20 19:58:45 +08:00
Apache ShenYu (Java)
tairan2006
2023-03-20 20:29:05 +08:00
samzong
2023-03-20 23:38:13 +08:00
其实可以用下 Contour , projectcontour vmware 出品的还不错

国内去年底阿里弄了 higress
SilencerL
2023-03-21 01:57:16 +08:00
apisix
eric2Chen
2023-03-21 17:01:40 +08:00
我有在用这个网关,功能上满足我需求,源码看了也挺易懂的,实现自己的插件也不难。就是教程还有待加强。。不过开源的还要啥自行车。。他们有 q 群和微信,回复挺热心的
eric2Chen
2023-03-21 17:02:23 +08:00
Coser
2023-03-21 19:49:53 +08:00
@iyear 嗯啊,其实是想有没有现成的网关项目,有可视化界面,也可以支持 http 协议的转发,低代码操作,看了一下 grpc gateway ,新增一个服务就需要编译重启,有点麻烦
Coser
2023-03-21 19:50:52 +08:00
@guoooo00oohao
感谢您的反馈,下面有童鞋推了 apinto ,看起来满足我的基本需求,我先使用看看
Coser
2023-03-21 19:51:44 +08:00
@richangfan
低代码,想找个现成的满足多场景的,实在没法才考虑自己开发,避免重复造轮子
Coser
2023-03-21 19:52:03 +08:00
@niuroumian
好的,我了解一下~感谢反馈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/925484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX