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

2023-07-31 11:01:09 +08:00
 fatyoung
服务 A 调用服务 B ,假设 AB 在同一个服务器内,那么没有问题,是走内网调用。
假如 AB 不在同一个服务器内,那么服务 A 调用服务 B 是不是就要走外网,就要走防火墙?是不是还得在 A 或 B 服务器里做公网 IP 端口映射? 那是不是会有性能方面的问题?
小弟这方面知识比较薄弱,请教下老哥们
1013 次点击
所在节点    问与答
13 条回复
chevalier
2023-07-31 11:04:51 +08:00
微服务的基建之一,服务发现,了解一下

内部调用不适合走外网,如果没有服务发现基建的话,给 AB 分配个内网的域名和内部 DNS ,内部的调用走内网域名
fatyoung
2023-07-31 11:18:22 +08:00
@chevalier 我理解的服务发现就是把服务注册到某一个注册中心上去,consumer 从注册中心去找 provider 。找到的这个地址 DNS 解析之后肯定是内网地址吗?会不会因为 provider 在另一个服务器里面所以解析出来一个不在当前内网的 IP ?
lsk569937453
2023-07-31 11:18:25 +08:00
所以就有了 API 网关啊。所有进微服务的外部流量一律走网关。
melkor
2023-07-31 11:21:07 +08:00
@fatyoung 找到多个 IP 很正常,一致性哈希或者随机选就行,要做负载均衡。本来微服务就不是性能最高的做法,强行选本机会导致流量不均匀,机器资源就不好分配了。
crysislinux
2023-07-31 11:24:25 +08:00
一般都在一个 VPC 内部吧。跨 VPC 了就该怎么按外部请求办。
fatyoung
2023-07-31 11:30:04 +08:00
@lsk569937453 服务间的调用一般是不走网关吧?
4lieS
2023-07-31 11:40:01 +08:00
你说的是对的
fatyoung
2023-07-31 11:47:02 +08:00
@crysislinux 意思就是说微服务里的所有服务最好都在同一个服务器内是吗? 一般都是这样的吧?
fatyoung
2023-07-31 11:48:05 +08:00
fatyoung
2023-07-31 11:48:34 +08:00
@melkor
@4lieS
谢谢回复
crysislinux
2023-07-31 12:04:30 +08:00
@fatyoung 不是同一个服务器内,是在同一个虚拟网络内。地理位置在不同城市的服务器也可以在同一个内网,你想象一下 VPN 是怎么样的就大概明白了。比如在 aws 上你可以创建一个 VPC ,然后各种 balancer ,ec2 之类的都可以加入这个 VPC ,VPC 内的服务逻辑上就是在一个内网
dandankele
156 天前
@crysislinux 所以微服务架构可以跨地域吗?只要是属于可控的、拥有管理权的内部服务和应用,都通过基建让他们在同一个 VPC 内是吗?
crysislinux
156 天前
@dandankele 可以是可以,比如 https://docs.aws.amazon.com/vpc/latest/peering/peering-scenarios.html ,但是我们还没这么用过。一般的项目一个区域也够了吧,比如 AWS 一个区域有多个 zone ,VPC 是可以跨 zone 的,你可以看看 https://aws.amazon.com/vpc/faqs/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX