https://kaiwu.lagou.com/course/courseInfo.htm?courseId=690&sid=20-h5Url-0

https://github.com/gaohanghang/sca/tree/main/09

上一讲我们学习了 Dubbo 是如何与 Nacos 协同作业。通过对比 RESTful 与 RPC,我们介绍了两种通信方式的区别,再通过实例讲解如何将 Dubbo 与 Nacos 进行整合。但你是否发现无论是基于 OpenFeign 的 RESTful 通信,还是基于 Dubbo 的 RPC 通信,它们都在强调的是微服务间的信息传递,属于微服务架构内部的事情。而对于用户端从外侧访问微服务如何有效管理,微服务又是如何将接口暴露给用户呢?这就需要通过 API 网关实现需求了,本讲咱们就针对 API 网关学习三方面知识:

  1. 介绍 API 网关的用途与产品;
  2. 讲解 Spring Cloud Gateway 的配置技巧;
  3. 讲解 Gateway执行原理与自定义过滤器(Filter)。

API 网关的作用

如下图所示,对于整个微服务来说如果将每一个微服务的接口直接暴露给用户是错误的做法,这里主要体现出三个问题:

https://s0.lgstatic.com/i/image6/M00/23/99/Cgp9HWBXaFSANx-tAAE1dQdYjME754.png

用户端直接访问微服务

为了解决以上问题,API 网关应运而生,加入网关后应用架构变为下图所示。

https://s0.lgstatic.com/i/image6/M01/23/ED/CioPOWBX-fWAHNqWAAB1dyZpFjI441.png

引入 API 网关后的微服务架构

当引入 API 网关后,在用户端与微服务之间建立了一道屏障,通过 API 网关为微服务访问提供了统一的访问入口,所有用户端的请求被 API 网关拦截并在此基础上可以实现额外功能,例如: