V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
sophos
V2EX  ›  Go 编程语言

用 Go 实现 GraphQL 转 gRPC 网关,大家觉得这个思路如何

  •  
  •   sophos ·
    sysulq · 12 天前 · 917 次点击

    最近在想如何解决 grpc 微服务接口聚合的问题。

    我这边现在有大量 grpc 微服务,其中有不少都在做接口聚合的事情。

    调研了一番,准备用 Go 写个 GraphQL 转 gRPC 的网关。

    GraphQL 转 gRPC 的好处:

    • GraphQL 自带 schema ,对端友好,大家不用再为文档烦恼
    • 显式选择字段,配合 gRPC fieldmask 可实现前后端双重省流
    • 前端通过 query 参数,自己指定聚合 grpc 接口,很灵活
    • 基于 gRPC 生成 GraphQL schema ,又没那么灵活,没有 N+1 问题
    • 可在网关上实现限流、熔断、鉴权、链路、监控等功能

    大家怎么看?欢迎给建议,提前感谢。

    11 条回复    2024-07-17 10:45:31 +08:00
    codehz
        1
    codehz  
       12 天前
    lemon1997
        2
    lemon1997  
       12 天前
    GraphQL 国内有哪家企业在用啊,感觉很少
    yigecook
        3
    yigecook  
       12 天前
    搞太复杂了的话,对接第三方系统会窒息。
    sophos
        4
    sophos  
    OP
       12 天前
    @codehz 这个是通过代码生成的方案,实现动态的网关应该会更方便些
    sophos
        5
    sophos  
    OP
       12 天前
    @yigecook emm ,没太理解,对接什么三方系统呢?
    sophos
        6
    sophos  
    OP
       12 天前
    @lemon1997 确实很少,不过确实能解决问题
    povsister
        7
    povsister  
       11 天前
    我是真看不懂我撞上什么关键字了。。
    这都发不出来,只能看图了

    yigecook
        8
    yigecook  
       9 天前
    @sophos 那说明你没这方面需求,无所谓的。
    sophos
        9
    sophos  
    OP
       5 天前
    @povsister 嗯,加一层 BFF 可以解决问题,只是对于多个后端团队来说,也容易纠结一个问题,谁来写这个 BFF ?如果走 graphQL ,端上自己拼 query 就行了,哈哈哈
    povsister
        10
    povsister  
       5 天前 via iPhone
    @sophos 给你讲个冷知识,Netflix 的 bff 是前端团队自己写的
    sophos
        11
    sophos  
    OP
       5 天前 via iPhone
    @povsister 哈哈哈,这样就解释得通了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:32 · PVG 18:32 · LAX 03:32 · JFK 06:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.