Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
15862 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
结束语 (1讲)
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

24 | 为什么微服务架构少不了微服务网关?

你好,我是姚秋辰。
今天我们来了解一个新的平台类组件:Spring Cloud Gateway(以下简称 Gateway)。它在微服务架构中扮演的角色是“微服务网关”。
一听到“网关”这个词儿,你第一个想到的一定是 Nginx。没错,Nginx 作为网关领域的一哥,在大中小厂里的应用面那可不是一般的广泛。那究竟是 Nginx 过气了,还是 Spring Cloud Gateway 太牛了,以至于我们要引入一个新的网关组件呢?
其实都不是,Gateway 并没有抢 Nginx 的地盘,此网关非彼网关,Nginx 和 Gateway 在微服务体系中的分工是不一样的。Gateway 作为更底层的微服务网关,通常是作为外部 Nginx 网关和内部微服务系统之间的桥梁起了这么一个承上启下的作用。
也许你会想,企业级应用不就是在最外层架设一道网关层么?其实不然,在大型微服务应用中,我们往往会搭建多个网关组件,这些网关的应用场景也各有不同。

大型微服务应用中的多层网关

接下来,我们就通过一个例子,了解一个服务请求从浏览器发出,直到抵达后台服务的整个过程。你可以在图中看到,这个服务请求都经历了哪些网关层。然后,我会再带你分析,为何需要 Gateway 横在中间做这么一层网络转发。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Spring Cloud Gateway作为微服务架构中的重要组件,在网关服务中扮演着关键角色。与传统的Nginx网关不同,Gateway作为更底层的微服务网关,连接外部Nginx网关和内部微服务系统,具有高可扩展性和高度可定制化的优势。它能够轻松获取所有服务节点的变动,并提供丰富的内置谓词和过滤器,实现复杂的路由规则和请求处理。除了路由功能外,Gateway还可以挂载诸如限流等功能。在实际应用中,需要注意将Gateway作为内部服务治理使用,而对外交给高性能网关如Nginx来处理。总的来说,Gateway为系统提供了灵活、可扩展的网关服务,是微服务架构中不可或缺的重要组件。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • BOB
    针对路由的访问鉴权可以放在微服务网关吗?

    作者回复: 鉴权通常是专门的auth-serv去实现,不过触发调用的地方是可以放在网关层的。当然了,也可以自己编写一个infra组件封装这个调用,并放在微服务client端做统一拦截,两种方法都行

    2022-02-09
    8
  • peter
    请教老师两个问题: Q1:“可扩展”和“可伸缩”的区别?有的文章把“可扩展”和“可伸缩”当做两个不同的概念来讲解,但我总觉得这两个概念是一回事,请问它们的主要区别是什么? Q2:老师能联系极客的编辑建立一个学习群吗? 老师忙,可以不用进群,但读者可以相互学习。

    作者回复: Q1: 看个人习惯了,可伸缩一般用来形容集群弹性,快速扩容缩容,峰值流量的时候弹出算力。可扩展我一般形容微观的层面,比如框架的具体扩展点等等。 Q2:好像平台有个要求是讲师不能私拉学员进群,大家可以留言区继续愉快吹水

    2022-02-07
    2
    4
  • rrbbt
    老师,如果用了gateway微服务网关,是不是就不需要loadbalancer或者ribbon来做客户端的负载均衡了?因为服务端的请求都是落到gateway上,而不是直接调用了

    作者回复: 还是需要的哈,举个例子,当你自己的微服务访问其他微服务的时候,这时候服务请求就不经过gateway绕一层了,通常是直连对方服务,那这个时候还是需要客户端负载均衡组件发挥作用

    2023-06-27归属地:山东
  • 张虎
    请教一下老师,你的图画的很溜,是什么画图工具?

    作者回复: 我画得图是鬼画符,编辑妹子用他们的黑魔法重新画的额。 此处手动@编辑妹子分享下使用啥工具画得

    2022-04-11
  • 易燃易爆闻一多
    突然困惑的问题,想请教下老师。 nacos中同一个服务多个实例实现负载均衡。 原理是不是 通过ribbon来做权重计算后。将计算的结果和服务实例信息推送到client的nameservice中。然后feign发起请求时候也走的ribbon的loadbalance做到负载均衡的效果呢?

    作者回复: 我们的实战项目用loadbalancer替换了ribbon,虽然两者不是同一个组件,但都是client端的负载均衡器,feign的负载均衡正是借助这个client端组件做分发的。原理是,service通过服务发现获取到的目标服务list,在feign发起调用之前,利用负载均衡器从这个list中挑选一台目标服务器。我们在实现的时候没有加入权重计算,但实现权重其实很简单,比如nacos里可以通过metadata配置权重,然后本地自定义一个负载均衡策略,将权重纳入计算就好了。 不过loadbalancer组件讲真,没有ribbon功能强大。

    2022-03-10
  • Geek_e93c48
    问个问题,could实战项目姚老师啥时候结课?(迫不急的催更中)

    编辑回复: 3月中旬更新完毕~

    2022-02-07
  • 6点无痛早起学习的和尚
    网关分为:入口网关和出口网关。 入口网关: 1. 提供客户端统一的接入地址 2. 服务治理:熔断、限流、流量控制、分流 3. 客户端的认证和授权 4. 黑白名单 5. 做日志的记录 出口网关:依赖外部的第三方系统,比如做支付,就需要外部的渠道 对调用外部的 API 做统一的认证、授权、审计、访问控制、回调。
    2022-02-16
    16
  • 张申傲
    - Nginx:外部流量网关。 Gateway:内部微服务业务网关,更类似BFF的角色。 - 微服务网关的使用场景有很多,包括限流、鉴权、加解密、请求的路由转发等等。
    2022-06-29
    4
  • 铅华
    可以把微服务的接口权限鉴权挂载到gateway的功能上
    2022-10-09归属地:广东
    2
  • 扶幽
    仙哥,文章里面的图画的很漂亮,请教下是用什么工具画的呀?
    2024-03-08归属地:湖北
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部