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

微服务之间互相调用是通过网关还是直接 rpc?

  •  
  •   hzzhzzdogee · 2022-04-24 18:28:49 +08:00 · 1735 次点击
    这是一个创建于 969 天前的主题,其中的信息可能已经有所发展或是发生改变。
    二者各有什么优劣呢?
    5 条回复    2022-04-25 17:24:03 +08:00
    Goooooos
        1
    Goooooos  
       2022-04-24 18:33:05 +08:00 via Android
    内部服务间调用就直接吧,给外部用的可以接网关
    FabricPath
        2
    FabricPath  
       2022-04-24 18:35:14 +08:00
    随便列一下,

    网关的问题:
    1. 网关出 Bug 、被打爆 所有服务全无
    2. 网关在逻辑增加了一跳路径,降低稳定性
    3. 网关不是单纯的网关,如果是 DNS+VIP 的方式访问网关,那在网络层也需要 L4 接入,L4LB 是 ecmp 发布的路由,扩缩容时会损失部分连接(除非做了 session 同步,这个坑更多),所以在物理层面实际上增加了两跳
    4. 为了避免 3 中 L4LB 带来的缺陷,需要采用服务发现去发现网关实例,那为啥不直接发现下游实例呢?

    优势:
    1. 服务治理(含风控等所有通用功能)好做,功能迭代在网关上

    综上:
    1. 入口服务使用网关做接入,内部 RPC 调用上 ServiceMesh
    winglight2016
        3
    winglight2016  
       2022-04-24 19:50:34 +08:00
    @Goooooos 直接调用是怎么实现?服务调用地址怎么维护?手动去 nacos 查询?
    tedzhou1221
        4
    tedzhou1221  
       2022-04-25 08:37:34 +08:00 via iPhone
    @winglight2016 你说的这个是注册中心干的活
    winglight2016
        5
    winglight2016  
       2022-04-25 17:24:03 +08:00
    @tedzhou1221 gateway 可以帮你使用 lb://aliasname/这样格式,转发访问其他微服务,不然就只能自己去 nacos 更新访问地址,这事儿有点麻烦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2655 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:14 · PVG 23:14 · LAX 07:14 · JFK 10:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.