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

GRPC 流量路由

  •  
  •   zzgy · 7 天前 · 1350 次点击

    我这里有这么一个场景,A 服务调 B 服务调 GRPC 接口,现在想对 A 服务做重构,因此新写了一个 C 服务来替换 A,因此 A 调 B 的接口想通过 istio 全部拦截下来由 C 来处理,C 处理完之后再调 B 。

    C 服务相当于是个 GRPC 的代理网关。

    我有试过 http 根据 header 或者 url 用 virtualservice 做路由转发,但是 grpc 怎么实现呢?

    6 条回复    2021-10-13 08:02:29 +08:00
    cxytz01
        1
    cxytz01   7 天前
    方法一:grcp 本质也是 http,也有 header 和 url,你的方法名字就是你的 url,代理网关肯定支持 http2 的反向代理
    方法二:将 B 的接口通过 grpc gateway 暴露成 http1.1
    Yoock
        2
    Yoock   7 天前
    可能 Nginx 性能更好一点
    sunkai0609
        3
    sunkai0609   7 天前
    istio 对 qps 影响大吗
    LichMscy
        4
    LichMscy   7 天前
    其实不用增加 c 服务 可以给 A 服务注入一个 istio sidecar,因为 envoy 本身可以劫持流量进行各种处理再转发流量给 B 服务,需要 header 就用 virtualservice 来控制,需要熔断限流控制负载策略就加个 destinationrule

    我们目前常用架构是在应用层面,用一个应用网关( istio gateway )来控制应用下的多个服务的流量转发,包括一些对外的流量会用 egress,这种模式可以参考下。
    janxin
        5
    janxin   7 天前
    @zzgy 你的情况是 A->B 转成 A->C->B,你重构 A 服务为什么要加个 C 呢...
    @sunkai0609 istio 自己有个 benchmark 可以看一下,也可以自己跑一下
    kingfalse
        6
    kingfalse   6 天前 via Android
    grpc 用 Nginx 直接转
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1133 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 19:02 · PVG 03:02 · LAX 12:02 · JFK 15:02
    ♥ Do have faith in what you're doing.