V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fatyoung
V2EX  ›  问与答

关于微服务外网调用的一些疑问

  •  
  •   fatyoung · 283 天前 · 797 次点击
    这是一个创建于 283 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务 A 调用服务 B ,假设 AB 在同一个服务器内,那么没有问题,是走内网调用。
    假如 AB 不在同一个服务器内,那么服务 A 调用服务 B 是不是就要走外网,就要走防火墙?是不是还得在 A 或 B 服务器里做公网 IP 端口映射? 那是不是会有性能方面的问题?
    小弟这方面知识比较薄弱,请教下老哥们
    11 条回复    2023-07-31 12:04:30 +08:00
    chevalier
        1
    chevalier  
       283 天前
    微服务的基建之一,服务发现,了解一下

    内部调用不适合走外网,如果没有服务发现基建的话,给 AB 分配个内网的域名和内部 DNS ,内部的调用走内网域名
    fatyoung
        2
    fatyoung  
    OP
       283 天前
    @chevalier 我理解的服务发现就是把服务注册到某一个注册中心上去,consumer 从注册中心去找 provider 。找到的这个地址 DNS 解析之后肯定是内网地址吗?会不会因为 provider 在另一个服务器里面所以解析出来一个不在当前内网的 IP ?
    lsk569937453
        3
    lsk569937453  
       283 天前
    所以就有了 API 网关啊。所有进微服务的外部流量一律走网关。
    melkor
        4
    melkor  
       283 天前 via iPhone
    @fatyoung 找到多个 IP 很正常,一致性哈希或者随机选就行,要做负载均衡。本来微服务就不是性能最高的做法,强行选本机会导致流量不均匀,机器资源就不好分配了。
    crysislinux
        5
    crysislinux  
       283 天前 via Android
    一般都在一个 VPC 内部吧。跨 VPC 了就该怎么按外部请求办。
    fatyoung
        6
    fatyoung  
    OP
       283 天前
    @lsk569937453 服务间的调用一般是不走网关吧?
    4lieS
        7
    4lieS  
       283 天前
    你说的是对的
    fatyoung
        8
    fatyoung  
    OP
       283 天前
    @crysislinux 意思就是说微服务里的所有服务最好都在同一个服务器内是吗? 一般都是这样的吧?
    fatyoung
        9
    fatyoung  
    OP
       283 天前
    fatyoung
        10
    fatyoung  
    OP
       283 天前
    @melkor
    @4lieS
    谢谢回复
    crysislinux
        11
    crysislinux  
       283 天前 via Android   ❤️ 1
    @fatyoung 不是同一个服务器内,是在同一个虚拟网络内。地理位置在不同城市的服务器也可以在同一个内网,你想象一下 VPN 是怎么样的就大概明白了。比如在 aws 上你可以创建一个 VPC ,然后各种 balancer ,ec2 之类的都可以加入这个 VPC ,VPC 内的服务逻辑上就是在一个内网
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5544 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:43 · PVG 13:43 · LAX 22:43 · JFK 01:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.