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

GRPC 流量路由

  •  
  •   zzgy · 46 天前 · 1455 次点击
    这是一个创建于 46 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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