V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coser
V2EX  ›  程序员

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

  •  2
     
  •   Coser · 2023-03-20 11:38:40 +08:00 · 3318 次点击
    这是一个创建于 395 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景描述

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

    需求

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

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

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

    不过是 Java 的
    GopherDaily
        6
    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
        7
    DotLiu  
       2023-03-20 14:45:39 +08:00
    你可以了解一下国产的开源网关 Apinto

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

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

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

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

    国内去年底阿里弄了 higress
    SilencerL
        13
    SilencerL  
       2023-03-21 01:57:16 +08:00
    apisix
    eric2Chen
        14
    eric2Chen  
       2023-03-21 17:01:40 +08:00
    我有在用这个网关,功能上满足我需求,源码看了也挺易懂的,实现自己的插件也不难。就是教程还有待加强。。不过开源的还要啥自行车。。他们有 q 群和微信,回复挺热心的
    eric2Chen
        15
    eric2Chen  
       2023-03-21 17:02:23 +08:00
    Coser
        16
    Coser  
    OP
       2023-03-21 19:49:53 +08:00
    @iyear 嗯啊,其实是想有没有现成的网关项目,有可视化界面,也可以支持 http 协议的转发,低代码操作,看了一下 grpc gateway ,新增一个服务就需要编译重启,有点麻烦
    Coser
        17
    Coser  
    OP
       2023-03-21 19:50:52 +08:00
    @guoooo00oohao
    感谢您的反馈,下面有童鞋推了 apinto ,看起来满足我的基本需求,我先使用看看
    Coser
        18
    Coser  
    OP
       2023-03-21 19:51:44 +08:00
    @richangfan
    低代码,想找个现成的满足多场景的,实在没法才考虑自己开发,避免重复造轮子
    Coser
        19
    Coser  
    OP
       2023-03-21 19:52:03 +08:00
    @niuroumian
    好的,我了解一下~感谢反馈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3216 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:54 · PVG 21:54 · LAX 06:54 · JFK 09:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.