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

2022-04-24 18:28:49 +08:00
 hzzhzzdogee
二者各有什么优劣呢?
1565 次点击
所在节点    编程
5 条回复
Goooooos
2022-04-24 18:33:05 +08:00
内部服务间调用就直接吧,给外部用的可以接网关
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
2022-04-24 19:50:34 +08:00
@Goooooos 直接调用是怎么实现?服务调用地址怎么维护?手动去 nacos 查询?
tedzhou1221
2022-04-25 08:37:34 +08:00
@winglight2016 你说的这个是注册中心干的活
winglight2016
2022-04-25 17:24:03 +08:00
@tedzhou1221 gateway 可以帮你使用 lb://aliasname/这样格式,转发访问其他微服务,不然就只能自己去 nacos 更新访问地址,这事儿有点麻烦。

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

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

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

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

© 2021 V2EX