开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):网关基本概念】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11520
网关基本概念
目录:
一、 什么是网关
二、 gateway 网关
一、什么是网关
API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:
(1) 客户端会多次请求不同的微服务,增加了客户端的复杂性。
(2)存在跨域请求,在一定场景下处理相对复杂。
(3)认证复杂,每个服务都需要独立认证。
(4)难以重构,随着项目的迭代,可能需要重新划分微服务。
例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。
(5) 某些微服务可能使用 了防火墙 /浏览器不友好的协议, 直接访问会有一定的困难。
以上这些问题可以借助 API 网关解决。API 网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过API 网关这一层。
也就是说,API 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 API 网关来做,这样既提高业务灵活性又不缺安全性左边是客户端.
用图片表示如下:
左边是客户端,右边是服务端 tomcat,端口号为8001。
此时需要通过客户端访问服务端,按照以前的操作,客户端不是直接访问8001,需要先访问一个 nginx,nginx 访问的端口号为9001.过程就是,先通过客户端访问,再通过 nginx,根据请求地址把它转发到对应的服务中去,中间经过了 nginx,nginx 就是起到了一个网关作用,发送请求,先到网关,再通过网关转发到服务中去。
网关就是在客户端和服务端中间一面墙,可以起到作用有很多:比如请求转发,负载均衡,权限控制等等。
二、gateway网关
1.基本特点
Spring cloud gateway 是 spring 官方基于 Spring 5.0、Spring Boot2.0和 Project Reactor 等技术开发的网关,
Spring CloudCatemay 旨在为微服务架构提供简单、有效和统一的 API 路由管理方式,Spring Cloud Gateway 作为Spring Cloud 生态系统中的网关,目标是替代 Netflix Zul,其不仅提供统一的路由方式,并且还基于 Filer 链的方式提供了网关基本的功能,例如:安全监控/埋点、限流等。
2.流程
如图所示:
首先通过客户端访问,在访问过程中通过网关。
第一部分:Gateway HandlerMapping,在这个位置做匹配。
第二部分:Gateway WebHandler 这个步骤是处理匹配,在接下来的步骤中经过过滤器,做权限等操作会涉及到很多过滤器,即Fiter通过过滤器选择程序。
3.术语解释
(1)路由
路由是网关最基础的部分,路由信息有一个 ID、一个目的 URL、一组断言和一组 Filter 组成。如果断言路由为真,则说明请求的 URL 和配置匹配。
(2〉断言
Java8中的断言函数。Soring Cloud Cateway 中的断言函数输入类型是 Spring5.0框架中的 ServerWebExchange。SpringCloud Cateway 中的断言函数允许开发者去定义匹配来自于 http request 中的任何信息,比如请求头和参数等。
(3)过滤器
一个标准的 Spring webFilter。Spring cloud gateway 中的 filter 分为两种类型的 Filter,分别是 Gateway Filter 和Global Filter。过滤器 Filter 将会对请求和响应进行修改处理。